《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx

上传人(卖家):晟晟文业 文档编号:5104377 上传时间:2023-02-11 格式:PPTX 页数:183 大小:13.08MB
下载 相关 举报
《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx_第1页
第1页 / 共183页
《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx_第2页
第2页 / 共183页
《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx_第3页
第3页 / 共183页
《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx_第4页
第4页 / 共183页
《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx_第5页
第5页 / 共183页
点击查看更多>>
资源描述

1、单片机原理及应用技术MCS51程序设计交通信号灯模拟系统设计Project3 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门任务1MCS-51指令系统入门4 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门指令系统概述one由于单片机的硬件只能识别二进制数,因此最初的指令采用二进制表示,后来用八进制和十六进制表示,这些都称为。为了便于阅读和书写,一些厂商根据指令功能和操作对象的不同,给出不同指令的英文缩写符号,称为。用助记符表示的指令称为汇编语言指令。我们将要学习的就是这种指令,需要注意的是,。指令是,一个称为这个单片机的指令系

2、统。单片机的指令系统由其生产厂商定义,因此,不同的单片机具有不同的指令系统。5 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门指令格式two一条指令通常由和两部分组成。,。指令格式如下:操作码 操作数1,操作数2,操作数3。操作码一般使用表示,如JC,MOV,SUBB等。在不同的指令中,操作数的数量从03个不同。它可以是一个数据,也可以是一个地址或寄存器符号。6 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门指令格式two在MCS-51系统中采用,对于不同类型的指令,或者相同指令的操作数类型不同,其长度是可变的,因此,。大部分

3、指令的长度为13个字节。对于双操作数指令来说,一般操作数1是目的操作数,操作数2是源操作数。采用RISC的单片机,每条指令的长度相同,如ARM芯片全部指令都是32位的。7 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门指令中常用符号three符号含义A累加器ACCB寄存器BRi寄存器间接寻址的寄存器(i=0或1)Rn当前工作寄存器R0R7的一个bit具有位寻址功能的位地址rel用补码形式表示的偏移量,范围为 128+127#data指令中的8位立即数,即00HFFH#data16指令中的16位立即数,即0000HFFFFHaddr1111位的目的地址,只限于A

4、CALL和AJMP中使用addr1616位的目的地址,只限于LCALL和LJMP中使用direct8位片内RAM的00H7FH地址范围和SFRMCS-51系列单片机指令中常用助记符及含义8 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门符号含义(X)X的内容(X)以X的内容为地址的内容/加在位地址之前,表示对该位取反#立即数前缀间址寄存器前缀程序计数器PC的当前值箭头右面的数据传送到箭头左面逻辑与运算逻辑或运算逻辑异或运算DPTR16位片外数据指针,范围为0000HFFFFH续上表9 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统

5、入门指令分类four共有111条指令,可分为以下5大类。数据传送类指令(29条)算数运算类指令(24条)逻辑运算类指令与位移指令(24条)控制转移类指令(17条)位操作指令(17条)10 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门寻址方式five大部分指令都需要使用操作数,在执行指令过程中,去何处取得操作数是需要解决的问题,就称为寻址方式。源操作数和目的操作数都存在寻址问题。在MCS-51系列单片机中设有7种寻址方式,即、和。寻址方式越丰富,。11 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门寻址方式相应寻址空间立即寻址

6、程序存储器ROM直接寻址片内RAM寄存器寻址R0R7、A、B、DPTR等寄存器间接寻址片内RAM中00H7FH区间及片外RAM变址寻址程序存储器ROM相对寻址以当前PC值为基址,偏移范围128+127字节的ROM位寻址片内RAM位寻址区202FH及部分SFR寻址方式的设定与有关,MCS-51单片机不同寻址方式对应不同的寻址空间,如表所示。MCS-51系列单片机寻址方式所对应寻址空间12 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门1)立即寻址立即寻址是指。这种形式的操作数称为。为了与直接寻址指令中的直接地址相区别,立即数前面要加“”标志。【例3-1】编号汇编

