- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机原理及其应用课件第四(修订)
* 习题 * 本 章 结 束, 谢 谢 光 临! 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * * * * 4. 数据排序程序 数据排序是将无序的n个数据按由小到大(升序) 或由大到小(降序)排列。 常用的排序算法是冒泡法:相邻两个数比较,若与 所要求的顺序不同,就交换两个数。 从前向后进行一轮排序,则最大数就到了最后。重 复这样的过程(n-1)次,数据就有序排列了。 看一下7个数据 6,4,1,2,5,7,3的排序 * * 理论上对n个数用冒泡法排序,应进行(n-1)次冒泡才能完成。实际上有时不到(n-1)次排序就已完成。 看排序是否完成可通过观察是否还有数据交换来判定。若无数据交换则排序完成。通常在程序中用数据交换志来反映排序的完成。 * 【例4-18】(4-10) 对一批无符号 数进行升序排序,R0作首地址 指针,R2放字节数。(p79) * SORT: MOV A, R0 ; 获得数据块首地址 MOV R1, A ; 实际用R1作数据指针 MOV A, R2 ; 取字节数 MOV R5, A ; 实际用R5作计数器 CLR F0 ; 清交换标志 DEC R5 ; 字节数减一 MOV A, @R1 ; 取第一个数 LOOP: MOV R3, A ; 暂存 INC R1 ; 指向下一个数 CLR C ; 为比较两数,清C MOV A, @R1 ; 取下一个数 SUBB A, R3 ; 两数比较 * JNC LOOP1 ; 后一个数大,不交换 SETB F0 ; 置位交换标志(交换发生) MOV A, R3 ; 恢复暂存的数 XCH A, @R1 ; 前一个数送至后一个数中 DEC R1 XCH A, @R1 ;后一个数送至前一个数中 INC R1 ; 调回指针 LOOP1: MOV A, @R1 ; 再取一个新数 DJNZ R5, LOOP ; 一轮排序未完,继续 JB F0, SORT ; 有标志置位,做新一轮排序 RET ;否则,结束 END * 计算机内部运算采用二进制数运算,在输入输出中 用十进制数(BCD码)方便。在处理字符时,用 ASCII码表示。因此,在应用程序设计中,涉及到许 多的码制转换问题。 1. 二进制到BCD码转换 【例4-19】(4-18) 单字节二进制数转换为BCD码 入口:单字节数在A中;出口:百位在R3中,十位和个位在 A中。 算法:将二进制数分别除以100,10取商得百位,十位,余数 是个位。 4.2.8 码制转换程序 * BINBCD1: MOV B, #100 ; 除数100 DIV AB ; 除以100,得百位数 MOV R3, A ; 存百位数,余数在B中 XCH A, B ; 余数转到A中 MOV B, #10 ; 除数10 DIV AB ; 除以10,得十位(A)、个位(B) SWAP A ; 十位数交换到A的高四位 ADD A, B ;加上个位 RET END * 2. BCD码到二进制数的转换 【例4-21】(4-20) 4位BCD码到二进制数的转换 (p.96) 入口:BCD码a3 a2 a1 a0 分别放在50H~53H单元中。 出口:转换后的数放在R3R4中 算法: BCD码按权展开,直接计算。 关键是计算 即 (R3R4)*10+((R0)) * 高 * IDTB: MOV R0, #50H ; 指向BCD数千位 MOV R2, #3 ; 计数器初值,重复三遍 M
文档评论(0)