单片机学习指导及习题解答——双解汇编和C51 第2版 教学课件 作者 张志良 第4章.pptVIP

单片机学习指导及习题解答——双解汇编和C51 第2版 教学课件 作者 张志良 第4章.ppt

  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章 汇编语言程序设计 4.1.1 汇编 将汇编语言源程序转换为机器代码的过程称为汇编。 将由二进制码组成的机器代码程序转换为汇编语言源程序的过程称为反汇编。 功能:将一个数据或特定的汇编符号赋予规定 的字符名称。 格式:(字符名称) BIT (位地址) ⑷ 汇编和调试 顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。 顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。 在许多情况下,需要根据不同的条件转向不同的处理程序,这种结构的程序称为分支程序。 80C51指令系统中设置了条件转移指令、比较转移指令和位转移指令,可以实现分支程序。 ① S0单独按下, 红灯亮,其余灯灭; ② S1单独按下, 绿灯亮,其余灯灭; ③ S0、S1均按下, 红绿黄灯全亮; ④ S0、S1均未按下, 黄灯亮,其余灯灭。 Keil C51软件调试(见例9-1 ) ⑴ 程序编译链接及纠错。直至显示:0 Error(s),0 Warning(s) ⑵ 进入调试状态 ,全速运行。 ⑶ 打开P1口对话框,设置 P1.7 P1.6(s0、s1)状态 。 ⑷ 观测 P1.2~P1.0状态 (0亮1灭 ),是否符合题目要求。 画出Proteus 虚拟仿真电路图 装入在Keil 调试时生成的 Hex文件 全速运行 后,即时操作带锁按钮S0、S1 信号灯会按题目要求随之变化 课堂练习题: 电路及灯亮灭要求同上例,其中第2、3两条指令 JB P1.7和JB P1.6按下列要求修改,试重新编程,并进行Keil 软件调试、Proteus 虚拟仿真,看能否达到题目要求。 ⑴ JB P1.7,… JNB P1.6,… ⑵ JNB P1.7,… JB P1.6,… ⑶ JNB P1.7,… JNB P1.6,… 循环程序一般包括以下几个部分: ⑴ 循环初值; ⑵ 循环体; ⑶ 循环修改; ⑷ 循环控制; 其结构可以有两种组织形式, 如图4-6所示。 【例4-7】设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元中,数据长度(个数)N存在R2中,试编程求和S=X1+X2+‥‥+XN,并将S(双字节)存放在R3R4中(设S<65536)。 解:程序如下: SXN: MOV R2,#N ;置数据长度(循环次数) MOV R3,#00H ;和单元(高8位)清0 MOV R4,#00H ;和单元(低8位)清0 MOV R0,#50H ;求和数据区首址 LOOP: MOV A,R4 ;读前次低8位和 ADD A,@R0 ;低8位累加 MOV R4,A ;存低8位和 CLR A ; ADDC A,R3 ;高8位加进位 MOV R3,A ;存高8位和 INC R0 ;指向下一数据 DJNZ R2,LOOP ;判N个数据累加完否? RET ;退出循环 DY1ms:MOV R7,#250 ;置循环次数 DLOP: DJNZ R7,DLOP ;2机周×250=500机周 RET ; Keil C51软件调试 编译(扩展名用.asm)链接并进入调试状态后,全速运行。观察寄存器窗口Sys中:states值为501(机周),sec值为0.001002(s) DY10ms:MOV R6,#20 ; 置外循环次数 DLP1: MOV R7,#250 ; 置内循环次数 DLP2: DJNZ R7,DLP2 ; 2机周×250 =500机周 DJNZ R6,DLP1 ; 500机周×20= 10000机周 RET ; DY1S:MOV R5,#5 ; 置外循环次数 DYS0:MOV R6,#200 ; 置中循环次数 DYS1:MOV R7,#250 ; 置内循环次数 DYS2:DJNZ R7,DYS2 ; 2机周×250 = 500机周 DJNZ R6,DYS1 ; 500机周×200=100000机周 DJNZ R5,DYS0 ; 100000机周×5=5000

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档