7、语言指令机器语言指令功能aMOV A,#40H7440H(A)40HbMOV DPTR,#4000H904000H(DPTR)4000H立即寻址方式如表所示:MCS-51指令表中可以查到指令a的机器码为74H data,指令b的机器码为90H data。13 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门项目三寻址方式的例子中均假设PC初值为40H,如图所示:A4074ROMPC 40HDPTR0040ROM90DPHDPLPC 40H立即数是指令的一部分,存放在程序存储器ROM中。在8051单片机的指令系统中,仅有一条指令MOV DPTR,#X的操作数是16

8、位的立即数。(a)MOV A,#40H(b)MOV DPTR,#4000H14 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门2 直接寻址直接寻址是指的寻址方式。指令中出现的是操作数的地址(指令表中以“”标识),此单元地址中的内容才是实际参与运算或操作的操作数。在8051系列单片机中,。【例3-2】编号编号汇编语言指令汇编语言指令机器语言机器语言指令功能指令功能aMOV A,60HE560H(A)(60H)bMOV A,88HE588H(A)(88H)cMOV A,TCONE588H(A)(88H)编号汇编语言指令机器语言指令功能直接寻址方式如表所示:15 项

9、目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门在项目二中,我们知道定时器控制字TCON的地址是88H单元。所以编号b和编号c两条指令的表述是等价的,翻译为机器指令后是相同的。自然,。XX片内RAM60H41HAPC 40HROM60E5 88H TCONSFR41HPC 40HROM88E5A(a)MOV A,60H(b)MOV A,88H/MOV A,CON直接寻址方式具体操作如图所示:对于SFR,可以采用16进制的地址形式表示,也可以用它们各自的名称符号来表示,以增强程序的可读性。16 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令

10、系统入门3 寄存器寻址寄存器寻址是指的寻址方式。指令中用寄存器的名字来表示实际参与运算或操作的操作数的地址。这些寄存器有等。【例3-3】寄存器寻址方式如表所示:编号编号汇编语言指令汇编语言指令机器语言机器语言指令功能指令功能aMOV A,R011101000(E8H)(A)(R0)bINC R300001011(0BH)(R3)(R3)+117 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门指令a(MOV A,R0)中,目的操作数与源操作数均采用寄存器寻址方式,;。指令a的具体操作如图所示,指令b的原理相同:XXPC 40HROM11101000AR1 001

11、R0 000R7 111寄存器寻址示意图18 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门4 寄存器间寻址寄存器间接寻址是指的寻址方式。寄存器中存放的不是操作数本身,而是。寄存器Ri(i=0或1)和DPTR用于寄存器间接寻址。采用寄存器间址寻址方式时,在寄存器前加“”符号,以便区分于寄存器寻址方式。对片内RAM的低128个字节(007FH)进行访问时,通常。通过项目一的学习我们知道,寻址范围可以。对片外RAM的64K存储空间进行访问时,应该使用DPTR作为间址寄存器。DPTR是一个16位寄存器,寻址范围可以达到64K。19 项目三 MCS51程序设计交通信号

12、灯模拟系统设计任务一 MCS-51指令系统入门【例3-4】编号编号汇编语言指令汇编语言指令机器语言机器语言指令功能指令功能aMOV A,R111100111(E7H)(A)(R1)bMOVX A,DPTR11100000(E0H)(A)(DPTR)寄存器间址寻址方式如表所示:两条指令寻址过程类似,这里只以其中一条为例。假设R1中内容为60H,指令a的具体操作如图所示:寄存器间接寻址示意图PC 40HROM1110011160R1A60H片内RAMXX不能通过寄存器间接寻址方式访问特殊功能寄存器SFR。20 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门5 变址

