- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.十进制调整指令(1条) DA A 对于十进制数(BCD码)的加法运算,指令系统中没有专门的指令,因此只能借助于二进制加法指令。然而二进制加法运算原则不能完全适用于十进制数的加法运算,有时会产生错误结果。 出错的原因在于BCD码是四位二进制编码,共有十六个编码,但BCD码只用了其中的十个,剩下六个没用,称为六个无效码。在BCD码的加法运算中,凡结果进入或跳过无效编码区时,其结果就是错误的。调整的方法是把结果加6,以便把因六个无效码所造成的“损失”补回来。即所谓的加6调整。具体操作由逻辑电路实现。 3.3.4 控制程序转移类指令 为了实现子程序调用,应完成两项操作: (1)断点保护 (2)构造目的地址 3.4.1 MCS-51伪指令简介 3.EQU ——赋值伪指令 指令格式: 标号名称 EQU 汇编符号或数 EQU是将一个数或汇编符号赋予规定的标号名称,汇编程序会自动将EQU右边的数或汇编符号(地址或常数)赋给左边的标号名称。所以应先定义后使用。 例如:TTR EQU 85H MOV A, #TTR 练习:外部RAM3000H 开始有 50个数传送到内部RAM 30H开始的区域 FMAX: MOV A,@R0;取第一个数 LOOP0: INC R0 MOV B,@R0 ;取下一个数 CJNE A,B,$+3 ;比较 JNC LOOP1 MOV A,B ;把大的数送A LOOP1:DJNZ R2,LOOP0 RET ;出口参数在A中 STA: MOV R2,#2 CLR P1.4 STA1: JB P1.0,STA1;判断是否有键按下 LCALL DL10ms JB P1.0,STA1; 再次判断是否有键按下 JNB P1.0, $ ;判断按键是否释放 LOOP: SETB P1.4 ;产生二个短脉冲 LCALL DL300ms CLR P1.4 LCALL DL300ms DJNZ R2, LOOP LJMP STA DL10ms: ┋ ; 消抖延时10ms的子程序 RET DL300ms: ┋ ; 延时300ms的子程序 RET END 练习:编程通过P1.0线连续输出16个宽度为5个机器周期长的方波。 * * 3.4 程序设计方法 循环结束? 开始 初始化部分 处理部分 修改变量 结束部分 结束 Y N 循环/结束控制常有两种结构:一种为计数器控制循环结构;一种为条件控制循环结构。循环程序的一般结构如图 * * 3.4 程序设计方法 (1)单循环程序 例3-15:在内RAM 40H开始存放了一串单字节数,串长度为8,编程求其中最大值并送R7中。 MOV R0,#40H;数据块首址送地址指针R0 MOV R2,#7 ;循环次数送R2 MOV A,@R0 ;取第一个数,当作极大值 LOOP:INC R0;修改地址指针 MOV B,@R0;暂存B中 CJNE A,B,$+3;比较后产生标志 (CY),$+3为下条指令的地址 JNC NEXT ;CY=0? MOV A,@R0;更大数送A NEXT:NOP DJNZ R2,LOOP;循环次数结束? MOV R7,A ;存最大值 SJMP $ 思路:对数据块中的数逐一两两相比较,较大值暂存于A中,直到整串比完,A中的值
文档评论(0)