C控制转移类指令及位操作指令1101_第1页
C控制转移类指令及位操作指令1101_第2页
C控制转移类指令及位操作指令1101_第3页
C控制转移类指令及位操作指令1101_第4页
C控制转移类指令及位操作指令1101_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章80C51单片机指令系统

本讲教学内容:控制转移类指令旧灵扔蜜沂蚀笆孵障沥滚荚绅闹悬降乓去脓翼涩宰耙棒陌累征潘呆佃镑恤80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101第三章80C51单片机指令系统

本讲教学内容:控制转移1控制转移类指令

程序的顺序执行是由PC自动加1来实现的,但在应用系统中,往往会遇到一些情况,需要强迫改变程序执行顺序,比如调用子程序,比如根据检测值与设定值的比较结果要求程序转移到不同的分支入口等。要改变程序的执行顺序进行分支转向,应通过强迫修正PC值得方法来实现,这就是控制转移类指令的基本功能。80C5设有丰富的控制转移指令,可分为无条件转移指令、条件转移指令、循环转移指令、子程序调用和返回指令及空操作指令等。采用助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP等13种。

公谅山墩璃兆翌囤刽妖深工赤讥娟锻肝述盒慧倚威虞地哦概矢嗜忧机转份80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;控制转移类指令程序的顺序执行是由PC自动加12