13、寻址变址寻址方式是指后,才能得到真正的操作数地址的寻址方式。在MCS-51系列单片机中,数据指针DPTR和程序计数器PC作为基址寄存器,累加器A用来存放地址偏移量。【例3-5】变址寻址方式如表所示:编号编号汇编语言指令汇编语言指令机器语言机器语言指令功能指令功能aMOVC A,A+PC83H(A)(A)+(PC)bMOVXC A,A+DPTR93H(A)(A)+(DPTR)cJMP A+DPTR73H(PC)(A)+(DPTR)在MCS-51系统中变址寻址的指令只有上表中的3条,只用来对ROM寻址。前2条指令主要用于查表操作,第3条是无条件转移指令。PC的值是随程序的执行情况自动改变的,我们不

14、可以随便地给PC赋值,累加器A是一个8位的寄存器,因此指令a的寻址范围是在当前指令下的256个地址单元。21 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门当前PC的内容为40H,CPU到40H单元取出指令83H后,将PC中的内容0040H与A中内容20H送ALU相加(同时PC指向下一条将要执行的指令),相加得到的结果60H即为我们所要寻找的操作数的地址。随后,60H地址单元的内容被送往累加器A,整条指令完成。我们假设累加器A的内容为20H,指令a的具体操作如图所示:寄存器寻址示意图XX 60H83HPCA0040H 40HROM20HALU22 项目三 MC

15、S51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门6 相对寻址相对寻址是指以当前PC内容加上指令中给出的相对偏移量形成程序转移的目的地址的寻址方式。这种寻址方式专为实现程序的跳转功能而设计。指令的操作数部分给出的是地址的相对偏移量,在MCS-51系列单片机中常以“rel”表示。它是一个带符号的8位二进制补码数,可正可负,范围是128+127,向地址小的方向转移时为负,向地址大的方向转移时为正。【例3-6】编号汇编语言指令机器语言指令功能aSJMP 04H8004H(PC)(PC)+2+04HbJZ rel60 rel若A0时,(PC)(PC)+2若A=0时,(PC)(PC)+

16、2+rel相对寻址方式如表所示:23 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门在指令a中,我们可以看到,。需要注意的是,这里所说的PC的当前值是指执行完本条转移指令后的PC值,即PC值加上该指令字节数2。指令b是一条,以累加器A的内容是否为0作为判断条件。为了方便区分,这里将PC的源地址记作PC源,取出本条指令后PC的值记为PC当前,最后形成的目的地址记为PC目的。指令a的具体操作如图所示:相对寻址示意图我们人工计算目的地址时,会采用公式PC目的=PC源+指令所占字节数+rel。从图3-6中可知,实际上CPU在取出2个字节的指令码后,PC指针已经指向了P

17、C当前的位置,因此,在机器运算中PC目的是由PC当前和rel直接相加得到的。rel=04HPC当前=0042HPC目的 0046HPC当前 0042H0041HPC源 0040H0480ROMALU24 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门7 位寻址位寻址是指,指令表中以“bit”表示。在进行位操作处理时,一般借助进位位Cy作为位操作累加器C。MCS-51系列芯片中有以下两个位寻址区。分布在RAM的80FFH地址单元,它们的地址单元均能被8整除。具体分布情况参见表2-4。地址范围是202FH,共128位,每一位都可以作为独立操作数。具体分布情况参见表

18、2-3。25 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门(1)直接用物理地址00HFFH来表示中有以下四种位地址表示方式:【例3-7】MOV C,2BH指令含义是。2BH是位地址的物理形式,表示片内RAM25H单元的D3位。位寻址方式是位操作指令专用的,不必担心位地址会与直接寻址中的地址混淆。26 项目三 MCS51程序设计交通信号灯模拟系统设计任务一 MCS-51指令系统入门(2)采用地址单元加位数的表示方法。上面的指令可以改写为:MOV C,2BH.3(3)对于SFR可以采用寄存器名加位数的表示方法。(4)采用伪指令定义方式。详见任务三汇编语言程序设计

