收藏 分销(赏)

2022年单片机-第讲2.ppt

上传人:二*** 文档编号:12589535 上传时间:2025-11-07 格式:PPT 页数:50 大小:446.54KB 下载积分:5 金币
下载 相关 举报
2022年单片机-第讲2.ppt_第1页
第1页 / 共50页
本文档共50页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1P30-2,3,4,8,2利用示波器可观察89C51的哪个管脚来判断单片机正在工作?,作业评讲,(2)锁存器,(3)缓冲器,(4)场效应管(FET),(5)一个多路转接开关MUX(,P0口和P2口,),复习,1.P0P3端口功能总结:,(1),只有,P0口,是一个真正的,双向口,,,P1P3口,都是,准双向口,2.机器周期、指令周期与指令时序,单片机的初始化操作,摆脱死锁状态。,引脚RST加上,大于2个机器周期(即24个时钟振荡周期)的高电平就可使MCS-51复位。,复位时,PC初始化为0000H,,使MCS-51单片机从0000H单元开始执行程序。,除PC之外,复位操作还对其它一些寄存器有影响,见书,(P34),复位电路通常采用,上电自动复位,和,按钮复位,两种方,式。,最简单的上电自动复位电路:,按键手动复位,有,电平方式,和,脉冲方式,两种。,电平方式:,第3章 89C51的指令系统,介绍89C51,汇编语言,的指令系统。,3.1 指令系统概述,MCS-51的基本指令共,111条,,,按指令所占的字节来分:,(1)单字节指令49条;,(2)双字节指令45条;,(3)三字节指令17条。,按指令的执行时间来分,:,(1)1个机器周期(12个时钟振荡周期)的指令64条;,(2)2个机器周期(24个时钟振荡周期)的指令45条;,(3)只有,乘、除两条指令,的执行时间为,4个机器周期,(48个时钟振荡周期)。,12MHz晶振:机器周期为1,s。,3.2 指令格式,两部分组成,即,操作码,和,操作数,。,操作码,用来规定指令进行什么操作,操作数,则是指令操作的对象,有单字节指令、双字节指令、三字节不同长度的指令,格式不同:,(1)单字节指令:,指令只有一个字节,操作码和操作数同在一个字节中。,(2)双字节指令:,一个字节为操作码,另一个字节是操作数。,(3)三字节指令:,操作码占一个字节,操作数占二个字节。其中操作数既可能是数据,也可能是地址。,3.3 指令系统的寻址方式,寻址方式,就是在指令中说明操作数所在地址的方法。,共,7种,寻址方式。,1寄存器寻址方式,操作数在寄存器中,MOV A,Rn ;(Rn)A,n=07,表示把寄存器Rn的内容传送给累加器A,寻址范围包括:,(1)4组通用工作寄存区共32个工作寄存器。,(2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器DPTR等。,2直接寻址方式,操作数直接以单元地址的形式给出:,MOV A,40H,寻址范围:,(1)内部RAM的128个单元,(2)特殊功能寄存器。除了以单元地址的形式外,还,可用寄存器符号,的形式给出。例如:,MOV A,80H 与 MOV A,P0是等价的,。,直接寻址方式是访问特殊功能寄存器的唯一寻址方式,3.寄存器间接寻址方式,寄存器中存放的是操作数的地址,在寄存器的名称前面加,前缀标志“”,访问内部RAM或外部数据存储器的低256个字节时,,只能采用R0或R1作为间址寄存器,。例如,:,MOV A,Ri,;i=0或1,其中Ri中的内容为40H,把内部RAM中40H单元的内容送到A。,寻址范围:,(1)访问内部RAM低128个单元,其通用形式为Ri,(2)对片外数据存储器的64K字节的间接寻址,例如:,MOVX A,DPTR,(3)片外数据存储器的低256字节,例如:,MOVX A,Ri,(4)堆栈区,堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器,4立即寻址方式,操作数在指令中直接给出,需在操作数前面加前缀标志“#”。例如:,MOV A,#40H,5基址寄存器加变址寄存器间址寻址方式,本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。,例如:,指令 MOVC A,A+DPTR 其中A的原有内容为05H,DPTR的内容为0400H,该指令执行的结果是把程序存储器0405H单元的内容传送给A。,说明:,(1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可达到64KB。,(2),本寻址方式的指令只有3条:,MOVC A,A+DPTR,MOVC A,A+PC,JMP A+DPTR,6位寻址方式,MCS-51有位处理功能,可以对数据位进行操作,例如:,MOV C,40H,是把位40H的值送到进位位C。,寻址范围包括:,(1)内部RAM中的位寻址区。位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位。它们是等价的。,(2)特殊功能寄存器中的可寻址位,可寻址位在指令中有如下4种的表示方法:,a.直接使用位地址,。例如PSW.5的位地址为0D5H。,方法。例如:PSW.5是F0标志位,可使用F0表示该位。,的表示方法。例如:(0D0H).5。,的表示方法。例如:PSW.5。,7相对寻址方式,在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址:,目的地址=转移指令所在的地址+转移指令的字节数,+rel,偏移量rel是一带符号的8位二进制数补码数,。,范围是:128,+127,向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。,7种寻址方式及寻址空间,见表3-1(P43)。,XCH A,R7 ;(A)与(R7)互换,例如:当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令,(1)内部RAM中的位寻址区。,结果为:(A)=85H,Cy=1,Ac=1,OV=0,P=1(A中1 的位数为奇数),具体是通过执行指令:DA A 来自动实现的。,ADDCA,Rn;(A)+(Rn)+CA,n=07 ADDCA,direct;(A)+(direct)+CA ADDCA,Ri ;(A)+(Ri)+CA,i=0,1,addr11 11位目的地址,(2)MOVC A,A+DPTR,(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。,ORL direct,#data,(a)累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正。,另一种是单元地址加上位,例如,(28H).,INC Ri ;i=0,1,2 算术操作类指令,操作码用来规定指令进行什么操作,3.4 MCS-51指令系统分类介绍,111条指令,,按功能分类,可分为下面,5大类,:,(1)数据传送类(28条),(2)算术操作类(24条,(3)逻辑运算类(25条),(4)控制转移类(17条),(5)位操作类(17条),指令中符号的意义:,Rn,当前寄存器区的8个工作寄存器R0R7(n=07),。,Ri,当前选中的寄存器区中可作间接寻址寄存器的2 个寄存器R0、R1(i=0,1)。,Direct,直接地址,即8位的内部数据存储器单元或特殊功能寄存器的地址。,#data,包含在指令中的8位立即数。,#data16,包含在指令中的16位立即数。,rel,相对转移指令中的偏移量,为8位的带符号补 码数,DPTR,数据指针,可用作16位的地址寄存器。,bit,内部RAM或特殊功能寄存器中的直接寻址位。,C(或Cy),进位标志位或位处理机中的累加器。,addr11,11位目的地址,addr16,16位目的地址,间接寻址寄存器前缀,如Ri,A+DPTR,(X),X中的内容。,(X),由X寻址的单元中的内容。,箭头右边的内容被箭头左边的内容所取代。,3.4.1 数据传送类指令,使用最频繁的一类指令,通用格式:,MOV ,,属“,复制,”性质,而不是“剪切”,数据传送类指令,不影响标志位,Cy、Ac和OV,但不包括奇偶标志位P。,1以累加器为目的操作数的指令,MOV A,Rn ;(Rn)A,n=07,MOV A,Ri ;(Ri)A,i=0,1,MOV A,direct ;(direct)A,MOV A,#data ;#dataA,例如:,MOV A,R6 ;(R6)A,寄存器寻址,MOV A,70H ;(70H)A,直接寻址,MOV A,R0 ;(R0)A,间接寻址,MOV A,#78H ;78HA,立即寻址,2.以Rn为目的操作数的指令,MOV Rn,A ;(A)Rn,n=07,MOV Rn,direct ;(direct)Rn,n=07,MOV Rn,#dat ;#dataRn,n=07,功能:是把源操作数的内容送入当前一组工作寄存器区的R0R7中的某一个寄存器。,MOV direct,A;(A)direct,MOV direct,Rn;(Rn)direct,n=07,MOV direct1,direct2;,MOV direct,Ri;(Ri)direct,MOV direct,#data;#datadirect,功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。,MOV Ri,A ;(A)(Ri),i=0,1,MOV Ri,direct ;(direct)(Ri),MOV Ri,#data ;#data(Ri),MOV DPTR,#data16 ;#data16DPTR,唯一的16位数据的传送指令,立即数的高8位送入DPH,立即数的低8位送入DPL。,6堆栈操作指令,MCS-51内部RAM中可以设定一个,后进先出,(LIFO-Last In First Out)的区域称作,堆栈,.,堆栈指针SP指出堆栈的栈顶位置。,(1)进栈指令,PUSH direct,先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中。,例如:,当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令,PUSH A,CC,;(SP)+1=61HSP,(A)61H,PUSH B;,(SP)+1=62HSP,(B)62H,结果:(61H)=30H,(62H)=70H,(SP)=62H,(2)出栈指令,POP direct,SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,栈指针SP减1.,例如:,当(SP)=62H,(62H)=70H,(61H)=30H,执行下列指令:,POP DPH;(SP)DPH,(SP)-1SP,POP DPL;(SP)DPL,(SP)-1SP,结果:(DPTR)=7030H,(SP)=60H,8位地址和数据均由P0口输出,可选用其它任何输出口线来输出高于8位的地址(一般选用P2口输出高8位的地址)。,MOV后,“X”,表示单片机访问的是片外RAM存储器或I/O。,共两条,用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。,(1)MOVC A,A+PC,以PC作基址寄存器,A的内容作为无符号整数和PC中的内容(下一条指令的起始地址)相加后得到一个16位的地址该地址指出的程序存储单元的内容送到累加器A。,注意:PSEN,*,信号有效,。,例如:,(A)=30H,执行地址1000H处的指令,1000H:MOVC A,A+PC,本指令占用一个字节,执行结果将程序存储器中1031H的内容送入A。,优点:,不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。,缺点:,表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。,(2)MOVC A,A+DPTR,以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位的地址,把由该地址指出的程序存储器单元的内容送到累加器A.,例如 (DPTR)=8100H (A)=40H 执行指令,MOVC A,A+DPTR,本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,,因此表格的大小和位置可以在64K程序存储器中任意安排,,一个表格可以为各个程序块公用。,两条指令是在MOV的后面加C,“C”是CODE的第一个字母,即代码的意思。,9字节交换指令,XCH A,Rn,XCH A,direct,XCH A,Ri,例如:,(A)=80H,(R7)=08H,(40H)=F0H,(R0)=30H,(30H)=OFH,执行下列指令:,XCH A,R7 ;(A)与(R7)互换,XCH A,40H ;(A)与(40H)互换,XCH A,R0 ;(A)与(R0)互换,结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H,10半字节交换指令,XCHD A,Ri,累加器的低4位与内部RAM低4位交换。例如:,(R0)=60H,(60H)=3EH,(A)=59H,执行完 XCHD A,RO 指令,则(A)=5EH,(60H)=39H。,3.4.2 算术操作类指令,单字节的加、减、乘、除法指令,都是针对8位二进制无符号数。,执行的结果对Cy、Ac、OV 三种标志位有影响。,但增1和减1指令不影响上述标志。,1加法指令,共有4条加法运算指令:,ADD A,Rn ;(A)+(Rn)A,n=07,ADD A,direct ;(A)+(direct)A,ADD A,Ri ;(A)+(Ri)A,i=0,1,ADD A,#data ;(A)+#dataA,一个加数总是来自累加器A,而另一个加数可由不同的寻址方式得到。结果总是放在A中。,使用加法指令时,,要注意累加器A中的运算结果对各个标志位的影响:,(1)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy,(2)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位),(3),如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志位OV置“1”,否则清“0”OV。,溢出标志位OV的状态,只有在带符号数加法运算时才有意义。当两个带符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围,例(A)=53H,(R0)=FCH,执行指令,ADD A,R0,结果为:(A)=4FH,Cy=1,Ac=0,OV=0,P=1,注意:上面的运算中,由于位6和位7同时有进位,所以标志位OV=0。,例,(A)=85H,(R0)=20H,(20H)=AFH,执行指令:,ADD A,R0,结果为:(A)=34H,Cy=1,Ac=1,OV=1,P=1,注意:由于位7有进位,而位6无进位,所以标志位OV=1,2带进位加法指令,标志位Cy参加运算,因此是三个数相加。共4条:,ADDCA,Rn;(A)+(Rn)+CA,n=07 ADDCA,direct;(A)+(direct)+CA ADDCA,Ri ;(A)+(Ri)+CA,i=0,1,ADDCA,#data;(A)+#data+CA,例:,(A)=85H,(20H)=FFH,Cy=1,执行指令:,ADDC A,20H,结果为:(A)=85H,Cy=1,Ac=1,OV=0,P=1(A中1 的位数为奇数),4十进制调整指令,用于对BCD码十进制数加法运算结果的内容修正。,指令格式:DA A,两个BCD码按二进制相加之后,必须经本指令的调整 才能得到正确的压缩BCD码的和数。,二进制数的加法运算原则并不能适用于十进制数的加法运算,有时会产生错误结果。例如:,(a)3+6=9 0011+0101=1001 运算结果正确,(b)7+8=15 0111+1000=1111 运算结果不正确,(c)9+8=17 1001+1000=00001 C=1 结果不正确,二进制数加法指令不能完全适用于BCD码十进制数的加法运算,,对结果作有条件的修正 十进制调整,出错原因和调整方法:,BCD码只用了了其中的10个,6个没用到的编码。,(1010,1011,1100,1101,1110,1111)为,无效码,凡结果进入或者跳过无效码编码区时,其结果就是错误的,。,调整的方法是把结果加6调整,,即所谓十进制调整修正。,修正方法应是:,(a)累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正。,(b)累加器高4位大于9或进位位Cy=1,则进行高4位加6修正。,(c)加器高4位为9,低4位大于9,则高4位和低4位分别加6修正。,具体是通过执行指令:DA A 来自动实现的,。,例,(A)=56H,(R5)=67H,把它们看作为两个压缩的BCD数,进行BCD数的加法。执行指令:,ADD A,R5,DA A,由于高、低4位分别大于9,所以要分别加6进行十进制调整对结果进行修正。,结果为:(A)=23H,Cy=1,可见,56+67=123,结果是正确的。,5带借位的减法指令,4条指令:,SUBB A,Rn ;(A)-(Rn)-CyA,n=07,SUBB A,direct;(A)-(direct)-CyA,SUBB A,Ri;(A)-((Ri))-CyA,i=0,1,SUBB A,#data ;(A)-#data-CyA,从累加器A中的内容减去指定的变量和进位标志Cy的值,结果存在累加器A中。,如果位7需借位则置“1”Cy,否则清“0”Cy;,如果位3需借位则置“1”Ac,否则清“0”Ac;,如果位6需借位而位7不需要借位,或者位7需借位,位6不需借位,则置“1”溢出标志位OV,否则清“0”OV。,例,(A)=C9H,(R2)=54H,Cy=1,执行指令:,SUBB A,R2,结果:(A)=74H,Cy=0,Ac=0,OV=1(位6向位7借位),6减1指令,4条指令:,DEC A;(A)-1A,DEC Rn ;(Rn)-1Rn,n=07,DEC direct;(direct)-1direct,DEC Ri;(Ri)-1(Ri),i=0,1,减1指令不影响标志位。,7乘法指令,MUL AB ;ABBA,如果积大于255,则置“1”溢出标志位OV,8除法指令,DIV AB ;A/BA(商),余数B,如果B的内容为“0”(即除数为“0”),则存放结果的A、B中的内容不定,并置“1”溢出标志位OV。,3.4.3 逻辑运算指令,1.简单逻辑操作指令,(1)CLR A,功能是累加器,A清“0”,。不影响Cy、Ac、OV等标志。,(2)CPL A,功能是将累加器A的内容,按位逻辑取反,,不影响标志,。,2左环移指令,RL A,功能是累加器A的8位向左循环移位,位7循环移入位0,不影响标志。,3带进位左环移指令,RLC A,功能是将累加器A的内容和进位标志位Cy一起向左环移一位,Acc.7移入进位位Cy,Cy移入Acc.0,不影响其它标志。,4右环移指令,RR A,功能是累加器A的内容向右环移一位,Acc.0移入Acc.7,不影响其它标志。,5带进位环移指令,RRC A,这条指令的功能是累加器A的内容和进位标志Cy一起向右环移一位,Acc.0进入Cy,Cy移入Acc.7。,6累加器半字节交换指令,SWAP A,将累加器A的高半字节(Acc.7Acc.4)和低半字节(Acc.3Acc.0)互换。,例,(A)=0C5H,执行指令:,SWAP A,结果:(A)=5CH,7逻辑与指令,ANL A,Rn ;(A)(Rn)A,n=07,ANL A,direct;(A)(direct)A,ANL A,#data ;(A)#dataA,ANL A,Ri ;(A)((Ri))A,i=01,ANL direct,A;(direct)(A)direct,ANL direct,#data,;(direct)#datadirect,例,(A)=07H,(R0)=0FDH,执行指令:,ANL A,R0,结果:(A)=05H,9逻辑异或指令,XRL A,Rn ;(A)(Rn)A,XRL A,direct ;(A)(direct)A,XRL A,Ri,;(A)((Ri))A,i=0,1,XRL A,#data ;(A)#dataA,XRL direct,A,;(direct)(A)direct,XRL direct,#data,;(direct)#data direct,例 (A)=90H,(R3)=73H 执行指令:,XRL A,R3,结果:(A)=E3H,课堂作业,课后作业,P53-1,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服