第2章单片机指令篇
- 格式:doc
- 大小:57.50 KB
- 文档页数:18
单片机实用教程第2章AT89S51单片机原理与基本应用系统本章主要内容1、单片机的内部结构与引脚功能2、单片机存储器空间配臵与功能3、汇编语言指令格式与内部RAM的操作指令4、单片机I/O输入输出端口结构及工作原理5、单片机基本应用系统一、AT89S51单片机内部结构(1)一个8位的CPU;(2)一个片内振荡器及时钟电路;(3)4KB的Flash ROM;(4)128B的内部RAM(5)可扩展64KB外部ROM和外部RAM的控制电路;(6)两个十六位的定时/计数器;(7)26个特殊功能寄存器(双数据指针);(8)4个8位的并行口;(9)一个全双工的串行口;(10)5个中断源,两个外部中断,三个内部中断;(11)内部硬件看门狗电路;(12)一个SPI串行接口,用于芯片的在系统编程(ISP)。
1、电源VCC (P40)——芯片电源,接+5V 。
VSS (P20)——接电源地。
二、AT89S51单片机引脚功能2、时钟XTAL1(P19)——晶体振荡电路的反相器输入端XTAL2(P18)——晶体振荡电路的反相器输出端。
使用内部振荡电路时,该引脚外接石英晶体和补偿电容。
使用外部振荡输入时从XTAL2输入,此时XTAL1需接地。
3、控制控制引脚有4个,先学习其中的两个。
(1)RST/VPD——复位/备用电源RST复位功能是单片机正常工作必不可少的,因为复位可以使单片机从程序的开头运行,使单片机按照人们设计的程序运行,在单片机系统上电开始工作,或单片机系统由于外界干扰偏离正常运行,都需要复位。
AT89S51单片机是高电平复位,只要在该引脚上一段时间(两个机器周期以上)的高电平,单片机就复位。
在正常运行程序时该引脚为低电平。
VPD功能是在VCC掉电情况下,该引脚接备用电源,向片内的RAM供电,使RAM中的数据不丢失。
3、控制(2)EA/VPP——内外ROM选择/EPROM编程电源在通常的应用中EA功能是作为内部和外部ROM的选择端。
引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。
本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。
正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。
2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。
3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。
4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。
5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。
二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。
2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。
3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。
4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。
5.逻辑移位指令:将操作数进行逻辑左移或右移。
三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。
2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。
3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。
4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。
5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。
四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。
2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。
3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。
4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。
单片机常用指令在单片机编程中,常用的指令是一种用于控制微处理器和外围设备工作的基本命令。
掌握常用指令对于单片机的开发和应用至关重要。
本文将介绍一些常用的单片机指令,以帮助读者更好地理解和应用单片机。
一、数据传输指令1. MOVMOV指令用于将一个操作数的值传送到另一个操作数,格式为MOV 目的操作数,源操作数。
例如:MOV A,B表示将寄存器B中的值传送到寄存器A中。
2. LDA和STALDA指令用于将一个内存单元的值传送到累加器A中,格式为LDA 内存单元地址。
例如:LDA 0x1234表示将0x1234地址处的数据传送到累加器A中。
STA指令与LDA相反,用于将累加器A的值传送到一个内存单元中,格式为STA 内存单元地址。
3. LXILXI指令用于将一个16位的立即数装入16位寄存器,格式为LXI 寄存器对,16位立即数。
例如:LXI BC,0x1234表示将0x1234装入BC寄存器。
二、算术逻辑指令1. ADD和SUBADD指令用于将一个操作数的值与累加器A的值相加,结果存放在累加器A中,格式为ADD 操作数。
例如:ADD B表示将寄存器B的值与累加器A的值相加。
SUB指令与ADD相反,用于将一个操作数的值减去累加器A的值,结果存放在累加器A中,格式为SUB 操作数。
2. INR和DCRINR指令用于将一个操作数的值增加1,格式为INR 操作数。
例如:INR C表示将寄存器C的值加1。
DCR指令与INR相反,用于将一个操作数的值减1,格式为DCR操作数。
3. AND和ORAND指令用于将一个操作数的值与累加器A的值按位与运算,结果存放在累加器A中,格式为AND 操作数。
例如:AND D表示将寄存器D的值与累加器A的值按位与运算。
OR指令与AND相反,用于将一个操作数的值与累加器A的值按位或运算,结果存放在累加器A中,格式为OR 操作数。
三、分支指令1. JMPJMP指令用于无条件地跳转到指定的内存地址,格式为JMP 内存地址。
第2章思考题及习题2参考答案一、填空1. 在AT89S52单片机中,如果采用6MHz晶振,一个机器周期为。
答:2µs2. AT89S52单片机的机器周期等于个时钟振荡周期。
答:123. 内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为和。
答:28H,88H4. 片内字节地址为2AH单元最低位的位地址是;片内字节地址为A8H单元的最低位的位地址为。
答:50H,A8H5. 若A中的内容为63H,那么,P标志位的值为。
答:06. AT89S52单片机复位后,R4所对应的存储单元的地址为,因上电时PSW= 。
这时当前的工作寄存器区是组工作寄存器区。
答:04H,00H,0。
7. 内部RAM中,可作为工作寄存器区的单元地址为 H~ H。
答:00H,1FH8. 通过堆栈操作实现子程序调用时,首先要把的内容入栈,以进行断点保护。
调用子程序返回指令时,再进行出栈保护,把保护的断点送回到,先弹出的是原来中的内容。
答:PC, PC,PCH9. AT89S52单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S52单片机的PC是16位的,因此其寻址的范围为 KB。
答:6410. AT89S52单片机复位时,P0~P3口的各引脚为电平。
答:高11. AT89S52单片机使用片外振荡器作为时钟信号时,引脚XTAL1接,引脚XTAL2的接法是。
答:片外振荡器的输出信号,悬空12. AT89S52单片机复位时,堆栈指针SP中的内容为,程序指针PC中的内容为。
答:07H,0000H二、单选1. 程序在运行中,当前PC的值是。
A.当前正在执行指令的前一条指令的地址 B.当前正在执行指令的地址。
C.当前正在执行指令的下一条指令的首地址 D.控制器中指令寄存器的地址。
答:C2. 判断下列哪一种说法是正确的?A.PC是一个可寻址的寄存器 B.单片机的主频越高,其运算速度越快。
C.AT89S52单片机中的一个机器周期为1µsD.特殊功能寄存器SP内存放的是堆栈栈顶单元的内容。
第二章MCS_51指令系统2.1.2 寻址方式关键:有几个放数的地方?如何找到数,数送到什么地方去?数字量0和1与模拟量0伏和5伏的关系。
1.寄存器寻址方式MOV A ,R0 2.直接寻址方式MOV A ,30H 3.寄存器间接寻址方式MOV A ,@R0 4.立即寻址方式MOV A ,#30H 5.位寻址方式ANL C ,30H6.变址寻址方式MOVC A,@A+DPTRMOVC A ,@A+PCJMP A ,@A+DPTR 7.相对寻址方式SJMP rel2.2 数据传送指令2.2.1 内部RAM数据传送指令组1.立即数传送指令MOV A,#dataMOV direct, #dataMOV Rn, #dataMOV @Ri, #dataMOV DPTR,#data162.内部RAM之间的数据传送指令MOV direct2,direct1MOV direct, RnMOV Rn, directMOV direct, @RiMOV @Ri, direct3.累加器的数据传送指令MOV A,RnMOV Rn , AMOV A , directMOV direct , AMOV A , @RiMOV @Ri , A2.2.2 外部RAM数据传送指令组对外部RAM只能使用间接寻址方法,分别使用DPTR和Ri作间址寄存器1.使用DPTR进行间接寻址MOVX A ,@DPTRMOVX @DPTR,A2.使用Ri进行间接寻址MOVX A ,@RiMOVX @Ri,A2.2.3 程序存储器数据传送指令组MOVC A,@A+DPTRMOVC A,@A+PC寻址范围64KB2.2.4 数据交换指令组数据交换指令主要是在内部RAM单元与累加器A这之间进行,有整字节和半字节交换1. 整字节交换指令XCH A,RnXCH A,directXCH A,@Ri2. 半字节交换指令XCHD A, @Ri例:已知:(R0)=20H, (A)=3fH, (20)=75H 求:XCHD A, @R0 后结果结果是:(R0)=20H, (A)=35H, (20)=7fH 3. 高低半字节交换指令SWAP A2.2.5 堆栈操作指令组PUSH direct ;低128单元或专用寄存器POP direct ;2.3 算术运算指令2.3.1 加法指令组ADD A, RnADD A, directADD A, @RnADD A, #data2.3.2 带进位加法指令组ADDC A, RnADDC A,directADDC A,@RnADDC A,#data例:三字节无符号数相加,被加数放在20H~22H单元,加数放在内部RAM中2AH~2CH程序如下:MOV R0,#20HMOV R1,#2AHMOV R7,#03HCLR CLOOP: MOV A,@R0ADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R7,LOOP CLR AADDC A,#00H MOV @R0,A2.3.3 带进位减法指令组SUBB A,RnSUBB A,direct SUBB A,@Rn SUBB A,#data2.3.4 加1指令组INC AINC RnINC directINC @RiINC DPTR减1指令组DEC ADEC RnDEC directDEC @Ri注:没有DPTR减1指令组2.3.6 乘法指令MUL AB两个无符号8位数相乘,16位积低8位放在A中,高8位放B中除法指令DIV A B两个无符号8位数相除,被除数放在A中,除数放B中运算后,商放在A中,余数放B中2.3.7 十进制调整指令DA A对BCD码十进制数加法运算的结果进行修正。
2.4 逻辑运算及移位类指令2.4.1 与运算指令组ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct, AANL direct, #data2.4.2 或运算指令组ORL A,RnORL A,directORL A,@RiORL A,#dataORL direct, AORL direct, #data例:将累加器A的低4位送P1口的低4位,但P1口的高4位需保持不变。
MOV R0, A ;A内容暂存R0ANL A, #0FH ;屏蔽A的高4位,低4位不变ANL P1, #0FOH ;屏蔽P1口的低4位,高4位不变ORL P1, A ;实现低4位的传送MOV A, R0 ;恢复A的内容2.4.3 异或运算指令组XRL A,RnXRL A,directXRL A,@RiXRL A,#dataXRL direct, AXRL direct, #data2.4.4 累加器清0指令CLR A累加器取反指令CPL A2.4.5 移位指令组RL A ;循环左移RR A ;循环右移RLC A ;带进位循环左移RRC A ;带进位循环右移2.5 控制转移指令2.5. 1 无条件转移指令组1.长转移指令 LJMP addr162.绝对转移指令 AJMP a ddr113.短转移指令 SJMP rel4.变址寻址转移指令JMP @A+DPTR 2.5.2 条件转移指令组1.累加器判零转移指令JZ relJNZ rel2.数值比较转移指令CJNE A ,#data ,relCJNE A ,direct ,relCJNE Rn ,#data ,relCJNE @Ri ,#data ,rel3.条件转移指令DJNZ Rn ,relDJNZ direct ,rel2.5.3 子程序的调用与返回指令组1.子程序的概念2.子程序调用指令ACALL addr11LCALL addr163.返回指令RET ;子程序返回指令RETI ;中断服务子程序返回指令2.5.4 空操作指令NOP2.6 布尔变量操作类指令出于控制应用的需要,MCS-51具有较强的布尔变量处理能力。
所谓布尔变量也即开关变量,以位(bit)为单位进行运算和操作。
在硬件方面,为了实现布尔变量处理,8051有一个布尔处理机,所谓布尔处理机实际上就是一位的微处理机,它以进位标志作为累加位,以内部RAM位寻址区的128个可寻址位作为存储位。
在软件方面, 8051的指令系统中有一个进行布尔变量操作的指令子集,可以进行布尔变量的传送、运算及控制转移等操作。
这些指令通常称之为位操作指令,也就是本节所称的布尔变量操作指令。
2 。
6。
1 位传送指令组位传送操作就是可寻址位与累加位CY之间的相互传送,共有两条指令:MOV C,bit ;CY=BITMOV bit,C ; BIT=CY指令中的C就是CY。
由于没有两个可寻址位之间的传送指令,因此它们之间无法实现直接传送。
如需要这种传送,应使用这两条指令以CY作中介实现之。
例如将20H位的内容传送5A位。
MOV 10H,C ;暂存CY内容MOV C,20H ;20H位送CY MOV 5AH,C ;CY送5AH位MOV C,10H ;恢复CY内容2.6.2 位置位复位指令组指令对CY及可寻址位进行置位或复位操作。
共有四条指令:CLR C ;CY= 0CLR bit ;bit=0SETB C ;CY=1SETB bit ;bit=12.6.3 位运算指令组位运算都是逻辑运算,有与、或、非三种,共六条指令。
ANL C,bitANL C,/bitORL C,bitORL C,/bitCPL CCPL bit布尔变量操作指令中,没有位的异或运算,如需要时可由多条上述位操作指令实现。
例如E、B、D代表位地址,进行E、B内容的异或操作,即D+MOV C,BANL C,/EMOV D,CMOV C,EANL C,/BORL C, DMOV D,C ;异或结果送D位通过位逻辑运算,可以对各种组合逻辑电路进行模拟,即用软件方法来获得组合电路的逻辑功能。
2.6.4 位控制转移指令组位控制转移指令就是以位的状态作为实现程序转移的判断条件。
对这些指令分别说明:1.以C状态为条件的转移共两条指令:JC relJNC rel2.以住状态为条件的转移指令共三条指令:JB bit,rel ;位状态为1转移JNB bit,rel ;位状态为0转移JBC bit,rel ;位状态为1转移,并使该位清0练习题1. 什么是指令系统、机器语言和汇编语言?2. 在单片机应用中广泛使用何种语言?它们能直接执行吗?为什么?3. 简述MCS-51指令的格式。
4. 简述MCS-51的指令寻址方式。
5. 如若访问专用寄存器,可使用那些寻址方式?6. 如若访问外部RAM单元,可使用那些些寻址方式?7. 如若访问内部RAM单元,可使用那些寻址方式?8.如若访问内外程序存储器,可使用那些寻址方式?9. 说明十进制调整的原因和方法。
10. 说明MCS-51的布尔处理机功能。
11. 试分析以下程序段的执行结果MOV SP,#3AHMOV A,#20HMOV B,#30HPUSH ACCPUSH BPOP ACCPOP B12. 已知(A)=7AH,(R0)=30H,(30H)=A5H,(PSW)=80H,请填写各条指令的执行结果。
(1)XCH A,R0(3)XCH A,30H(4)XCHD A,@R0(5)SWAP A(6)ADD A,R0(7)ADD A,30H(8)ADD A,#30H(9)ADDC A,30H(10)SUBB A,30H(11)SUBBA,#30H13.已知(30H)=40H,(40H)= 10H,(10H)=00H,(Pl)=CAH,请写出执行以下程序段后各有关单元的内容。
MOV R0,#30HMOV A,@R0MOV R1,AMOV B,@R1MOV @R1,P1MOV P2,P1`MOV 10H,#20HMOV 30H,10H14.已知(A)=83H,(R0)=17H,(17H)=34H,请写出执行完下列程序段后A的内容。
ANL A,#1 7HORL I 7H,AXRL A,@R0CPL A15. 阅读下列程序说明其功能MOV R0,#30HMOV A,@R0RL AMOV R1,ARL ARL AADD A,RIMOV @RO,A功能是:。