19、基础中的伪指令部分。【例3-8】MOV C,P3.4,指令含义是将并行接口P3口的D4位内容送Cy。27 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统任务2指令系统28 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统数据传送类指令one根据这些指令作用的不同,将其分为内部、和5类。“”是指将源地址单元内容送到目的单元中去,数据传送后,源地址单元内容保持不变;“”是指将源地址单元内容和目的地址单元内容互换。数据传送类指令中,。其他情况不影响标志位。数据传送类指令是编程时使用最多的指令。MCS-51系列单片机数据传送指令共有29条,用到的助记符有和共8种。29

20、 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统1 内部数据传送指令内部数据传送指令共16条,助记符均为“MOV”,英文为“Move”。(1)以累加器A为目的操作数的传送指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aMOV A,RnE8EF(A)(Rn)11bMOV A,directE5 direct(A)(direct)21cMOV A,RiE6E7(A)(Ri)11dMOV A,#data74 data(A)data2130 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统和源操作数分别采用和方式。由指令的机

21、器语言形式可以看出,这两条指令占用字节数较少,都为1字节;和分别采用和方式,两条指令都占2个字节数。指令a中,n=07,机器语言E8EF分别对应源操作数为R0R7的指令;指令c中,i=0或1,机器语言E6E7对应源操作数为R0和R1的指令。31 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-9】以累加器A为目的操作数的传送指令示例;将工作寄存器R3内容送A,A中内容保持不变MOVA,R3;将30H地址单元的内容送A,30H地址单元的内容保持不变MOVA,40H;以R0的内容为地址,将找到的地址单元中的内容送A。该地址单元的内容及R0的内容均保持不变MOVA,R0;将立

22、即数66H送A,本条指令执行完成后,A中内容为66HMOVA,#66H32 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(2)以寄存器Rn和DPTR为目的操作数的传送指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aMOV Rn,#data787F data(Rn)data21bMOV Rn,directA8AF direct(Rn)(direct)22cMOV Rn,AF8FF(Rn)(A)11dMOV DPTR,#data1690 dataH dataL(DPH)dataH(DPL)dataL32以寄存器Rn为目的操作数的传送

23、指令共3条,以操作数为DPTR的指令有1条。4条指令如表所示。33 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统、和中源操作数分别采用、和方式。这3条指令的功能是将最终获得的8位数据送当前工作寄存器Rn。【例3-10】以寄存器Rn为目的操作数的传送指令示例;将立即数68H送R0,指令执行完成后,R0中内容为68HMOV R0,#68H;将40H地址单元的内容送R1,40H地址单元的内容保持不变MOVR1,40H;将累加器A中内容送R2,A中内容保持不变MOVR2,A工作寄存器Rn之间不能直接传送数据,如“MOV Rn,Rn”和“MOV Rn,Rn”都是错误的。要在工作寄存器

24、之间传递数据,可以由累加器A作为中介。34 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统。它的功能是将16位的立即数#data16送数据指针DPTR,其中高8位dataH送DPH,低8位dataL送DPL。【例3-11】三字节双周期指令示例MOVDPTR,#2046H;将16位的立即数送DPTR。MOVDPH,#20H;数据的高8位20H送DPH。MOVDPL,#46H;数据的低8位46H送DPL。实际上,本条指令的执行过程相当于执行以下两条8位数据传送指令。35 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(3)以直接地址direct为目的操作数的传送

25、指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aMOV direct,#data75 direct data(direct)data32bMOV direct,AF5 direct(direct)(A)21cMOV direct,Rn888F direct(direct)(Rn)22dMOV direct,Ri8687 direct(direct)(Ri)22eMOV direct1,direct285 direct1,direct2(direct1)(direct2)32以直接地址direct为目的操作数的传送指令共5条,这里需要注意的是。5条指

