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

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

ID:53189258

大小:721.00 KB

页数:24页

时间:2020-04-17

单片机教程 8第八次课.ppt_第1页
单片机教程 8第八次课.ppt_第2页
单片机教程 8第八次课.ppt_第3页
单片机教程 8第八次课.ppt_第4页
单片机教程 8第八次课.ppt_第5页
资源描述:

《单片机教程 8第八次课.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、第四章汇编语言程序设计★汇编语言程序设计●顺序结构程序设计●分支结构程序设计●循环结构程序设计●查表程序设计●子程序设计如果在程序中需要根据不同条件,采取不同的处理方法,就应采用分支结构,而分支程序是通过转移指令实现的。在MCS51单片机指令系统中,有JZ(JNZ)、CJNE、JC(JNC)及JB(JNB)等丰富的控制转移指令,它们是分支结构程序设计的基础,可以完成各种各样的条件判断、分支。分支结构程序有两种,单分支选择结构和多分支选择结构。二、分支结构程序设计编写分支结构程序重点在于正确使用转移指令。

2、转移指令有3类:无条件转移、条件转移和散转。1)无条件转移它的程序转移方向是程序设计者事先安排的,与已执行程序的结果无关,使用时只需给出正确的转移目标地址和偏移量。2)条件转移它是根据已经执行程序对标志位或对累加器或对内部RAM某位的影响结果,决定程序的走向,形成各种分支。3)散转它是根据某种已输入的或者运算的结果,使程序分别转向各个处理程序中去。MCS-51中的JMP@A+DPTR可以方便地实现散转功能。例:设变量x存放在VAR单元中,函数值y存放FUNC中,按下式给y赋值。y=1x>00x=0-1x

3、<01、无条件/条件转移程序解:设VAR单元为内部RAM的30H单元,FUNC单元为内部RAM的3lH单元。JZJNB程序如下:VAREQU30HFUNCEQU31HMOVA,VAR;取xJZCOMP;为零转COMPJNBACC.7,POSI;x>0转POSIMOVA,#0FFH;x<0,-1→ASJMPCOMPPOSI:MOVA,#01HCOMP:MOVFUNC,AEND散转指令JMP@A+DPTR是把16位数据指针DPTR的内容与累加器A中的8位无符号数相加,形成散转的目的地址,装入程序计数器PC,

4、其操作结果不影响累加器A和数据指针DPTR。2、散转程序设计(1)采用转移指令表在不少应用场合中,需根据某一单元的内容是0,1,…,n,分别转向处理程序0,处理程序1,…,处理程序n。对于这种情况,可用无条件直接转移指令(AJMP或LJMP指令)组成一个转移表,然后把标志单元的内容读入累加器A,转移表首地址放入DPTR中,再利用指令JMP@A+DPTR实现散转。例:根据R2中的内容,转入各个操作程序:R2=0,转入OPR0R2=l,转入OPR1R2=2,转入OPR2……R2=n,转入OPRn程序如下:J

5、UMP:MOVDPTR,#JPT;跳转表首地址JPT送数据指针MOVA,R2ADDA,R2;R2×2→AJNCLN;判断有否进位INCDPH;有进位则加到高字节地址LN:JMP@A+DPTR;转向已经形成的散转地址入口JPT:AJMPOPR0;直接转移地址表AJMPOPR1……AJMPOPRn上面程序中每条“AJMP”指令占用2个字节,各转移指令“AJMP”地址相差两个字节,所以累加器A中变址值必须作乘2修正。若转移表是由三字节长转移指令“LJMP”组成,则累加器A中变址值必须乘3。当修正值有进位时,则

6、应将进位先加在数据指针高位字节DPH上。转移表中使用“AJMP”指令,这就限制了转移的入口地址OPR0、OPR1、…、OPRn必须和散转表首地址JPT位于同一个2KB范围内。另外规定散转点不能超过256个,因为工作寄存器R2为8位寄存器。为了克服上述局限性,除了可以使用“LJMP”指令组成跳转表外,还可采用双字节的寄存器存放散转值,并利用对DPTR进行加法运算的方法,直接修改DPTR,然后再用散转指令实现散转。(2)采用地址偏移量表例:根据R6中的内容转向4个操作程序。OPR0:[操作程序0]OPRl:

7、[操作程序1]OPR2:[操作程序2]OPR3:[操作程序3]R6=0,1,2,3,分别为操作程序0,1,2,3。地址偏移量表每项对应一个操作程序的入口,占一个字节,分别表示对应入口地址与表首的偏移量。TAB:DBOPRT0DBOPRT1DBOPRT2DBOPRT3在散转程序中,如果散转点较少,所有操作程序处在同一页,即256B时,可以使用地址偏移量转移表。地址偏移量(3)采用转向地址表前面介绍的地址偏移量转向限制在一页范围内,故使用受到一定限制。在转向范围较大时,可以直接使用转向地址表,它的各项表目为

8、各个转向程序的入口。散转时使用查表指令,按某个单元的内容查表找到对应的转向地址,把它装入DRTR中,然后对累加器A清“0”,再用JMP@A+DPTR直接转向各个处理程序。可以实现64KB范围内的转移,但散转数n应小于256。例:根据R6中的内容转向OPR0、OPRl、OPR2、…、OPRn操作程序中去。TAB:DWOPR0DWOPR1DWOPR2DWOPRn各操作程序的入口地址(4)利用“RET”指令实现散转程序前面介绍的几种方法,均是采用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。