东南大学单片机课件程序例题.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例:设有两个4位BCD码,分别存放在23H、22H单元和33H、 32H单元中,求它们的和,并送入43H、42H单元中. (以上均为低位在低字节,高位在高字节) ;例2:求一个16位二进制数的补码。 ;例 求单字节有符号数的二进制补码 参考程序: CMPT: JNB Acc.7,RETURN;(A)0,不需转换 MOV C,Acc.7 ;符号位保存 CPL A ;(A)求反,加1 ADD A,#1 MOV Acc.7,C ;符号位存A的最高位 RETURN: RET ;需根据某一单元的内容是0,1,……,n,来分别转向处理程序0,处理程序1,……处理程序n。一个典型的例子就是当单片机系统中的键盘按下时,就会得到一个键值,根据不同的键值,跳向不同的键处理程序入口。对于这种情况,可用直接转移指令(LJMP或AJMP指令)组成一个转移表,然后把该单元的内容读入累加器A,转移表首地址放入DPTR中,再利用间接转移指令实现分支转移。 ;例:按照R7的内容转向5个操作程序。 JUMP3: MOV A,R7 MOV DPTR,#TAB3 MOVC A,@A+DPTR JMP @A+DPTR TAB3: DB OPR0-TAB3 DB OPR1-TAB3 DB OPR2-TAB3 DB OPR3-TAB3 DB OPR4-TAB3 OPR0: 操作程序0 OPR1: 操作程序1 OPR4: 操作程序4; 例 50ms延时程序。 延时程序与MCS-51指令执行时间有很大的关系。在使用12MHz晶振时,一个机器周期为1μs,执行一条DJNZ指令的时间为2μs。这时,可用双重循环方法写出下面如下的延时50ms的程序: DEL: MOV R7,#200 DEL1: MOV R6,#125 DEL2: DJNZ R6,DEL2 ;125*2=250μs DJNZ R7,DEL1 ;0.25ms*200=50ms RET 以上延时程序不太精确,它没有考虑到除“DJNZ R6,DEL2 ”指令外的其它指令的执行时间,如把其;它指令的执行时间计算在内,它的延时时间为: (250+1+2)*200+1=50.301ms 如果要求比较精确的延时,可按如下修改: DEL: MOV R7,#200 DEL1: MOV R6,#122 NOP DEL2: DJNZ R6,DEL2 ;2*123+2=246μs DJNZ R7,DEL1 ;(246+1+1+2)*200+1=50.001ms RET 实际延迟时间为50.001ms,注意。软件延时程序,不允许有中断,否则将严重影响定时的准确性。;例 片内RAM中存放一批数据, 查找出最大值并存放于R3中。 设R0中存首地址,R2中存放字节 数,程序框图如图4-1所示。 ; MOV A,@ R0 MOV R3, A ;假设第一次取的数为最大值 INC R0 ;地址指针加1 DEC R2 ;字节数减1 LOOP: MOV A,@ R0 CJNE A,R3,LOOP1;取出的数与存放的最大 ;数比较 LOOP1: JC LOOP2 ;C=1,取出的数小跳转 MOV R3,A ;C=0,取出的数大,替换R3 LOOP2: DJNZ R0, LOOP ;是否比较结束 RET ;例:用P1口作为数据读入口,为了读取稳定的值,要求连续读8次后取平均。 设R0,R1作为连续8次累加的16位工作寄存器,最后取平均值,即除以8,相当于除以23。在此采用将R0,R1各右移一次的操作重复三次。最后结果在R1中。;例:编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转移到下一个闪烁10次,循环不止。 ;; ORG 2000H MOV A,R0 ANL A,#0FH ;保留低4位 ADD A,#02 ;变址调整 MOVC A,@A+PC ;查表获取ASCII码值 MOV R0,A 2个字节 TAB: DB 30H,31H,32H DB 33H,34H,35H DB 36H,37H,38H DB 39H,41H,42H DB 43H,4

文档评论(0)

jyr0221 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档