26、令具体情况如表所示:36 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统上述5条指令均是。指令e的源操作数和目的操作数均为直接寻址方式。由此我们可以知道,。direct的地址范围并不是00FFH。在表1-5中我们已经知道片内RAM的80FF地址单元并没有完全定义,对未定义的地址单元进行存取和访问,会得到不确定的数,建议用户不要使用。37 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-12】以直接地址direct为目的操作数的传送指令示例;将立即数68H送片内RAM的80H地址单元。并行接口P0端口的物理地址为80H,指令执行完成后,P0端口的内容为6

27、8H。MOV 80H,#68H;将累加器A的内容送片内RAM的20H地址单元,指令执行完成后,20H地址单元内容与A中内容相同MOV20H,A;将工作寄存器R4的内容送片内RAM的30H地址单元。MOV30H,R4;以R0的内容为地址,将找到的地址单元中的内容送片内RAM的40H地址单元MOV40H,R0;将P0端口的内容送累加器A(累加器A的物理地址为E0H)MOVE0H,80H38 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(4)以寄存器间址Ri为目的操作数的传送指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aMOV Rn

28、,#data787F data(Rn)data21bMOV Rn,directA8AF direct(Rn)(direct)22cMOV Rn,AF8FF(Rn)(A)11dMOV DPTR,#data1690 dataH dataL(DPH)dataH(DPL)dataL32以寄存器间址Ri为目的操作数的传送指令共3条,如表所示。三条指令的功能均是。39 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-13】以寄存器间址Ri为目的操作数的传送指令示例;将立即数68H送工作寄存器R0所指向的地址单元MOV R0,#68H;将片内RAM的68H地址单元的内容送工作寄存器R

29、0所指向的地址单元MOV R0,68H;将累加器A的内容送工作寄存器R1所指向的地址单元MOV R1,A40 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统编号指令格式机器语言指令功能字节数指令周期数aMOVX Ri,AF2F3(Ri)(A)12bMOVX A,RiE2E3(A)(Ri)12cMOVX DPTR,AF0(DPTR)(A)12dMOVX A,DPTRE0(A)(DPTR)122 外部数据传送指令MCS-51系列单片机指令系统中,。助记符均为“”,来自英文“Move External RAM”。指令如表所示:41 项目三 MCS51程序设计交通信号灯模拟系统设计任

30、务二 指令系统由上表我们可以看出,与外部数据存储器之间的数据传送都是以累加器A作为中介进行的。指,即。,即。和采用作为。8位地址和数据均由P0口分时输入或输出。R0和R1都是一个字节,因此前两条指令的寻址范围是256字节。如果超出此范围,一般选用P2口来输出高8位地址,并在MOVX指令前将高8位地址写入P2口。和采用作为,可寻址64KB的外部数据存储器。16位地址读取采用分开的方式进行,低8位地址DPL由P0口输出,高8位地址DPH由P2口输出。42 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-14】将片内存储器40H地址单元的内容送到外部数据存储器2046H单元。

31、这里给出两种实现方式。;40H地址单元的内容送AMOV A,40H;将外部数据存储器2046H高8位20H送P2端口MOV P2,#20H;将外部数据存储器2046H低8位46H送R0MOV R0,#46H;将片内存储器40H地址单元的内容送到片外RAM2046H单元MOVX R0,A43 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统;40H地址单元的内容送AMOVDPTR,#2046;将外部数据存储器2046H高8位20H送P2端口MOVA,40H;将片内存储器40H地址单元的内容送到片外RAM2046H单元MOVXDPTR,A44 项目三 MCS51程序设计交通信号灯模

32、拟系统设计任务二 指令系统编号指令格式机器语言指令功能字节数指令周期数aMOVC A,A+DPTR93(A)(A)+(DPTR)12bMOVC A,A+PC83(A)(A)+(PC)123 访问程序存储器指令,因此,这两条指令也被称为。助记符均为“”,来自英文“Move Code”。指令具体情况如表所示。45 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统指令a和指令b源操作数均采用,寻址过程类似。但是,两条指令的基址寄存器不同,因此指令的适用范围也就不同。DPTR是一个16位的寄存器,寻址范围可达64KB。每次查表前,只需将表头地址送入DPTR,就可以方便地使用本条指令查找

