单片机原理与接口技术简介.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理与接口技术简介

实现程序如下: MOV R7, #10H ;置转送次数 MOV R0, #inbuf ;送字符串首地址 MOV DPTR, #outbuf ;送传送单元起始地址 LOOP: CJNE @R0, #ODH, NEXT ;不是回车符则转移 SJMP ED NEXT: MOV A, @R0 ;取字符 MOVX @DPTR, A ;送字符 INC R0 ;地址加1 INC DPTR ; DJNZ R7, LOOP ;未送完返回 ED: SJMP ﹩ * 例2:在外部RAM首地址为table的数据表中,有10个字节的数据,编程将每个字节的最高位无条件的置1。 实现程序如下: MOV DPTR,#table ;送数据表首地址 MOV R7,#OAH ;置处理次数 LOOP: MOVX A,@DPTR ;取数据 ORL A, ;最高位置1 MOVX @DPTR,A ;送回 INC DPTR ;地址加1 DJNZ R7,LOOP ;未处理完返回 SJMP ﹩ * 例3:把片内RAM中地址为30H到39H单元中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中。 数据排序常用冒泡排序法。此题可从30H开始从前向后进行相邻两数的比较,若两数的大小次序与要求的顺序不符,则将两数的顺序互换,并置位标志位,否则就不互换,也不置位标志位。从头到尾进行1次相邻数比较并按要求调整两数的顺序后(进行1次冒泡),就会把最大的数换到最后,再进行1次这样的比较和调整,就会把次大的数排在倒数第2的位置。在多次比较和调整后中,若出现相邻两数从头到尾不再有互换的情况(互换标志始终为0),就说明从30H~29H单元中的数已经从小到大排列完毕。 * 实现程序如下: START:CLR 00H ;互换标志清0 MOV R7,#09H ;置循环控制初值 MOV R0,#30H ;地址指针置数据首地址 MOV A,@R0 ;取前一个数 LOOP: INC R0 ;地址指针加1,指向后一个数的存储单元 MOV R2,A ;暂存前一个数 SUBB A,@R0 ;前数减后数(比较相邻两数) MOV A,R2 ;前数送A JC NEXT ;若前数小于后数,转移 * SETB 00H ;若前数大于后数,互换标志位置1 XCH A,@R0 ;前数(大数)送后数的存储单元 DEC R0 ;地址指针减1,指向前一个数的存储单元 XCH A,@R0 ;后数(小数)送前数的存储单元,完成了相邻两数的互换 INC R0 ;地址指针加1,指回原后数的存储单元 NEXT: MOV A,@R0 ;取出大数 DJNZ R7,LOOP ;循环次数未到转移到LOOP,否则往下执行 JB 00H,START ;若有互换(标志位为1)则转 ; START,否则往下执行 SJMP ﹩ ;结束 * 4.子程序 子程序是单片机应用程序必不可少的部分。在实际应用中,有些通用性的问题在一个程序中可能要使用多次,而编写出来的程序段是完全相同的。为了避免重复,使程序结构紧凑,阅读和调试更加方便,往往将其从主程序中独立出来,设计成称为子程序的形式,供程序运行时随时调用。 子程序的结构与主程序基本相同,其区别在于它的执行是由其它程序来调用的,执行完后仍要返回到调用它的主程序去。 * 在调用子程序时,有以下几点应予以注意: 对于在调用前主程序已经使用了的某些存储单元和寄存器,若在调用时需要将它们作其它用途,那么应先把这些单元或寄存器中的内容

文档评论(0)

宝贝计划 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档