单片机教程 8第八次课.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1-1电路及电路模型 作业: * * 第四章 汇编语言程序设计 ★ 汇编语言程序设计 ● 顺序结构程序设计 ● 分支结构程序设计 ● 循环结构程序设计 ● 查表程序设计 ● 子程序设计 如果在程序中需要根据不同条件,采取不同的处理方法,就应采用分支结构,而分支程序是通过转移指令实现的。 在MCS51单片机指令系统中, 有JZ(JNZ)、 CJNE、 JC(JNC)及JB(JNB)等丰富的控制转移指令, 它们是分支结构程序设计的基础, 可以完成各种各样的条件判断、分支。 分支结构程序有两种,单分支选择结构和多分支选择结构。 二、分支结构程序设计 编写分支结构程序重点在于正确使用转移指令。转移指令有3类:无条件转移、条件转移和散转。 1)无条件转移 它的程序转移方向是程序设计者事先安排的,与已执行程序的结果无关,使用时只需给出正确的转移目标地址和偏移量。 2)条件转移 它是根据已经执行程序对标志位或对累加器或对内部RAM某位的影响结果,决定程序的走向,形成各种分支。 3)散转 它是根据某种已输入的或者运算的结果,使程序分别转向各个处理程序中去。MCS-51中的JMP @A+DPTR可以方便地实现散转功能。 例:设变量x存放在VAR单元中,函数值y存放FUNC中,按下式给y赋值。 y= 1 x0 0 x=0 -1 x0 1、无条件/条件转移程序 解:设VAR单元为内部RAM的30H单元,FUNC单元为内部RAM的3lH单元。 JZ JNB 程序如下: VAR EQU 30H FUNC EQU 31H MOV A,VAR ;取x JZ COMP ;为零转COMP JNB ACC.7,POSI ;x0转POSI MOV A, # 0FFH ;x0,-1→A SJMP COMP POSI: MOV A,#01H COMP:MOV FUNC,A END 散转指令JMP @A+DPTR是把16位数据指针DPTR的内容与累加器A中的8位无符号数相加,形成散转的目的地址,装入程序计数器PC,其操作结果不影响累加器A和数据指针DPTR。 2、散转程序设计 (1)采用转移指令表 在不少应用场合中,需根据某一单元的内容是0,1,…,n,分别转向处理程序0,处理程序1,…,处理程序n。对于这种情况,可用无条件直接转移指令(AJMP或LJMP指令)组成一个转移表,然后把标志单元的内容读入累加器A,转移表首地址放入DPTR中,再利用指令JMP @A+DPTR实现散转。 例:根据R2中的内容,转入各个操作程序: R2=0, 转入OPR0 R2= l, 转入OPR1 R2=2, 转入OPR2 … … R2=n, 转入OPRn 程序如下: JUMP: MOV DPTR,# JPT ;跳转表首地址JPT送数据指针 MOV A,R2 ADD A,R2 ;R2×2→A JNC LN ;判断有否进位 INC DPH ;有进位则加到高字节地址 LN: JMP @A+DPTR ;转向已经形成的散转地址入口 JPT: AJMP OPR0 ;直接转移地址表 AJMP OPR1 … … AJMP OPRn 上面程序中每条“AJMP”指令占用2个字节,各转移指令“AJMP”地址相差两个字节,所以累加器A中变址值必须作乘2修正。若转移表是由三字节长转移指令“LJMP”组成,则累加器A中变址值必须乘3。当修正值有进位时,则应将进位先加在数据指针高位字节DPH上。 转移表中使用“AJMP”指令,这就限制了转移的入口地址OPR0、 OPR1 、…、 OPRn必须和散转表首地址JPT位于同一个2 KB范围内。另外规定散转点不能超过256个,因为工作寄存器R2为8位寄存器。为了克服上述局限性,除了可以使用“LJMP”指令组成跳转表外,还可采用双字节的寄存器存放散转值,并利用对DPTR进行加法运算的方法,直接修改DPTR,然后再用散转指令实现散转。 (2)采

文档评论(0)

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

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

1亿VIP精品文档

相关文档