33、存放在程序存储器64KB范围内的远程表格或数据了。,PC的功能比较特殊,它指向的是当前执行指令的地址。由于PC的值已经确定,查表范围是由累加器A决定的,所以本条指令所能查找的数据只能存放在以当前PC值为起始地址的256字节范围内,一般称为本地表。46 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-15】假设表头地址为41H,A的内容为02H,指令a的执行过程如图所示。在指令a执行过程中,首先要通过变址寻址方式获得源操作数的地址,取出DPTR的值与累加器A的内容相加,即50H+02H=52H。然后将52H中的内容送累加器A,PC内容加1,整条指令完成。指令b的寻址和执行

34、过程与指令a相似。需要注意的是,指令b中的PC值是随程序的执行而变化的。A52HXX50HDPTR 41HMOVC A,A+DPTRPC 40H93ROMALU02H指令a执行过程示意图47 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统编号指令格式机器语言指令功能字节数指令周期数aPUSH directC0(SP)(SP)+1,(SP)(direct)12bPOP directD0(direct)(SP),(SP)(SP)1124 堆栈操作指令用于堆栈操作的命令有两条,POP和PUSH命令,它们的操作数只有一个direct,如表所示。48 项目三 MCS51程序设计交通信号

35、灯模拟系统设计任务二 指令系统是。堆栈操作遵循“”原则,对堆栈指针SP所指向的地址单元进行压入和弹出操作,PUSH指令和POP指令要成对使用指令b的功能是将栈顶单元的内容弹出送direct地址单元中。在指令执行过程中,数据首先被弹出,然后堆栈指针减1,指向新的栈顶单元。指令a的功能是将direct地址单元的内容压入堆栈。在指令执行过程中,堆栈指针SP先加1,升高栈顶,指向新数据所要存入的地址单元,然后,将数据压入。49 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-16】假设片外ROM地址单元从2046H开始存放着19的立方值。数据指针的初值为4000H,用查表指令取

36、得2048H地址单元的数据后,要求保持DPTR的初值不变。程序如下,指令执行完成结果为:。;2048H2046H的地址偏移量02H送AMOVA,#02H;保护DPTR的高8位入栈PUSHDPH;保护DPTR的低8位入栈PUSHDPL;改变数据指针DPTR的初值MOVDPTR,#2046H;采用间接寻址方式将2048H地址单元内容送AMOVCA,A+DPTR;弹出DPTR低8位POPDPL;弹出DPTR高8位POPDPH从上边的例子可以看出,在改变DPTR指针的内容前我们先将其初值4000H压入栈中。当获得2048H地址单元的内容即33后,依照“后进先出”的原则将DPTR的初值弹出。50 项目三

37、 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aXCH A,RnC8CF(A)(Rn)11bXCH A,directC5 direct(A)(direct)21cXCH A,RiC6C7(A)(Ri)11dXCHD A,RiD6D7(A)(Ri)3-011eSWAP AC4(A)7-4 (A)3-0115 数据交换指令MCS-51系列单片机指令系统中,数据交换指令有5条。用到的助记符有为“”、“”和“”,这三个助记符来源于均具有“交换”词意的英文单词“Exchange”和“Swap”。指令的具体

38、情况如表所示:51 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统。前3条指令均为整字节交换指令,。后面两条指令是半字节交换指令,指令d是将寻址获得的地址单元内容的低四位与A中的低四位进行交换,高四位保持不变;指令e是将累加器A本身的低四位与高四位交换。52 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统算术运算类指令two在MCS-51系列单片机指令系统中,算术运算类指令共有24条。用到的助记符有和共9种。执行这些指令会影响到PSW的相关标志位,如进位位Cy、辅助进位位AC、溢出位OV和奇偶校验位P,参见项目二程序状态字PSW。下面将24条指令按功能分为加