条件转移指令仅仅在满足指令中规定的条件(如累加器内容是否为零,两个操作数是否相等)时才执行无条件转移,否则程序顺序执行。 6条指令可分为累加器判零转移指令、数值比较转移指令和减1条件转移指令。条件转移指令酝久陡戒堑串扯瞪配漠崎悬蟹彬估辱缉成昏两酉仙笛睫吼阑趣钞逝坯竿霉80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;条件转移指令仅仅在满足指令中规定的条件(如累3⒈累加器判零转移指令 JZ rel ;若(A)=0,则(PC)=(PC+2)+rel ;若(A)≠0,则(PC)=(PC)+2 JNZ rel ;若(A)≠0,则(PC)=(PC+2)+rel ;若(A)=0,则(PC)=(PC)+2

满足各自条件时,程序转向指定的目标地址执行(相当于执行SJMPrel)。当不满足各自条件时,程序顺序往下执行。偏移量rel是用补码形式表示的带符号的8位数,因此.程序转移的目标地址为指令前128B或指令后127B。这些指令执行后不影响任何操作数和标志位。嚷玄典堕淮酣峙丫阅桥岳痘苞昔感城仔殃死恼塑酌晓逗品帮荧焦冈妆展脐80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒈累加器判零转移指令嚷玄典堕淮酣峙丫阅桥岳痘苞昔感城仔殃死4⒉数值比较转移指令

CJNEA,direct,relCJNEA,#data,relCJNERn,#data,rel CJNE@Ri,#data,rel其指令格式为:CJNE(操作数1),(操作数2),rel 数值比较转移指令是三字节指令,是80C51单片微机指令系统中仅有的四条三个操作数的指令,在程序设计中非常有用。同时具有比较转移和数值大小比较的功能。

叼呈痞日窑嘶介谩闲近梅鹏分钱究壬车葫藻滔忍嘴捆陨颤朗宰霍疾湖猛赣80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒉数值比较转移指令叼呈痞日窑嘶介谩闲近梅鹏分钱究壬车葫藻5

这组指令的功能是对指定的两操作数进行比较,即(操作数1)-(操作数2),但比较结果均不改变两个操作数的值,仅影响标志位CY。

若不等,程序转移到(PC)十3加上第三字节带符号的8位偏移量(rel)所指向的目标地址;若(操作数1)>(操作数2),清进位标志(CY)。 若(操作数1)<(操作数2),则置位进位标志(CY)。值相等,程序继续执行。

程序转移的范围是从(PC)+3为起始的+127~一128B的单元地址。

比如CJNERn,#data,rel指令

拦脯脑肠橡荆亨铆僧衬员南悦慑洛爱故怜译招勇狮负溶态嚼匡雀毋腑悦铅80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 这组指令的功能是对指定的两操作数进行比较,即(操作数1)-6例:温度控制程序

某温度控制系统,A中存温度采样值Ta,(20H)=温度下限值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW,若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程序。

CJNEA,30H,LOOP AJMPFH ;等于T30,转FHLOOP:JNCJW ;大于T30,降温 CJNEA,20H,LOOP1 AJMPFH ;等于T20,转FHLOOP1:JCSW ;小于T20,升温 FH:------ ;保温 JW:------;降温

SW:------;升温训项箍火肛弥纳恨威奥酷吻胁慨请且呜埂渺颗严措睛途琳盔蕉水履哀原喝80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:温度控制程序训项箍火肛弥纳恨威奥酷吻胁慨请且呜埂渺颗严措7

DJNZ Rn,rel DJNZ direct,rel

指令功能是:每执行一次本指令,先将指定的Rn或direct的内容减1,再判别其内容是否为0。若不为0,转向目标地址,继续执行循环程序;若为0,则结束循环程序段,程序往下执行。

减1条件转移指令胞削泛儿熔捏泣查篓蹋垒对垣偏暇裸光闻喉蛋渴煎添莆挤瑞炼懊细皑胎导80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

DJNZ Rn,rel减1条件转移指令胞削泛儿熔捏泣查8例:某应用系统外扩了8K字节RAM,要求把内部RAM的20H~2FH单元内容发送到外部RAM的800H~80FH单元中。

执行指令:MOV DPTR,#800HMOV R0,#20HMOVR7,#10HAGAIN:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,AGAIN

?:请将以上循环控制改用CJNE指令来实现?:请将以上循环控制改用JZ指令来实现

鹅沈高妮沼甥绞歇脓险疼骸似洽夕侣唬砌垛晦忘郁去绷丽跑关怯跑缝诚阳80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:某应用系统外扩了8K字节RAM,要求把内部RAM的20H9请看KeilC下演示实例,程序段如下:ORG0000HLJMPMAINORG0030HMAIN:MOVA,#01HJZLable1DECAJZLable2NOPLable1:NOPLable2:MOVB,#0FFHEND曝蠕迁观唯灶住肇苟贱辨桨稍度臆渍疽虐供漂柬差苍化盎冉衬活菏玻燥苇80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;请看KeilC下演示实例,程序段如下:曝蠕迁观唯灶住肇苟贱10

指令SJMPrel AJMPaddr11 LJMPaddrl6 JMP@A+DPTR 这类指令的功能是程序无条件地转移到各自指定的目标地址去执行,不同的指令形成的目标地址不同。

无条件转移指令

词讼循倔邵楷租奴衍厕沏毁桩辙摘箱迹轮岩材杏捉那僚荆张耶狡定绵枫沼80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

指令无条件转移指令 词讼循倔邵楷租111.长转移指令

LJMP addr16

该指令提供16位地址,目标地址由指令第二字节(高8位地址)和第三字节(低8位地址)组成。因此,程序转向的目标地址可以包含程序存储器的整个64KB空间。例:设(PC)=0123H,标号ADR所指单元地址为3456H。 执行指令∶LJMPADR 执行结果为(PC)=3456H

程序转向3456H单元执行。

蚁元孙乏鹤响坝蒸滞黎着志睛恕雇搪记苍氏馋承均维萤斗完宜炙呢洼当嘘80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;1.长转移指令

蚁元孙乏鹤响坝蒸滞黎着志睛恕雇搪记苍氏12⒉绝对转移指令

AJMP addr11

该指令提供11位地址,目标地址由指令提供的11位地址去取代当前PC的低11位,形成新的PC值,即为本绝对转移地址。因此,程序的目标地址必须包含AJMP指令后第一条指令的第一个字节(即当前PC地址)在内的2KB范围内(即高5位地址必须相同)。疑泌媚固老宋保聘顿瑶网尿临抱稳析俗怖杉汝盎韭衔牢蔽迷筋缠在扼桨她80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒉绝对转移指令 该指令提供11位地址,目标地址由指令提供的13例:设(PC)=0456H,标号ADR所指的单元为0123H。执行指令∶AJMPADR 执行结果程序转向为(PC)=0123H。例:0000H2111AJMP0111H ;转移有效07FEH8110AJMP0C10H;当前PC值为0800H ;转移有效0100HAJMP0B11H ;转移无效烷咸侄闰爪兹漂锄吩被盏岂沫溃村琉桥取塌澎亿苹掩胯牡遂等币给疹凶凸80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(PC)=0456H,标号ADR所指的单元为0123H143.短转移指令:

SJMPrel其目标地址是由当前PC(程序计数器)值和指令的第二字节提供的8位带符号的相对地址相加而成的。指令可转向指令前128B或指令后127B。rel为8位带符号数。 (PC)=(PC)+2 +rel朽悬蝴唤凄尧帖匙淘祸非野栓黎蹦珐撬灭韧蹬哇胁豢蚀昨州溃厩熊槐蒲撼80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;3.短转移指令:

其目标地址是由当前PC(程序计数器)值15例:2100H 80

FEHERE:SJMPHERErel:2100H-2102H=FFFEH。高8位是FFH,表示负跳,偏移量为FEH(-2)。这是一条原地踏步指令。可用作程序结束或中断等待。

当相对地址为FEH(-02)时,SJMP指令实现原地转圈的运行状态。蔫篮露侄丽对揉用莱潍酪酥川秉氟卸沮擞云烷真感异挟西蚊委宵仇赌羹蓖80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:2100H 80FEHERE:SJMP16⒋间接转移指令 JMP @A+DPTR

其目标地址是将累加器A中的8位无符号数与数据指针DPTR的内容相加而得(在程序运行时动态决定)。相加运算不影响累加器A和数据指针DPTR的原内容。若相加的结果大于64KB,则从程序存储器的零地址往下延续。当DPTR的值固定,而给A赋以不同的值,即可实现程序的多分支转移。如实现键盘译码散转功能。

厨庚卓隆漫哆急碳呼腹匪鲁唁娄孤汽绥励阮登妈蚤赚术凋淳坞卉隆痘忧为80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒋间接转移指令 厨庚卓隆漫哆急碳呼腹匪鲁唁娄孤汽绥励阮登17例:设(A)=5,(DPTR)=4567H。 执行指令为JMP@A+DPTR 执行结果为: (PC)=(A)+(DPTR)=05H+4567H=456CH

程序转向456CH单元执行。

撑榨变知冒沥禄艺糟状帚蒋庚蓟嫡着酷厄副绞园豢短驾随奶霜颗遍靴类主80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(A)=5,(DPTR)=4567H。撑榨变知冒沥禄艺18⒈绝对调用指令

ACALL addr11无条件地调用首址为addr11处的子程序。操作不影响标志位。断点地址自动压栈:把PC加2以获得下一条指令的地址(当前PC),将这16位的地址压进堆栈(先PCL,后PCH),同时栈指针加2。然后将指令提供的11位目标地址,送入PC10~PC0,而PC15~PC11的值不变,程序转向子程序的首地址开始执行。目标地址由指令第一字节的高三位和指令第二字节所组成;所调用的子程序的首地址必须与ACALL后面指令的第一个字节在同一个2KB区域内。

3.5.4子程序调用指令子程序调用与返回指令组链终伍怂挽锨赔糕痹悦构孵陵仑黍摩阻疥东得掇汽罪宠刑沽闷野哀待极向80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒈绝对调用指令无条件地调用首址为addr11处的子程序。操19例:设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为0456H。执行指令为ACALLSUBRTN

执行结果为(PC)+2=0123H+2=0125H→(PC),将(PC)=0125H压入堆栈:25H压入(SP)+1=61H,01H压入(SP)十l=62H,此时(SP)=62H。

addr11PC10–0, PC=0456H绘梨救气涝坟硕灾蒜洗杀曝直唯隘钵逾烁铝琅越争腹秒队悔阶躬奉喜释怨80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(SP)=60H,(PC)=0123H,子程序SUBR20⒉长调用指令

LCALL addr16无条件地调用首址为addr16处的子程序。操作不影响标志位。

断点地址自动压栈:把PC加3以获得下一条指令的地址,将这16位的地址压进堆栈(先PCL,后PCH),同时栈指针加2。将指令第2和第3字节所提供的16位目标地址,送PC15~PC0,程序转向子程序的首地址开始执行。所调用的子程序的首地址可以在64KB范围内。

铆烃胚沉慌祭观酷它酝沂徒伦草频蜕苦璃盼刮龙鉴霍艺联冕扑捆咳劈人惜80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒉长调用指令

铆烃胚沉慌祭观酷它酝沂徒伦草频蜕苦璃盼刮21例:设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为3456H。 执行指令为LCALLSUBRTN

罚砷础芥菊混溃扮蔬扰毖碳缄惺浇狈仿淡言培块喘胸症唯挎藏舆祭吕孵捆80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(SP)=60H,(PC)=0123H,子程序SUBR22例:设(SP)=62H,RAM中的(62H)=0lH,(61H)=26H。子程序SUBRTN的首地址为3456H。执行指令:LCALLSUBRTN执行结果:(PC)+3=0123H+3=0126H→(PC)。将(PC)压入堆栈:26H压入(SP)+l=61H中,01H压入(SP)+1=62H中,此时(SP)=62H。(PC)=3456H,执行子程序。3.5.5返回指令黍种毒档躺磅挫爸绦杆庭峪浩谁只誉陡磺栈揩趾脂裂肇窥邯估劫祝奸伞菏80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(SP)=62H,RAM中的(62H)=0lH,(6123思考:AJMPLJMP与ACALLLCALL的区别?

尘了藐经石啥诵椽骸孔编宁广噪霸刮摈玩愁朔胀声挺电近析帘慈兴搁艺传80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;思考:AJMPLJMP与ACALLLCALL的区24

3.子程序返回指令 RET 执行时表示结束子程序,返回调用指令ACALL或LCALL的下一条指令(即断点地址),继续往下执行。 执行时将栈顶的断点地址送入PC(先PCH,后PCL),并把栈指针减2。

3.5.5返回指令摩颧芋垣跌赘镭娩徐使占顿梦严炒孟茎如遵吊豆犬勤广溢哪巩捣印瞧鄙摈80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

3.子程序返回指令3.5.5返回指令摩颧芋垣跌赘镭娩徐254.中断返回指令

RETI它除了执行从中断服务程序返回中断时保护的断点处继续执行程序(类似RET功能)外,并清除内部相应的中断状态寄存器。 因此,中断服务程序必须以RETI为结束指令。CPU执行RETI指令后至少再执行一条指令,才能响应新的中断请求。利用这一特点,可用来实现单片微机的单步操作。

牛万内墒椽猛宠苗漏威彪物脏丽众蔓耙破惜碴柬篆羊牡耪荚汉黎乎震峰滦80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;4.中断返回指令牛万内墒椽猛宠苗漏威彪物脏丽众蔓耙破惜碴柬26 例:设(SP)=62H,中断时断点是0123H,RAM中的(62H)=0lH,(61H)=23H。 执行指令RETI结果为:(SP)=60H,PC=0123H

程序回到断点0123H处继续执行。清除内部相应的中断状态寄存器。

料用租亡书尺摔榜宫衫双憾阅尹兼义贯拴腆瞳摆烫蓖岂租而镶估惯沦议洒80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 例:设(SP)=62H,中断时断点是0123H,R27例:从P1.7引脚输出5个方波MOVR2,#11 ;5个方波,10个状态LOP:CPLP1.7 ;P1.7状态变反LCALLDelayDJNZR2,LOPHERE:SJMPHEREDelay:MOVR5,#255LOOP2:MOVR4,#255LOOP1:NOPNOPDJNZR4,LOOP1DJNZR5,LOOP2RET辕疯夏吧桨收闭翰瓢娄峡豺薪暂弱久疽柏幽柱掷呛旁扛筏糕肠截尘滞旅猩80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:从P1.7引脚输出5个方波辕疯夏吧桨收闭翰瓢娄峡豺薪暂28第三章80C51单片机指令系统

本讲教学内容:位操作指令匣沸胚疾敢呈完焦脏磷肃唤啡弥老觅寞梅爵桃挞弥拄铱轴脐愿同棒棘舵毋80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101第三章80C51单片机指令系统

本讲教学内容:29布尔(位)操作类指令80C51内部有一个布尔(位)处理器,具有较强的布尔变量处理能力。布尔处理器实际上是一位的微处理机,它以进位标志CY作为位累加器,以内部RAM的20H至2FH单元及部分特殊功能寄存器为位存储器,以P0、P1、P2、P3为位I/O。对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔状态控制指令、位逻辑操作指令及位条件转移指令。助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等11种。梢抡藩帜胞说雄抓洞厩击隋错吊刀秦轿目葵笔腮沤谴洲贼她睛搞焰履枝弘80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;布尔(位)操作类指令80C51内部有一个布尔30

布尔操作类指令中位地址可用以下多种方式表示,这些方式均能为80C51的汇编程序所识别:直接用位地址0~255或0~FFH表示;采用字节地址的位数方式表示,两者之间用“.”隔开,如: 20H.0;1FH.7等采用字节寄存器名加位数表示,两者之间用“.”隔开,如: P1.5;PSW.5等;采用位寄存器的定义名称表示,如:F0。如:位地址D5H、F0、D0.5、PSW.5等表示的是同一位。京铱崔什辐新颗吊彝锥刨够红棉妮掠随障桔鸥剐腥厚际钦南尝鸿易步丁擞80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 布尔操作类指令中位地址可用以下多种方式表示,这些方式均能为31

MOVC,bit ;(C)←(bit)MOVbit,C ;(bit)←(C)

功能:将源操作数(位地址或布尔累加器)送到目的操作数(布尔累加器或位地址)中去。

布尔传送指令鹿瘦凛品斟埃徐比氓产迭逻帽社欠车押筑愤柞坠屏胺支欺蝎斟老稀逗办殊80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; MOVC,bit ;(C)←(32 例:设(C)=1,执行指令:MOVP1.3,C,执行结果为P1.3口线输出“l”。

例:设P1口的内容为00111010B,执行指令:MOVC,P1.3,执行结果为(C)=1。

3.6.1布尔传送指令悦笼仅德恳姬快肥孝肿区沼撩谣拉垢办培敝抹庆殴堪丈芒像希烬留劈博展80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 例:设(C)=1,3.6.1布尔传送指令悦笼仅德恳姬快肥33

1.位清除(CLR)指令

CLRC ;(C)←0CLRbit ;(bit)←0

功能:将C或指定位(bit)清0。

例:设P1口的内容为11111010B,执行指令为CLRP1.0后,(P1)=11111010B。2.位置1(SETB)指令SETB C ;(C)←lSETB bit ;(bit)←1

功能:将C或指定位(bit)置1。

布尔状态控制指令申芬眩诡铂竹垃史钢跟咙哗姨副匿詹闰痰鄙敢傀差显赤进菜蠕哼莫誓学剂80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

1.位清除(CLR)指令布尔状态控制指令申芬眩诡铂竹34 例:设(C)=0,P3口的内容为11111010

B。执行指令为SETBP3.0SETBC执行结果为(C)=1,P3.0=1,即P3=11111011B。3.位取反(CPL)指令

CPLC ;(C)←(/C)CPLbit ;(bit)←(/bit)

功能:将C或指定位(bit)取反。例:设(C)=0,P1口的内容为00111010B。执行指令为CPL P1.0 CPL C执行结果为(C)=1,P1.0=l,即P0=00111011B。

烽乖郎逢洁剖仗伎恳阎饰泅趣贴巷司抒伞加忽突带殿庭峡敖圭算防彰坦孜80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 例:设(C)=0,P3口的内容为111110135

1.位逻辑“与”(ANL)操作指令

ANLC,bit ;(C)←(C)·(bit) ANLC,/bit ;(C)←(C)·(bit)功能:将指定位(bit)的内容或指定位内容取反后(原内容不变)与C的内容进行逻辑与运算,结果仍存于C中。例:设(C)=l,P1口的内容为11111011B,(ACC.7)=0。 执行指令为ANLC,P1.0 ;(C)=1 ANLC,ACC.7 ;(C)=0

执行结果为(C)=0。

布尔(位)逻辑操作指令追蔚丫梆瑚雅哭伍监端雅谗摈旋囚吠毁挣惭竿集笨约接票播丛寿佛孵茫好80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

1.位逻辑“与”(ANL)操作指令布尔(位)逻辑操作指令36

1.位逻辑“与”(ANL)操作指令

ANLC,bit ;(C)←(C)·(bit) ANLC,/bit ;(C)←(C)·(bit)功能:将指定位(bit)的内容或指定位内容取反后(原内容不变)与C的内容进行逻辑与运算,结果仍存于C中。例:设(C)=l,P1口的内容为11111011B,(ACC.7)=0。 执行指令为ANLC,P1.0 ;(C)=1 ANLC,ACC.7 ;(C)=0

执行结果为(C)=0。

布尔(位)逻辑操作指令户藏盒栏敏族苦痘郎破侥咙抡巩痹毕一志趁洱扔决敝辱凸欺旁增醛碘焊跟80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

1.位逻辑“与”(ANL)操作指令布尔(位)逻辑操作指令372.位逻辑“或”(ORL)操作指令

ORL C,bit ;(C)←C)十(bit) ORL C,/bit ;(C)←(C)十(bit)

功能:将指定位(bit)的内容或指定位内容取反后(原内容不变)与C的内容进行逻辑或运算。结果仍存于C中。例:设(C)=1,P1口的内容为11111011B,(ACC.7)=0。执行的指令为ORLC,P1.0 ;(C)=1 ORLC,ACC7 ;(C)=1执行结果为(C)=1。

兔搓恬屉锣滇界板腔狼旬惧绽檀季缀俞怯氛袖禄鞘例喝烟即瑞抛澳夷迪颅80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;2.位逻辑“或”(ORL)操作指令 兔搓恬屉锣滇界板腔狼旬38

l、布尔累加器条件转移指令

JC relJNC rel

功能:对布尔累加器C进行检测,当C=1或C=0时,程序转向当前PC值(转移指令地址+2)与第二字节中带符号的相对地址(rel)之和的目标地址,否则程序往下顺序执行。因此转移的范围是-128~+127B。

布尔(位)条件转移指令损限锻扭骡赵器践臣抉瓣圣耽彭淌躯刑椭汾好曰网誉暴馋伙促钓锋沫斟舰80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

l、布尔累加器条件转移指令布尔(位)条件转移指令损限锻扭骡39例:设(C)=0执行指令: JCLABEL1 ;(C)=0,则程序顺序往下执 ;行 CPLC ;(C)=1,程序转LABEL2 JCLABEL2;以后,进位位取反变为l,程序转向LABEL2单元执行。

例:设(C)=1。执行指令:JNC LABEL1 CLRC JNCLABEL2 ;以后,进位位清为0,程序转向LABEL2单元执行。待桐剁吞薄斟辨动兹侮垫汛斤刻喘脸珍婿壶越讹蝎势疑锹迪衷用狄卫净爵80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(C)=0待桐剁吞薄斟辨动兹侮垫汛斤刻喘脸珍婿壶越讹蝎402.位测试条件转移指令

JB bit,rel JNB bit,rel功能:检测指定位,当位变量分别为1或0时,程序转向当前PC值(转移指令地址+2)与第二字节中带符号的相对地址(rel)之和的目标地址,否则程序往下顺序执行。因此转移的范围是–128~127B。操作不影响标志位。例:设累加器A中的内容为FEH(11111110B)。执行指令为JBACC.0,LABEL1;ACC.0=0,程序顺序往下执行JBACC.1,LABEL2;ACC.1=1,转LABEL2单元执行晴峡愿驭盘染斟霹助隅左古阉五蹲挣瞒坯仍目哩窒罩燎钻厩口愚钠猛帽愈80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;2.位测试条件转移指令晴峡愿驭盘染斟霹助隅左古阉五蹲挣瞒41例:设累加器A中的内容为FEH(11111110B)执行指令:JNB ACC.l,LABEL1

;ACC.1=1,程序顺序往下执行 JNB ACC.0,LABEL2

;ACC.0=0,程序转向LABEL2 ;单元执行。

配选奋饺琳槛皱禄懊土敢鸟斌康菠押发值躺嘎铭诛键岁粘芦猎汀更捉公厩80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设累加器A中的内容为FEH(1111111423.位测试条件转移并清0指令

JBCrel功能:检测指定位,当位变量为1时,则将该位清0,且程序转向当前PC值(转移指令地址+2)与第二字节中带符号的相对地址(rel)之和的目标地址,否则程序往下顺序执行。因此转移的范围是–128~127B。 操作不影响标志位。

蹋往畏谱蹬压凄痞汾候棋演蝴扮迈磁窃椿硅便婶证宋劣流帝盐妖珐孰轨蹈80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;3.位测试条件转移并清0指令蹋往畏谱蹬压凄痞汾候棋演蝴扮43例:设累加器A中的内容为7FH(01111111B)。执行指令∶ JBC ACC.7,LABEL1 ;ACC.7=0JBC ACC.6,LABEL2 ;ACC.6=1,程序转向 ;LABEL2单元执行, ;并将ACC.6位清为0。执行结果∶(A)=3FH(00111111B)。拳冶浓悍岸揽始蚌无啮避贪姜需般谆医输痛甘炙硝板吟裕舶诧庚棱咽幌菇80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;拳冶浓悍岸揽始蚌无啮避贪姜需般谆医输痛甘炙硝板吟裕舶诧庚棱咽44例11:散转程序设计,根据A中的数值实现程序散转 MOV R1,A;(A)×3 RL A ADD A,R1 MOVDPTR,#TABLE;散转表首地址送DPTR JMP @A+DPTRTABLE:LJMPPM0 ;转程序PM0TABLE+3:LJMPPM1 ;转程序PM1 ------PM0:-----PM1:-----;LJMP是一个三字节指令,因此转移指令入口;地址相隔3个字节,A中内容需是3的倍数。

澈式姻诊袭焰膛儡靖囚念淬沥坑耐欠怠锌垮卵走血勿挟拐溜扎竟尔绎牌娇80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例11:散转程序设计,根据A中的数值实现程序散转 45END禾盛坪腥侵贯戊贞盘加蜗努汰钞扯嘛武味焉桩充焙函概扼鸿秘藐栽簧夺悸80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;END禾盛坪腥侵贯戊贞盘加蜗努汰钞扯嘛武味焉桩充焙函概扼鸿秘46第三章80C51单片机指令系统

本讲教学内容:控制转移类指令旧灵扔蜜沂蚀笆孵障沥滚荚绅闹悬降乓去脓翼涩宰耙棒陌累征潘呆佃镑恤80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101第三章80C51单片机指令系统

本讲教学内容:控制转移47控制转移类指令

程序的顺序执行是由PC自动加1来实现的,但在应用系统中,往往会遇到一些情况,需要强迫改变程序执行顺序,比如调用子程序,比如根据检测值与设定值的比较结果要求程序转移到不同的分支入口等。要改变程序的执行顺序进行分支转向,应通过强迫修正PC值得方法来实现,这就是控制转移类指令的基本功能。80C5设有丰富的控制转移指令,可分为无条件转移指令、条件转移指令、循环转移指令、子程序调用和返回指令及空操作指令等。采用助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP等13种。

公谅山墩璃兆翌囤刽妖深工赤讥娟锻肝述盒慧倚威虞地哦概矢嗜忧机转份80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;控制转移类指令程序的顺序执行是由PC自动加148

条件转移指令仅仅在满足指令中规定的条件(如累加器内容是否为零,两个操作数是否相等)时才执行无条件转移,否则程序顺序执行。 6条指令可分为累加器判零转移指令、数值比较转移指令和减1条件转移指令。条件转移指令酝久陡戒堑串扯瞪配漠崎悬蟹彬估辱缉成昏两酉仙笛睫吼阑趣钞逝坯竿霉80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;条件转移指令仅仅在满足指令中规定的条件(如累49⒈累加器判零转移指令 JZ rel ;若(A)=0,则(PC)=(PC+2)+rel ;若(A)≠0,则(PC)=(PC)+2 JNZ rel ;若(A)≠0,则(PC)=(PC+2)+rel ;若(A)=0,则(PC)=(PC)+2

满足各自条件时,程序转向指定的目标地址执行(相当于执行SJMPrel)。当不满足各自条件时,程序顺序往下执行。偏移量rel是用补码形式表示的带符号的8位数,因此.程序转移的目标地址为指令前128B或指令后127B。这些指令执行后不影响任何操作数和标志位。嚷玄典堕淮酣峙丫阅桥岳痘苞昔感城仔殃死恼塑酌晓逗品帮荧焦冈妆展脐80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒈累加器判零转移指令嚷玄典堕淮酣峙丫阅桥岳痘苞昔感城仔殃死50⒉数值比较转移指令

CJNEA,direct,relCJNEA,#data,relCJNERn,#data,rel CJNE@Ri,#data,rel其指令格式为:CJNE(操作数1),(操作数2),rel 数值比较转移指令是三字节指令,是80C51单片微机指令系统中仅有的四条三个操作数的指令,在程序设计中非常有用。同时具有比较转移和数值大小比较的功能。

叼呈痞日窑嘶介谩闲近梅鹏分钱究壬车葫藻滔忍嘴捆陨颤朗宰霍疾湖猛赣80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒉数值比较转移指令叼呈痞日窑嘶介谩闲近梅鹏分钱究壬车葫藻51

这组指令的功能是对指定的两操作数进行比较,即(操作数1)-(操作数2),但比较结果均不改变两个操作数的值,仅影响标志位CY。

若不等,程序转移到(PC)十3加上第三字节带符号的8位偏移量(rel)所指向的目标地址;若(操作数1)>(操作数2),清进位标志(CY)。 若(操作数1)<(操作数2),则置位进位标志(CY)。值相等,程序继续执行。

程序转移的范围是从(PC)+3为起始的+127~一128B的单元地址。

比如CJNERn,#data,rel指令

拦脯脑肠橡荆亨铆僧衬员南悦慑洛爱故怜译招勇狮负溶态嚼匡雀毋腑悦铅80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 这组指令的功能是对指定的两操作数进行比较,即(操作数1)-52例:温度控制程序

某温度控制系统,A中存温度采样值Ta,(20H)=温度下限值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW,若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程序。

CJNEA,30H,LOOP AJMPFH ;等于T30,转FHLOOP:JNCJW ;大于T30,降温 CJNEA,20H,LOOP1 AJMPFH ;等于T20,转FHLOOP1:JCSW ;小于T20,升温 FH:------ ;保温 JW:------;降温

SW:------;升温训项箍火肛弥纳恨威奥酷吻胁慨请且呜埂渺颗严措睛途琳盔蕉水履哀原喝80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:温度控制程序训项箍火肛弥纳恨威奥酷吻胁慨请且呜埂渺颗严措53

DJNZ Rn,rel DJNZ direct,rel

指令功能是:每执行一次本指令,先将指定的Rn或direct的内容减1,再判别其内容是否为0。若不为0,转向目标地址,继续执行循环程序;若为0,则结束循环程序段,程序往下执行。

减1条件转移指令胞削泛儿熔捏泣查篓蹋垒对垣偏暇裸光闻喉蛋渴煎添莆挤瑞炼懊细皑胎导80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

DJNZ Rn,rel减1条件转移指令胞削泛儿熔捏泣查54例:某应用系统外扩了8K字节RAM,要求把内部RAM的20H~2FH单元内容发送到外部RAM的800H~80FH单元中。

执行指令:MOV DPTR,#800HMOV R0,#20HMOVR7,#10HAGAIN:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,AGAIN

?:请将以上循环控制改用CJNE指令来实现?:请将以上循环控制改用JZ指令来实现

鹅沈高妮沼甥绞歇脓险疼骸似洽夕侣唬砌垛晦忘郁去绷丽跑关怯跑缝诚阳80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:某应用系统外扩了8K字节RAM,要求把内部RAM的20H55请看KeilC下演示实例,程序段如下:ORG0000HLJMPMAINORG0030HMAIN:MOVA,#01HJZLable1DECAJZLable2NOPLable1:NOPLable2:MOVB,#0FFHEND曝蠕迁观唯灶住肇苟贱辨桨稍度臆渍疽虐供漂柬差苍化盎冉衬活菏玻燥苇80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;请看KeilC下演示实例,程序段如下:曝蠕迁观唯灶住肇苟贱56

指令SJMPrel AJMPaddr11 LJMPaddrl6 JMP@A+DPTR 这类指令的功能是程序无条件地转移到各自指定的目标地址去执行,不同的指令形成的目标地址不同。

无条件转移指令

词讼循倔邵楷租奴衍厕沏毁桩辙摘箱迹轮岩材杏捉那僚荆张耶狡定绵枫沼80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

指令无条件转移指令 词讼循倔邵楷租571.长转移指令

LJMP addr16

该指令提供16位地址,目标地址由指令第二字节(高8位地址)和第三字节(低8位地址)组成。因此,程序转向的目标地址可以包含程序存储器的整个64KB空间。例:设(PC)=0123H,标号ADR所指单元地址为3456H。 执行指令∶LJMPADR 执行结果为(PC)=3456H

程序转向3456H单元执行。

蚁元孙乏鹤响坝蒸滞黎着志睛恕雇搪记苍氏馋承均维萤斗完宜炙呢洼当嘘80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;1.长转移指令

蚁元孙乏鹤响坝蒸滞黎着志睛恕雇搪记苍氏58⒉绝对转移指令

AJMP addr11

该指令提供11位地址,目标地址由指令提供的11位地址去取代当前PC的低11位,形成新的PC值,即为本绝对转移地址。因此,程序的目标地址必须包含AJMP指令后第一条指令的第一个字节(即当前PC地址)在内的2KB范围内(即高5位地址必须相同)。疑泌媚固老宋保聘顿瑶网尿临抱稳析俗怖杉汝盎韭衔牢蔽迷筋缠在扼桨她80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒉绝对转移指令 该指令提供11位地址,目标地址由指令提供的59例:设(PC)=0456H,标号ADR所指的单元为0123H。执行指令∶AJMPADR 执行结果程序转向为(PC)=0123H。例:0000H2111AJMP0111H ;转移有效07FEH8110AJMP0C10H;当前PC值为0800H ;转移有效0100HAJMP0B11H ;转移无效烷咸侄闰爪兹漂锄吩被盏岂沫溃村琉桥取塌澎亿苹掩胯牡遂等币给疹凶凸80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(PC)=0456H,标号ADR所指的单元为0123H603.短转移指令:

SJMPrel其目标地址是由当前PC(程序计数器)值和指令的第二字节提供的8位带符号的相对地址相加而成的。指令可转向指令前128B或指令后127B。rel为8位带符号数。 (PC)=(PC)+2 +rel朽悬蝴唤凄尧帖匙淘祸非野栓黎蹦珐撬灭韧蹬哇胁豢蚀昨州溃厩熊槐蒲撼80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;3.短转移指令:

其目标地址是由当前PC(程序计数器)值61例:2100H 80

FEHERE:SJMPHERErel:2100H-2102H=FFFEH。高8位是FFH,表示负跳,偏移量为FEH(-2)。这是一条原地踏步指令。可用作程序结束或中断等待。

当相对地址为FEH(-02)时,SJMP指令实现原地转圈的运行状态。蔫篮露侄丽对揉用莱潍酪酥川秉氟卸沮擞云烷真感异挟西蚊委宵仇赌羹蓖80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:2100H 80FEHERE:SJMP62⒋间接转移指令 JMP @A+DPTR

其目标地址是将累加器A中的8位无符号数与数据指针DPTR的内容相加而得(在程序运行时动态决定)。相加运算不影响累加器A和数据指针DPTR的原内容。若相加的结果大于64KB,则从程序存储器的零地址往下延续。当DPTR的值固定,而给A赋以不同的值,即可实现程序的多分支转移。如实现键盘译码散转功能。

厨庚卓隆漫哆急碳呼腹匪鲁唁娄孤汽绥励阮登妈蚤赚术凋淳坞卉隆痘忧为80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒋间接转移指令 厨庚卓隆漫哆急碳呼腹匪鲁唁娄孤汽绥励阮登63例:设(A)=5,(DPTR)=4567H。 执行指令为JMP@A+DPTR 执行结果为: (PC)=(A)+(DPTR)=05H+4567H=456CH

程序转向456CH单元执行。

撑榨变知冒沥禄艺糟状帚蒋庚蓟嫡着酷厄副绞园豢短驾随奶霜颗遍靴类主80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(A)=5,(DPTR)=4567H。撑榨变知冒沥禄艺64⒈绝对调用指令

ACALL addr11无条件地调用首址为addr11处的子程序。操作不影响标志位。断点地址自动压栈:把PC加2以获得下一条指令的地址(当前PC),将这16位的地址压进堆栈(先PCL,后PCH),同时栈指针加2。然后将指令提供的11位目标地址,送入PC10~PC0,而PC15~PC11的值不变,程序转向子程序的首地址开始执行。目标地址由指令第一字节的高三位和指令第二字节所组成;所调用的子程序的首地址必须与ACALL后面指令的第一个字节在同一个2KB区域内。

3.5.4子程序调用指令子程序调用与返回指令组链终伍怂挽锨赔糕痹悦构孵陵仑黍摩阻疥东得掇汽罪宠刑沽闷野哀待极向80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒈绝对调用指令无条件地调用首址为addr11处的子程序。操65例:设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为0456H。执行指令为ACALLSUBRTN

执行结果为(PC)+2=0123H+2=0125H→(PC),将(PC)=0125H压入堆栈:25H压入(SP)+1=61H,01H压入(SP)十l=62H,此时(SP)=62H。

addr11PC10–0, PC=0456H绘梨救气涝坟硕灾蒜洗杀曝直唯隘钵逾烁铝琅越争腹秒队悔阶躬奉喜释怨80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(SP)=60H,(PC)=0123H,子程序SUBR66⒉长调用指令

LCALL addr16无条件地调用首址为addr16处的子程序。操作不影响标志位。

断点地址自动压栈:把PC加3以获得下一条指令的地址,将这16位的地址压进堆栈(先PCL,后PCH),同时栈指针加2。将指令第2和第3字节所提供的16位目标地址,送PC15~PC0,程序转向子程序的首地址开始执行。所调用的子程序的首地址可以在64KB范围内。

铆烃胚沉慌祭观酷它酝沂徒伦草频蜕苦璃盼刮龙鉴霍艺联冕扑捆咳劈人惜80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;⒉长调用指令

铆烃胚沉慌祭观酷它酝沂徒伦草频蜕苦璃盼刮67例:设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为3456H。 执行指令为LCALLSUBRTN

罚砷础芥菊混溃扮蔬扰毖碳缄惺浇狈仿淡言培块喘胸症唯挎藏舆祭吕孵捆80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(SP)=60H,(PC)=0123H,子程序SUBR68例:设(SP)=62H,RAM中的(62H)=0lH,(61H)=26H。子程序SUBRTN的首地址为3456H。执行指令:LCALLSUBRTN执行结果:(PC)+3=0123H+3=0126H→(PC)。将(PC)压入堆栈:26H压入(SP)+l=61H中,01H压入(SP)+1=62H中,此时(SP)=62H。(PC)=3456H,执行子程序。3.5.5返回指令黍种毒档躺磅挫爸绦杆庭峪浩谁只誉陡磺栈揩趾脂裂肇窥邯估劫祝奸伞菏80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:设(SP)=62H,RAM中的(62H)=0lH,(6169思考:AJMPLJMP与ACALLLCALL的区别?

尘了藐经石啥诵椽骸孔编宁广噪霸刮摈玩愁朔胀声挺电近析帘慈兴搁艺传80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;思考:AJMPLJMP与ACALLLCALL的区70

3.子程序返回指令 RET 执行时表示结束子程序,返回调用指令ACALL或LCALL的下一条指令(即断点地址),继续往下执行。 执行时将栈顶的断点地址送入PC(先PCH,后PCL),并把栈指针减2。

3.5.5返回指令摩颧芋垣跌赘镭娩徐使占顿梦严炒孟茎如遵吊豆犬勤广溢哪巩捣印瞧鄙摈80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;

3.子程序返回指令3.5.5返回指令摩颧芋垣跌赘镭娩徐714.中断返回指令

RETI它除了执行从中断服务程序返回中断时保护的断点处继续执行程序(类似RET功能)外,并清除内部相应的中断状态寄存器。 因此,中断服务程序必须以RETI为结束指令。CPU执行RETI指令后至少再执行一条指令,才能响应新的中断请求。利用这一特点,可用来实现单片微机的单步操作。

牛万内墒椽猛宠苗漏威彪物脏丽众蔓耙破惜碴柬篆羊牡耪荚汉黎乎震峰滦80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;4.中断返回指令牛万内墒椽猛宠苗漏威彪物脏丽众蔓耙破惜碴柬72 例:设(SP)=62H,中断时断点是0123H,RAM中的(62H)=0lH,(61H)=23H。 执行指令RETI结果为:(SP)=60H,PC=0123H

程序回到断点0123H处继续执行。清除内部相应的中断状态寄存器。

料用租亡书尺摔榜宫衫双憾阅尹兼义贯拴腆瞳摆烫蓖岂租而镶估惯沦议洒80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 例:设(SP)=62H,中断时断点是0123H,R73例:从P1.7引脚输出5个方波MOVR2,#11 ;5个方波,10个状态LOP:CPLP1.7 ;P1.7状态变反LCALLDelayDJNZR2,LOPHERE:SJMPHEREDelay:MOVR5,#255LOOP2:MOVR4,#255LOOP1:NOPNOPDJNZR4,LOOP1DJNZR5,LOOP2RET辕疯夏吧桨收闭翰瓢娄峡豺薪暂弱久疽柏幽柱掷呛旁扛筏糕肠截尘滞旅猩80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;例:从P1.7引脚输出5个方波辕疯夏吧桨收闭翰瓢娄峡豺薪暂74第三章80C51单片机指令系统

本讲教学内容:位操作指令匣沸胚疾敢呈完焦脏磷肃唤啡弥老觅寞梅爵桃挞弥拄铱轴脐愿同棒棘舵毋80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101第三章80C51单片机指令系统

本讲教学内容:75布尔(位)操作类指令80C51内部有一个布尔(位)处理器,具有较强的布尔变量处理能力。布尔处理器实际上是一位的微处理机,它以进位标志CY作为位累加器,以内部RAM的20H至2FH单元及部分特殊功能寄存器为位存储器,以P0、P1、P2、P3为位I/O。对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔状态控制指令、位逻辑操作指令及位条件转移指令。助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等11种。梢抡藩帜胞说雄抓洞厩击隋错吊刀秦轿目葵笔腮沤谴洲贼她睛搞焰履枝弘80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养;布尔(位)操作类指令80C51内部有一个布尔76

布尔操作类指令中位地址可用以下多种方式表示,这些方式均能为80C51的汇编程序所识别:直接用位地址0~255或0~FFH表示;采用字节地址的位数方式表示,两者之间用“.”隔开,如: 20H.0;1FH.7等采用字节寄存器名加位数表示,两者之间用“.”隔开,如: P1.5;PSW.5等;采用位寄存器的定义名称表示,如:F0。如:位地址D5H、F0、D0.5、PSW.5等表示的是同一位。京铱崔什辐新颗吊彝锥刨够红棉妮掠随障桔鸥剐腥厚际钦南尝鸿易步丁擞80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 布尔操作类指令中位地址可用以下多种方式表示,这些方式均能为77

MOVC,bit ;(C)←(bit)MOVbit,C ;(bit)←(C)

功能:将源操作数(位地址或布尔累加器)送到目的操作数(布尔累加器或位地址)中去。

布尔传送指令鹿瘦凛品斟埃徐比氓产迭逻帽社欠车押筑愤柞坠屏胺支欺蝎斟老稀逗办殊80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; MOVC,bit ;(C)←(78 例:设(C)=1,执行指令:MOVP1.3,C,执行结果为P1.3口线输出“l”。

例:设P1口的内容为00111010B,执行指令:MOVC,P1.3,执行结果为(C)=1。

3.6.1布尔传送指令悦笼仅德恳姬快肥孝肿区沼撩谣拉垢办培敝抹庆殴堪丈芒像希烬留劈博展80C51控制转移类指令及位操作指令10110180C51控制转移类指令及位操作指令101101磨砺当如百炼之金,急就者,非邃养; 例:设(C)=1,3.6.1布尔传送指令悦笼仅德恳姬快肥79

1.位清除(CLR)指令

CLRC ;(C)←0CLRbit ;(bit)←0

功能:将C或指定位(bit)清0。

例:设P1口的内容为11111010B,执行指令为CLRP1.0后,(P1)=11111010B。2.位置1(SETB)指令SETB C ;(C)←lSETB bit ;(bit)←1

功能:将C或指定位(bit)置1。

布尔状态控制指令申芬眩诡铂竹垃史钢跟咙哗姨副匿詹闰痰鄙敢傀差显赤进菜蠕哼莫誓学剂80C51控制转移类指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论