单元三MCS-51单片机指令系统.ppt
《单元三MCS-51单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《单元三MCS-51单片机指令系统.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单元三MCS-51单片机指令系统 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望3.1任务二任务二P1口外接口外接8只只LED发光二极管模拟彩灯发光二极管模拟彩灯学习目标:通过学习任务二的完成方法,掌握MCS-51单片机的数据传送指令的功能及MCS-51单片机的寻址方式。任务描述:利用P1口外接的8只LED发光二极管模拟彩灯。常见的彩灯模式有:流水式彩灯、追逐式彩灯、累积式彩灯、开幕式与闭幕式彩灯以及将上述模式组合而成的复合式彩灯。大多数的彩灯都是采用单片机控制的
2、,简单的彩灯单片机的控制程序也较为简单,复杂的彩灯单片机控制程序也较为复杂。3.1.1 3.1.1 硬件电路硬件电路1、硬件电路2、工作原理 当P1。0P1。7中的某端口为低电平时,对应的发光二极管亮,为高电平灭。我们只要控制P1口各位的电平状态,就可以控制8只LED的亮与灭。例如使(P1)=01010101B=55H,D7、D5、D3、D14只LED亮,D6、D4、D2、D04只LED灭,从效果上看亮与灭是相间隔的;反之,使(P1)=10101010B=AAH,则另外4只LED亮,若反复以一定时间间隔不断从P1口轮流输出55H和AAH,则P1口上8只LED会呈现流水彩灯的效果。1 1)将立即
3、数送)将立即数送P P1 1口的程序口的程序ORG0000HORG0000H;定义程序从程序存贮器定义程序从程序存贮器00000000H H单元开始存放单元开始存放LOOPLOOP:MOVPMOVP1 1,#55H#55H;立即数立即数5555H H送送P P1 1口,口,4 4只只LEDLED亮亮SJMPLOOPSJMPLOOP;原地踏步原地踏步ENDEND;程序结束程序结束2 2)通过累加器)通过累加器A A控制控制P P1 1口的程序口的程序ORG0000HORG0000HLOOPLOOP:MOVAMOVA,#0AAH#0AAH;将立即数将立即数AAHAAH送累加器送累加器A AMOVP
4、MOVP1 1,AA ;累加器累加器A A中的数送中的数送P P1 1端口端口SJMPLOOPSJMPLOOP ;转移到转移到LOOPLOOPENDEND 3.1.23.1.2控制程序控制程序控制程序控制程序3 3)流水式彩灯程序流水式彩灯程序流水式彩灯程序流水式彩灯程序 开始开始开始开始5555HH送送送送P P1 1口口口口延时延时延时延时0.30.3秒秒秒秒AAHAAH送送送送P P1 1口口口口延时延时延时延时0.30.3秒秒秒秒流水式彩灯程序流程图流水式彩灯程序流程图流水式彩灯程序流程图流水式彩灯程序流程图 ORG0000HORG0000HLOOPLOOP:MOVP1,#55HMOV
5、P1,#55H;将立即数将立即数将立即数将立即数5555HH送送送送P P1 1端口端口端口端口LCALLTIMELCALLTIME;调延时子程序调延时子程序调延时子程序调延时子程序TIMETIMEMOVP1,#0AAHMOVP1,#0AAH;将立即数将立即数将立即数将立即数AAHAAH送送送送P P1 1端口端口端口端口LCALLTIMELCALLTIME;调延时子程序调延时子程序调延时子程序调延时子程序TIMETIMESJMPLOOPSJMPLOOP;转移到转移到转移到转移到LOOPLOOPTIMETIME:MOVR6,#200MOVR6,#200;延时子程序延时子程序延时子程序延时子程序
6、TIMETIMETIME1TIME1:MOVR7,#200MOVR7,#200TIME2TIME2:NOPNOPNOPNOPNOPNOPDJNZR7,TIME2DJNZR7,TIME2DJNZR6,TIME1DJNZR6,TIME1RETRETENDEND4 4)开幕式与闭幕式彩灯程序)开幕式与闭幕式彩灯程序)开幕式与闭幕式彩灯程序)开幕式与闭幕式彩灯程序ORGORG0000H0000HLJMPLJMPMAINMAIN;跳转到主程序跳转到主程序跳转到主程序跳转到主程序ORGORG0030H0030HMAINMAIN:MOVMOVR0,#8R0,#8;R0R0送循环次数送循环次数送循环次数送循环
7、次数8 8MOVMOVDPTR,#TABDPTR,#TAB;给数据指针赋值给数据指针赋值给数据指针赋值给数据指针赋值LOOPLOOP:MOVMOVA,#00HA,#00H;MOVCMOVCA,A+DPTRA,A+DPTRMOVMOVP1,AP1,ALCALLLCALLTIMETIMEINCINCDPLDPLDJNZDJNZR0,LOOPR0,LOOPSJMPSJMPMAINMAINTIMETIME:MOVMOVR6,#200R6,#200TIME1TIME1:MOVMOVR7,#200R7,#200TIME2TIME2:NOPNOPNOPNOPNOPNOPDJNZDJNZR7,TIME2R7,
8、TIME2DJNZDJNZR6,TIME1R6,TIME1RETRETTABTAB:DBDB 81H,0C3H,0E7H,0FFH,18H,3CH,7EH,0FFH81H,0C3H,0E7H,0FFH,18H,3CH,7EH,0FFHENDEND用“伟福”模拟仿真软件进行程序的编辑、编译。打开“ISP下载软件”将目标文件下载到ISP-4实验开发板上的AT89S51单片机芯片,观察程序运行结果。要解决的问题:1、什么是数据传送操作与数据传送指令?MCS-51单片机 有哪些数据传递指令?2、什么是指令的寻址方式?MCS-51单片机指令系统采 用了哪几种寻址方式?3、指令在CPU内部的执行过程?3.
9、1.33.1.3源程序的编辑、编译、下载源程序的编辑、编译、下载源程序的编辑、编译、下载源程序的编辑、编译、下载3.1.4相关知识相关知识1.单片机内部数据是怎样传送到端口使二极管发亮的?单片机内部的端口寄存器与片外引脚是直接相连的,数据通过单片机内部数据总线传送到端口寄存器(用数据传送指令完成数据的传送),结合发光二极管硬件电路,二极管便发亮了。2.什么是数据传送操作与数据传送指令?MCS-51单片机有哪些数据传递指令?数据传送操作:在计算机中将数据信息从源存储地址传送到目标存储地址的操作 数据传送指令:完成数据传送的指令 MCS-51单片机的数据传送指令共有29条:(1)以累加器A为目的操
10、作数类指令(4条)MOVA,data;(data)(A)直接单元地址中的内容送到累加器AMOVA,#data;#data(A)立即数送到累加器A中MOVA,Rn;(Rn)(A)Rn中的内容送到累加器A中MOVA,Ri;(Ri)(A)Ri内容指向的地址单元中的内容送到累加器A。例如:任务中“累加器A控制P1口的程序”里有一条MOVA,#0AAH指令就属于此类。(2)以寄存器Rn为目的操作数的指令(3条)这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式:MOVRn,data;(data)(Rn)直接寻址单元中的内容送到寄存器Rn中MOVRn,#dat
11、a;#data(Rn)立即数直接送到寄存器Rn中。MOVRn,A;(A)(Rn)累加器A中的内容送到寄存器Rn中。例如:任务中“开幕式和闭幕式彩灯程序”里的MOVR6,#200MOV R7,#200指令属于此类。(3)以直接地址为目的操作数的指令(5条)这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中 MOVdata,data;(data)(data)直接地址单元中的内容送到直接地址单元。MOVdata,#data;#data(data)立即数送到直接地址单元。MOVdata,A;(A)(data)累加器A中的内容送到直接地址单元。MOVdata,Rn;(Rn)(
12、data)寄存器Rn中的内容送到直接地址单元。MOVdata,Ri;(Ri)(data)寄存器Ri中的内容指定的地址单元中数据送到直接地址单元。例如:任务中“流水式彩灯程序”里的MOVP1,#0AAH。任务中“开幕式和闭幕式彩灯程序”里MOVP1,A指令属于此类。应该注意,这里DATA是用寄存器的名字表示的。(4)以间接地址为目的操作数的指令(3条)这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。MOVRi,data;(data)(Ri)直接地址单元中的内容送到以Ri中的内容为地址的RAM单元。MOVRi,#data;#data(Ri)立即数送到以Ri中的内容为地址
13、的RAM单元。MOVRi,A;(A)(Ri)累加器A中的内容送到以Ri中的内容为地址的RAM单元。(5)查表指令(2条)这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:MOVCA,A+DPTR;(A)+(DPTR)(A)表格地址单元中的内容送到累加器A中。MOVCA,A+PC;(PC)+1(A),(A)+(PC)(A)表格地址单元中的内容送到累加器A中。例如:在任务中“开幕式闭幕式彩灯程序”里就有MOVCA,A+DPTR指令讲预先制好的表格数据取出来。(6)累加器A与片外数据存储器RAM传送指令(4条)这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器
14、寻址方式:MOVXDPTR,A;(A)(DPTR)累加器中的内容送到数据指针指向片外RAM地址中。MOVXA,DPTR;(DPTR)(A)数据指针指向片外RAM地址中的内容送到累加器A中。MOVXA,Ri;(Ri)(A)寄存器Ri指向片外RAM地址中的内容送到累加器A中。MOVXRi,A;(A)(Ri)累加器中的内容送到寄存器Ri指向片外RAM地址中。(7)堆栈操作类指令(2条)这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。PUSHdata;(SP)+1(SP),(data)(SP)堆栈指针首先加1,直接寻址单元中的数据送到堆
15、栈指针SP所指的单元中。POPdata;(SP)(data)(SP)-1(SP),堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作。(8)交换指令(5条)这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。XCHA,Rn;(A)(Rn)累加器与工作寄存器Rn中的内容互换。XCHA,Ri;(A)(Ri)累加器与工作寄存器Ri所指的存储单元中的内容互换。XCHA,data;(A)(data)累加器与直接地址单元中的内容互换。XCHDA,Ri;(A3-0)(Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换。SWAPA;(A3-0)(A7-4
16、)累加器中的内容高低半字节互换。(9)16位数据传送指令(1条)这条指令的功能是把16位常数送入数据指针寄存器。MOVDPTR,#data16;(data16)H(DPH);(data16)L(DPL)。16位常数的高8位送到DPH,低8位送到DPL。3、什么是指令的寻址方式?MCS-51单片机指令系统采用了哪几种寻址方式?寻址的“地址”即为操作数所在单元的地址,绝大部分指令执行时都需要用到操作数,那么到哪里去取得操作数呢?最易想到的就是告诉CPU操作数所在的地址单元,从那里可取得响应的操作数,这便是“寻址”之意。操作数是指令的重要组成部分,指出了参与操作的数据或数据的地址。寻找操作数地址的方
17、式称为寻址方式。一条指令采用什么样的寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。MCS-51指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。例如指令:MOVA,2BH执行的操作是将内部RAM中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。设内部RAM3AH单元的内容是88H,那么指令MOVA,2BH的执行过程如立即数寻
18、址示意图所示。(1)直接寻址直接寻址示意图直接寻址示意图ABHABH2 2BHBH内部内部内部内部 RAMRAMABHABHA A 寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如指令:MOVR1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。如果程序状态寄存器PSW的RS1RS0=10(选中第二组工作寄存器,对应地址为10H17H),设累加器A的内容为4AH,则执行MOVR1,A指令后,内部RAM11H单元的值就变为4AH,如寄存器寻址示意图所示。(2)寄存器寻址寄存器
19、寻址示意图寄存器寻址示意图4 4AHAH1111HH内部内部内部内部 RAMRAM4 4AHAHA AR1R11 10 0RS1RS1 RS0RS0(3)寄存器间接寻址寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。注意:间接寻址寄存器前面必须加上符号“”。例如,指令MOV A,R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A
20、中。设 R0=3AH,内部RAM 3AH中的值是65H,则指令MOV A,R0的执行结果是累加器A的值为65H,该指令的执如右图。6565HH3 3AHAH内部内部内部内部 RAMRAM3 3AHAHA AR0R06565HH寄存器间接寻址示意图寄存器间接寻址示意图寄存器间接寻址示意图寄存器间接寻址示意图(4)立即数寻址立即数寻址是指将操作数直接写在指令中。例如指令:MOVA,#2BH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。注意:立即数前面必须加“#”号,以区别立即数和直接地址。该指令的执行过程如立即数寻址示意图所示。2 2BHBHA A2 2BHBH立即数寻址示意图立
21、即数寻址示意图 变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。例如,指令MOVCA,A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。(5)变址寻址(6)变址寻址过程AAHAAH程序存储区程序存储区程序存储区程序存储区0202HHA A11121112HH1111HHDPTRDPTR1010HH 11121112HH设累加器A=02H,DPTR=1110H,外部ROM中,1112H单元的内容是AAH,则指令MOVC
22、A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如下图所示。位寻址是指按位进行的寻址操作,MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。位寻址区包括专门安排在内部RAM中的两个区域:一是内部RAM的位寻址区,地址范围是20H2FH,共16个RAM单元,位地址为00H7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址。(7)位寻址内部内部内部内部RAMRAM2727HH二进制二进制二进制二进制 110 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 例如,指令SETB3
23、DH执行的操作是将内部RAM位寻址区中的3DH位置1。设内部RAM27H单元的内容是00H,执行SETB3DH后,由于3DH对应内部RAM27H的第6位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图3.7所示。相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。例如,指令SJMP54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。(7)相对寻址相对寻址过程5454HH程序存储区程序存储区程序存储区程序存储区5454HHA A20012001HH
24、2020HHPCPC0202HH 20562056HHXXXX8080HH20562056HH20002000HH设指令SJMP54H的机器码80H54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。该指令的执行过程如图所示。指令的书写必须遵守一定的规则,指令描述的约定如下。符符符符 号号号号含含含含义义义义RnRn表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的
25、工作寄存器R0R7R0R7RiRi表示作为间接寻址的地址指针表示作为间接寻址的地址指针表示作为间接寻址的地址指针表示作为间接寻址的地址指针R0R1R0R1#datadata表示表示表示表示8 8位立即数,即位立即数,即位立即数,即位立即数,即0000HFFHHFFH表示表示表示表示1616位立即数,即位立即数,即位立即数,即位立即数,即00000000HFFFFHHFFFFHaddr16addr16表示表示表示表示1616位地址,用于位地址,用于位地址,用于位地址,用于6464KK范围内寻址范围内寻址范围内寻址范围内寻址addr11addr11表示表示表示表示1111位地址,用于位地址,用于位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元 MCS 51 单片机 指令系统
限制150内