39、法和减法指令、乘法和除法指令两部分进行讲述。53 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统1 加法和减法指令(1)不带进位的加法运算指令编号指令格式机器语言指令功能字节数指令周期数aADD A,#data24 data(A)(A)+data21bADD A,Rn282F(A)(A)+(Rn)11cADD A,direct25 direct(A)(A)+(direct)21dADD A,Ri2627(A)(A)+(Ri)11不带进位的加法运算指令共4条,使用助记符ADD,来自英文“”。指令具体情况如表所示。这四条指令的功能是将累加器A的内容与源操作数(源操作数可以通过表中

40、4种寻址方式获得)相加,结果存放A中,运算结果将对PSW的相关位产生影响。54 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统这里设8位数从低到高为07位,执行运算指令后,单片机按以下规则对PSW的各标志位置位。不管最初将数定义为无符号数还是有符号数,运算器在做加法运算过程中,总是。在执行加法指令运算时,若结果的第3、7位有进位时,分别将AC、Cy标志位置1;否则置0。有符号数和无符号数判断溢出的方法不同:有符号数:针对二进制数而言的表示方式,有符号数将用最高位作为符号位,“0”代表“+”,“1”代表“-”;其余位均用作数值位,代表数值。无符号数:无符号数的全部二进制均代表数

41、值,没有符号位,即第一个“0”或“1”不表示数值的正负。55 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统对于无符号数加法运算若进位标志位(Cy)1,表示相加结果超出255,产生溢出;若(Cy)0表示无溢出,结果正确。OV对于无符号数判断溢出没有意义。对于有符号数加法运算正数和负数相加不可能产生溢出,两个正数相加为负或两个负数相加为正,则一定产生溢出。溢出位OV是通过公式OV=C7 C6进行置位的,C7表示最高位的进位,C6表示次高位的进位。56 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统上述两条指令运行结束后,A中的内容为B2H,二进制表示为1011

42、0010。运算过程中由于低四位向高四位有进位,故(AC)=1。最高位没有进位,故(Cy)=0。由于C7 C6均为0,OV=C7 C6,故(OV)=0。运算结果中有4个1,故奇偶标志位(P)=0。由此可见,。【例3-17】两个16进制数2BH和86H相加;将加数2BH送累加器AMOVA,#2BH;执行加法指令,2BH与86H相加ADDA,#86H57 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(2)带进位的加法运算指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aADDC A,#data34 data(A)(A)+data+(Cy

43、)21bADDC A,Rn383F(A)(A)+(Rn)+(Cy)11cADDC A,direct35 direct(A)(A)+(direct)+(Cy)21dADDC A,Ri3637(A)(A)+(Ri)+(Cy)11带进位的加法运算指令共4条,使用助记符,来自英文“”。指令具体情况如表所示。注:Cy是指指令开始执行时的进位标志,而不是指令执行过程中产生的Cy通过与(1)中表的对比我们可以知道,带进位的加法运算指令除两个操作数外,还要加上进位表示Cy,因此,这些指令常用于。58 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统。然而,在实际工作中往往是不够的,因此就要进行

44、扩展。一般是将2个8位的数学运算合起来,成为一个16位的运算,这样,能表示的数的范围就能达到065535。下面我们通过例子来理解这种运算方式。先看一个十进制运算的例子。例如:24+28这两个数相加我们很快就能得出运算结果52。事实上我们是这样做的:先做4+8(低位),相加结果为12,我们会做一个进位标记,向前进一位,本位值为2;然后再做2+2(高位),还要加上低位的进位1,高位值为5。59 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统【例3-18】2046H+11E2H,将相加的结果放在片外数据存储器以2046H为起始地址的地址单元。先做46H+E2H=138H,而138H

