1、子情景二 单灯闪烁单灯闪烁项目引入在公共场合,可以看到各种各样的闪灯。单片机控制发光二极管的亮灭。通过8051单片机控制一个发光二极管的亮灭闪烁,点亮时间持续1秒钟。项目要求 项目分析1、单片机简单程序的编写2、延时程序的编写2、单片机与发光二极管的连接 3、二极管闪烁程序项目计划1、设计单片机与二极管的硬件连接图2、编写程序3、运行调试程序1 清清0 0与与取反指令(2 2条)条)取反:取反:CPL A CPL A;/AA/AA例:例:若若A=5CHA=5CH,执行,执行CPL ACPL A 结果:结果:A=A3HA=A3H清清0 0:CLR ACLR A ;0A0AC ComomP Ple
2、ment lement L Logic Operationogic Operation相关知识2 1717条条共有控制程序转移类指令共有控制程序转移类指令(不包括位操作类的转移不包括位操作类的转移指令指令)。此类指令一般不影响。此类指令一般不影响PSWPSW。包括以下类型:包括以下类型:无条件转移和条件转移无条件转移和条件转移相对转移和绝对转移相对转移和绝对转移长转移和短转移长转移和短转移调用与返回指令调用与返回指令 短转移类指令:短转移类指令:AJMP AJMP addr11addr11 长转移类指令:长转移类指令:LJMP LJMP addr16addr16 相对转移指令:相对转移指令:S
3、JMP SJMP relrel 间接转移指令:间接转移指令:JMP JMP A+DPTRA+DPTR(1 1)上面的前三条指令,统统理解成:上面的前三条指令,统统理解成:PCPC值改变,即值改变,即跳转到一个标号处。跳转到一个标号处。那么他们的区别何在呢?那么他们的区别何在呢?v跳转的范围不同。跳转的范围不同。短转移类指令:短转移类指令:AJMP AJMP addr11addr11 长转移类指令:长转移类指令:LJMP LJMP addr16addr16 相对转移指令:相对转移指令:SJMP SJMP relrel转移范围转移范围:2KB2KB64KB64KB-128-128+127+127v
4、指令构成不同。指令构成不同。AJMPAJMP、LJMPLJMP后跟的是后跟的是绝对地址绝对地址,而而SJMPSJMP后跟的是后跟的是相对地址相对地址。v指令长度不同指令长度不同v 原则上,所有用原则上,所有用SJMPSJMP或或AJMPAJMP的地方都可以用的地方都可以用 LJMPLJMP来替代。来替代。间接转移指令:间接转移指令:JMP JMP A+DPTRA+DPTR 这条指令的用途也是跳转,转到什么地方去呢?这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。这可不能由标号简单地决定了。转移地址由转移地址由A+DPTRA+DPTR形成,并直接送入形成,并直接送入PCPC
5、。指令对指令对A A、DPTRDPTR和标志位均无影响和标志位均无影响。本指令可代替众多的判别跳转指令,又称为本指令可代替众多的判别跳转指令,又称为散散转指令转指令,多用于多分支程序结构中。,多用于多分支程序结构中。(2 2)第四条指令与前三条指令相比有所不同第四条指令与前三条指令相比有所不同例例:MOV DPTRMOV DPTR,#TAB#TAB;将;将TABTAB代表的地址送入代表的地址送入DPTRDPTR JMP A+DPTR JMP A+DPTR ;跳转;跳转TAB:AJMP ROUT0 TAB:AJMP ROUT0 ;跳转;跳转ROUT0ROUT0开始的程序段开始的程序段TAB+2:
6、AJMP ROUT1 AJMP ROUT1 ;跳转;跳转ROUT1ROUT1开始的程序段开始的程序段TAB+4:AJMP ROUT2 AJMP ROUT2 ;跳转;跳转ROUT2ROUT2开始的程序段开始的程序段TAB+6:AJMP ROUT3 AJMP ROUT3 ;跳转;跳转ROUT3ROUT3开始的程序段开始的程序段 .ROUT0ROUT0:.ROUT1ROUT1:.ROUT2ROUT2:.ROUT3ROUT3:执行该段程序后,程序将根执行该段程序后,程序将根据据A A中的内容转移到不同的中的内容转移到不同的程序段去执行程序段去执行-散转。散转。A=0,A=0,转转ROUT0ROUT0A
7、=2,A=2,转转ROUT1ROUT1A=4,A=4,转转ROUT2ROUT2A=6,A=6,转转ROUT3ROUT3条件转移指令是指在满足一定条件转移指令是指在满足一定条件条件时进行时进行相对转相对转移移,否则程序继续执行,否则程序继续执行本指令的本指令的下一条指令。下一条指令。一、判一、判A内容是否为内容是否为0转移指令转移指令(2条)条)JZ JZ rel rel ;如果;如果A=0A=0,则转移,否则顺序执行。,则转移,否则顺序执行。JNZJNZ rel rel ;如果;如果A0A0,就转移。,就转移。转移到相对于当前转移到相对于当前PCPC值的值的8 8位移量的地址去。即:。即:新的
8、新的PCPC值值=当前当前PC+PC+偏移量偏移量relrel我们在编写汇编语言源程序时,可以直接写成:我们在编写汇编语言源程序时,可以直接写成:JZJZ 标号标号 ;即转移到标号处。;即转移到标号处。MOV A MOV A,R0R0 JZ L1JZ L1 MOV R1 MOV R1,#00H#00H AJMP L2 AJMP L2 L1 L1:MOV R1:MOV R1,#0FFH#0FFH L2L2:SJMP L2:SJMP L2 END END 在执行上面这段程序前:如果在执行上面这段程序前:如果R0=0R0=0,结果,结果R1=0FFHR1=0FFH。而如果而如果R0R0 0 0,则结
9、果是,则结果是R1=00HR1=00H。把上面的那个例子中的把上面的那个例子中的JZJZ改成改成JNZJNZ,看看程序执行的,看看程序执行的结果是什么结果是什么?如果如果R0=0R0=0,结果,结果R1=00HR1=00H。如果。如果R0 R0 0 0,结果是,结果是R1R1中的中的值为值为0FFH0FFH。CJNE ACJNE A,#datadata,relrel CJNE ACJNE A,directdirect,relrelCJNE RnCJNE Rn,#datadata,relrelCJNE CJNE RiRi,#datadata,relrel此类指令的功能是将两个操作数比较,如果两者
10、此类指令的功能是将两个操作数比较,如果两者相等相等,就,就顺序执行顺序执行,如果,如果不相等不相等,就,就转移转移。同样地,使用时,我们可以将同样地,使用时,我们可以将relrel理解成标号,即:理解成标号,即:CJNE ACJNE A,#data#data,标号,标号CJNE ACJNE A,directdirect,标号,标号CJNE RnCJNE Rn,#data#data,标号,标号CJNE RiCJNE Ri,#data#data,标号,标号利用这些指令,可以判断两数是否利用这些指令,可以判断两数是否相等相等。但有时还想得知两数比较之后但有时还想得知两数比较之后哪个大哪个大,哪个小哪
11、个小,本条指令也具有这样的功能:本条指令也具有这样的功能:如果两数不相等,则如果两数不相等,则CPUCPU还会用还会用CYCY(进位位)(进位位)来反映哪个数大,哪个数小。来反映哪个数大,哪个数小。如果前面的数大,则如果前面的数大,则CY=0CY=0,否则,否则CY=1CY=1。因此在程序转移后再次利用因此在程序转移后再次利用CYCY就可判断出哪个就可判断出哪个数大,哪个数小了。数大,哪个数小了。MOV A,R0 CJNE A,#10H,L1 MOV R1,#0 ;如R0=10H,则不转移R1=00H;AJMP L3L1:JC L2 ;如CY=1即 R010H,则转移 AJMP L3L2:MO
12、V R1,#0FFHL3:SJMP L3因此最终结果是:本程序执行前,如果R0=10H,则R1=00H;如果R010H,则R1=0AAH;如果R010H,则R1=0FFH。DJNZ RnDJNZ Rn,relrelDJNZ directDJNZ direct,relrelDJNZDJNZ指令的执行过程是这样的指令的执行过程是这样的:它将第一个参数中的值它将第一个参数中的值减减1 1,然后看这个值是否等于,然后看这个值是否等于0 0,如果,如果等于等于0 0,就往下执行,如果,就往下执行,如果不等于不等于0 0,就转移,就转移到第二个参数所指定的地方去。到第二个参数所指定的地方去。例:例:DJN
13、Z 10HDJNZ 10H,LOOPLOOP .LOOP:.LOOP:.例例:MOV 23H,#0AHMOV 23H,#0AH CLR A CLR ALOOP:ADD A,23HLOOP:ADD A,23H DJNZ 23H,LOOP DJNZ 23H,LOOP SJMP$SJMP$上述程序段的执行过程是:上述程序段的执行过程是:将将23H23H单元中的数连续相加,存至单元中的数连续相加,存至A A中,每加一次,中,每加一次,23H23H单元中的数值单元中的数值减减1 1,直至减到,直至减到0 0,共加(,共加(23H23H)次。)次。3 3 空操作指令空操作指令(1条)NOP空操作,就是什么
14、事也不干,停一个周期,一般空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。用作短时间的延时。4 4 位操作指令位操作指令(1717条条)MCS-51MCS-51单片机的硬件结构中,有一个位处理器单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,(又称布尔处理器),它有一套位变量处理的指令集,包括包括位位变量变量传送传送、逻辑逻辑运算、控制程序运算、控制程序转移转移等。等。在在MCS-51 MCS-51 中,有一部份中,有一部份RAMRAM和一部份和一部份SFRSFR是具有位是具有位寻址功能的。寻址功能的。v 位操作区位操作区:内部:内部RAMRAM的
15、的20H-2FH20H-2FH这这1616个字节单个字节单元,即元,即128128个位单元个位单元(位地址空间位位地址空间位00007FH)7FH);v 可以位寻址的特殊功能寄存器可以位寻址的特殊功能寄存器:80318031中有一中有一些些SFRSFR是是可以进行位寻址可以进行位寻址的,这些的,这些SFRSFR的特点是的特点是其其字节地址均可被字节地址均可被8 8整除整除,如如A A累加器,累加器,B B寄存寄存器、器、PSWPSW、IPIP(中断优先级控制寄存器)、(中断优先级控制寄存器)、IEIE(中断允许控制寄存器)、(中断允许控制寄存器)、SCONSCON(串行口控制(串行口控制寄存器
16、)、寄存器)、TCONTCON(定时器(定时器/计数器控制寄存计数器控制寄存器)、器)、P0-P3P0-P3(I/OI/O端口锁存器)。端口锁存器)。在进行位处理时,在进行位处理时,CYCY用作用作“位位累加器累加器”。以以PSW中位中位4(RS1)为例为例。直接直接(位位)地址方式:地址方式:如如 D4H;点操作符号方式点操作符号方式:如:如 PSW.4,D0H.4;位名称方式位名称方式:如:如 RS1;用户定义名方式用户定义名方式:如用伪指令:如用伪指令 bitSUB.REG bit RS1定义后,可用定义后,可用SUB.REG代替代替RS1。位地址表达方式位地址表达方式4.1 4.1 位
17、传送指令位传送指令(2条)MOV CMOV C,bitbit;bitbit C CMOV MOV bitbit,C C;C C bitbit这组指令的功能是实现位累加器(这组指令的功能是实现位累加器(CYCY)和其它)和其它位地址之间的数据传递。位地址之间的数据传递。例例:MOV CMOV C,P1.0P1.0;将;将P1.0P1.0的状态送给的状态送给C C。MOV P1.0MOV P1.0,C C ;将;将C C中的状态送到中的状态送到P1.0 P1.0 ;引脚上去。;引脚上去。位清位清0 0指令指令 CLR CCLR C ;使;使CY=0CY=0 CLR bit CLR bit ;使指令
18、的位地址等于;使指令的位地址等于0 0。例例:CLR P1.0 CLR P1.0 ;即使;即使P1.0P1.0变为变为0 0 位置位置1 1指令指令 SETB CSETB C ;使;使CY=1CY=1 SETB bit SETB bit ;使指定的位地址等于;使指定的位地址等于1 1。例例:SETB P1.0 SETB P1.0;使;使P.0P.0变为变为1 14.3 位逻辑运算指令位逻辑运算指令(6条)位与指令位与指令 ANL ANL C C,bitbit ;Cy与指定位的值相与,结果送CyANL ANL C C,/bit/bit ;先将指定的位地址中的值取出后取反,再和Cy相与,结果送回C
19、y。但但注意注意:指定指定的位地址中的值本身并不发生变化。的位地址中的值本身并不发生变化。例例:ANL C,/P1.0位取反指令位取反指令 CPL CCPL C ;使;使CyCy值取反。值取反。CPL bitCPL bit ;使指定的位的值取反。;使指定的位的值取反。例例:CPL P1.0CPL P1.0位或指令位或指令 ORL ORL C C,bitbitORL ORL C C,/bit/bit4.4 4.4 位条件转移指令位条件转移指令(5条)判判CyCy转移指令转移指令 JC relJNC rel 第一条指令的功能是如果Cy=1就转移,否则就顺序执行。第二条指令则和第一条指令相反,即如果
20、Cy=0就转移,否则就顺序执行。同样理解:JNC 标号判位变量转移指令判位变量转移指令 JB bit,relJNB bit,rel JBC bit,rel第一条指令:如果指定的(bit)=1,则转移,否则顺序执行,第二条指令功能相反。同样理解:JB bit,标号第三条指令是如果指定的(bit)=1,则转移,并把该位清0,否则顺序执行。5 5 伪指令伪指令 在汇编时起控制作用,自身在汇编时起控制作用,自身并不产生并不产生机器码,机器码,而仅是为汇编服务的一些指令,称为而仅是为汇编服务的一些指令,称为伪指令伪指令。伪指。伪指令不属于令不属于80C5180C51指令系统。指令系统。5.1 5.1 起
21、始伪指令起始伪指令 ORG(OriginORG(Origin)功能:规定功能:规定ORGORG下面目标程序的起始地址下面目标程序的起始地址。格式:格式:ORG 16ORG 16位位地址地址 ORG 0100H ORG 0100H START START:MOV AMOV A,#05H#05H ADD A ADD A,#08H#08H MOV 20H MOV 20H,A A ORG 0100H ORG 0100H表示该伪指令下面第一条指令的起始地址表示该伪指令下面第一条指令的起始地址是是0100H0100H,即,即MOV AMOV A,#05H#05H指令的第一个字节地址为指令的第一个字节地址为
22、0100H0100H,或标号或标号STARTSTART代表的地址为代表的地址为0100H0100H。5.2 结束伪指令结束伪指令 ENDEND功能:汇编语言源程序的结束标志。功能:汇编语言源程序的结束标志。在在ENDEND后面的指令,汇编程序不再处理后面的指令,汇编程序不再处理。格式:格式:ENDEND5.3 等值伪指令等值伪指令 EQUEQU(EquateEquate)格式:格式:字符名称字符名称 EQUEQU 数据或汇编符号数据或汇编符号例如:例如:PP EQU R0 PP EQU R0 ;PP=R0PP=R0 MOV A MOV A,PP PP ;A R0A R0 这里将这里将PPPP等
23、值为汇编符号等值为汇编符号R0R0,在指令中,在指令中PPPP就可以代替就可以代替R0R0来使用。来使用。5.4 数据地址赋值伪指令数据地址赋值伪指令 DATADATA格式:格式:字符名称字符名称 DATADATA 表达式表达式功能:将数据地址或代码地址赋予规定的功能:将数据地址或代码地址赋予规定的 字符名称。字符名称。5.5定义字节伪指令定义字节伪指令DBDB(Define ByteDefine Byte)格式:格式:DB 8DB 8位二进制数表位二进制数表功能:从指定的地址单元开始,定义若干功能:从指定的地址单元开始,定义若干 个个8 8位内存单元的数据。位内存单元的数据。数据与数据之间用
24、数据与数据之间用“,”分割。分割。例如:例如:ORG 4000HORG 4000H TAB TAB:DB 73HDB 73H,4545,“A A”,“2 2”TAB1 TAB1:DB 101BDB 101B 以上指令经汇编后,将对以上指令经汇编后,将对4000H4000H开始的若干内存单开始的若干内存单元赋值。元赋值。(4000H)=73H(4000H)=73H,(4001H)(4001H):2DH(2DH(注:注:4545的的1616进制数进制数),5.6 定义字伪指令定义字伪指令DWDW(Define WordDefine Word)格式:格式:DW 16DW 16位二进制数表位二进制数表
25、功能:从指定的地址单元开始,定义功能:从指定的地址单元开始,定义 若干个若干个1616位数据。位数据。5.7定义位地址伪指令定义位地址伪指令BITBIT功能:将位地址赋予所规定的字符名称。功能:将位地址赋予所规定的字符名称。AQ BIT P0.0AQ BIT P0.0 DEF BIT 30H DEF BIT 30H 把把P0P00 0的位地址赋给字符的位地址赋给字符AQAQ,把位地址,把位地址30H30H赋给字符赋给字符DEFDEF。在其后的编程中,。在其后的编程中,AQAQ可作可作P0.0P0.0使用,使用,DEFDEF可作位地址可作位地址30H30H使用。使用。汇编语言常用延时程序所用到的
26、指令汇编语言常用延时程序所用到的指令指令指令 占用机器周期数占用机器周期数MOV Rn,#Data 1MOV Rn,#Data 1DJNZ Rn,rel 2DJNZ Rn,rel 2RET 2RET 2NOP 1NOP 17 延时程序延时程序1、设计硬件连接图项目实施 将单片机的P1.7端口与发光二极管的阳极相连,二极管的阴极接地。当P1.7=1时,发光二极管点亮;当P1.7=0时,发光二极管灭。通过延时程序实现二极管持续点亮1S。2、编写延时程序 ORG 0000HLJMP MAIN ORG 1000HMAIN:CLR P1.7 NEXT:CPL P1.7 MOV R2,#8 D1:MOV R1,#249 D2:MOV R0,#250 D3:DJNZ R0,D3 DJNZ R1,D2 DJNZ R2,D1 LJMP NEXTEND3、编写总程序结束语当你尽了自己的最大努力时,失败也是伟大的,所以不要放弃,坚持就是正确的。When You Do Your Best,Failure Is Great,So DonT Give Up,Stick To The End感谢聆听不足之处请大家批评指导Please Criticize And Guide The Shortcomings演讲人:XXXXXX 时 间:XX年XX月XX日
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。