45、显然超过了0FFH,因此最终保存在A中的是38H,而“1”只能用到PSW中的Cy位表示。然后再做20H+11H+(Cy),结果是32H,所以最终的结果是3238H。MOVDPTR,#2046HMOVA,#46HADDA,#E2HMOVXDPTR,AINCDPTRMOVA,#20HADDCA,#11HMOVXDPTR,A程序段如下:单片机中做16位加法时采用同样的原理,先做低8位的,如果两数相加产生了进位,也要做个标记,这个标记就是。60 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(3)带借位减法运算指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指

46、令周期数指令周期数aSUBB A,#data94 data(A)(A)-data-(Cy)21bSUBB A,Rn989F(A)(A)-(Rn)-(Cy)11cSUBB A,direct95 direct(A)(A)-(direct)-(Cy)21dSUBB A,Ri9697(A)(A)-(Ri)-(Cy)11带借位减法运算指令共4条,使用,来自英文单词“Subtract with Borrow”。Cy定义为最高位的借位。指令具体情况如表所示。这四条指令的功能是用累加器A中的内容减去源操作数所指定的内容,再减去Cy的值,将结果存放在A中。61 项目三 MCS51程序设计交通信号灯模拟系统设计任

47、务二 指令系统。在执行减法指令运算时,若最高位有借位,则(Cy)=1,否则(Cy)=0。若低四位向高四位借位,则(AC)=1,否则(AC)=0。对于无符号数减法运算对于有符号数减法运算有符号数和无符号数判断是否溢出的方法OV=C7 C6,C7表示最高位的借位,C6表示次高位的借位。若(OV)=0,表示运算正确;若(OV)=1,表示运算产生了溢出,结果是错误的。若(Cy)=1,有借位,表示小数减大数,发生溢出,结果是错误的;若(Cy)=0,没有借位,表示大数减小数,运算结果正确。MCS-51系列单片机中没有单独的不带借位减法运算指令。若有运算需要,可以在减法指令之前,先将Cy位清零。62 项目三

48、 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(4)加1指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aINC A04(A)(A)+111bINC Rn080F(Rn)(Rn)+111cINC direct05 direct(direct)(direct)+121dINC Ri0607(Ri)(Ri)+111eINC DPTRA3(DPTR)(DPTR)+112加1指令共5条,所使用的来自英文“Increase”。指令具体情况如表所示。表中5条指令的功能是将源操作数所指定的单元的内容加1。除指令a对奇偶校验位P有影响外,其他指令均不会影

49、响PSW的标志位。另外,。加1指令不适合用来做加法计算,这些指令主要用来修改计数器的内容及地址指针的值。63 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(5)减1指令编号编号指令格式指令格式机器语言机器语言指令功能指令功能字节数字节数指令周期数指令周期数aDEC A14(A)(A)111bDEC Rn181F(Rn)(Rn)111cDEC direct15 direct(direct)(direct)121dDEC Ri1617(Ri)(Ri)111减1指令共4条,所使用的来自英文“Decrease”。指令具体情况如表3-21所示。表中4条指令的功能是将源操作数所指定的单

50、元的内容减1。64 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统(6)十进制调整指令十进制调整指令又称为BCD码调整指令,用于对累加器A中压缩BCD码的加法结果进行修正。它是一条单字节单周期指令,助记符为DA,来自英文“Decimal Adjust”。指令格式为DA A65 项目三 MCS51程序设计交通信号灯模拟系统设计任务二 指令系统BCD码(Binary-Coded Decimal):这种编码形式是利用了四个位单元来储存一个十进制的数码,使得二进制和十进制能够进行快捷的转换。最常用的BCD编码是8421码,它使用09这十个数值的二进码00001001来表示。压缩BCD

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(《单片机原理及应用》项目三-MCS–51程序设计-交通信号灯模拟系统设计课件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|