您的当前位置:首页正文

单片机复习资料

2022-09-11 来源:年旅网
1.三总线结构包括:数据总线DB、地址总线AB、控制总线CB。 2.单片机的组成:微处理器、存储器、I/O接口电路。(如果将这三者集成在一块芯片上,简称单片机。) 3.控制器的组成:指令寄存器IR、指令译码器ID及定时与控制电路。 4.程序计数器PC主要用来存放即将执行的指令地址,即下一条指令地址。 5.存储器的主要指标是容量和存取速度。

6.根据存储器的位置分类:内存储器(直接与CPU连接)和外存储器(不能直接参与计算机的运算)。 7.某单片机有8跟数据线,13根地址线,则芯片的存储容量为2^13X8位,即8KB。(1KB=2^10X8位) 8.进制转换:11.75D=1011.11B(首先11D=1011B,0.75D=?B。0.75X2=1.5,0.5X2=1,所以小数部分0.11B)。 9.原码、反码、补码:负数的反码的符号位和其原码符号位相同,其余数值取反;负数的补码是其反码加1。(最高位符号0表示正,1表示负。正数的反码补码不变。负数的补码取反加一是原码。)

10.8032/8752/8052的不同点:主要差别在存储器的配置上不同。8052内部设有8KB的掩膜ROM程序存储器,8032片内没有程序存储器,而8752则是以8KB可编程的EPROM代替了8052内部8KB的掩膜ROM。 11.MCS-51的40根引脚中包括32根并行I/O引脚,4根控制线引脚,2根电源线引脚,2根外接晶振引脚。 12.输入/输出端口P0(低8位地址及数据总线)、P1、P2(高8位的地址字节输出口)、P3。

13.控制信号引脚RST/VPD(复位信号输入端,在Vcc掉电时,此引脚可接上备用电源。有上电自动复位和按键手动复位两种工作方式。),ALE/PROG(ALE为低8位地址锁存允许输出信号,PROG是编程脉冲输入端),PSEN(存储器读选通信号输出端)和EA/VPP(EA程序存储器控制信号。使用8032单片机时,EA必须接低电平;当EA为高电平时,加电后,CPU从片内程序存储器的0000H单元开始执行)。 14时钟电路引脚XTAL1(19脚,当采用外部晶振时,此引脚接地)和XTAL2(18脚)。 15.中央处理单元CPU由运算器和控制器等部件组成。 16.运算器:累加器ACC(8位寄存器)、B寄存器(用于乘除操作)、程序状态字寄存器PSW(8位特殊功能寄存器,各位包含了程序执行后的状态信息。具体见下一条)。 17.CY(PSW.7):进位/错位标志;AC(PSW.6):辅助进位/错位标志;F0(PSW.5):用户定义标志位;RS1/RS0(PSW.4、PSW.3);OV(PSW.2):溢出标志位;D1(PSW.1):未定义位;P(PSW.0):奇偶校验标志位。 18.8052单片机4个寄存器组中的每一组都可被选为CPU的工作寄存器,是通过程序状态寄存器中的PSW.3(RS0)和PSW.4(RS1)两位的状态来确定。通过程序改变RS1、RS0的状态,就可更换工作寄存器组。 19.寄存器间接寻址可以用16位的地址指针DPTR做间址寄存器,也可用8位的R0或R1做间址寄存器。 20.堆栈实际是一个RAM区域。堆栈指针寄存器SP是一个8位的专用寄存器,用于指明堆栈顶部在内部RAM中的位置。

21.数据存储器地址指针DPTR是一个16位专用寄存器,由两个8位的寄存器DPH与DPL组成。作用:(1)用来存放16位的地址;(2)当对64KB外部数据存储器空间寻址时,作为间址寄存器使用,而在访问程序存储器时,DPTR作为基址寄存器使用。

22.指令周期:CPU取出一条指令至该指令执行完所需的时间称为指令周期;机器周期:CPU完成一个基本操作所需要的时间;振荡周期:振荡信号源为单片机提供的定时信号的周期,为振荡频率的倒数。一个机器周期包括12个振荡周期。例:12MHz的时钟频率,振荡周期T=1/12*10^(-6)s,机器周期T’=12*T=1us。 23. CPU通过指令MOVC访问程序存储器空间,通过MOV访问片内数据存储器空间,通过MOVX访问片外数据存储器空间。 24.机器码指令:能够直接被计算机硬件识别和执行。汇编语言指令:必须通过某种手段把它变成机器码指令才能被机器执行。 25.MCS-51单片机的指令由操作码和操作数两大部分组成。 26.7种寻址方式:立即寻址(MOV A,#73H),直接寻址(MOV A,60H),寄存器寻址(INC R0),寄存器间接寻址(MOV A,@R0),变址寻址(MOVC A,@A+PC:自动加的程序),相对寻址(目的地址=源地址+2+rel);隐含寻址(逗号后面的是DPTR/A/B/C)。

27.在指令语句中,判断45H代表什么,无非就是“目的地址”、“源地址”、“源数据”。

27.在数据传送类指令中,MOVC和MOVX指令由一个共同点就是目的地址或源地址/源操作数中有A。 28.进栈PUSH direct:SP (SP)+1,(SP) (direct);出栈POP direct:(direct) ((SP)),(SP) (SP)-1。

29.若D7位产生进位,则CY置1,否则CY置0;若D3位产生进位,则AC置1,否则置0;若D6或D7位有且只有一个进位时,OV置1,否则置0;若A中1的个数为奇,则P置1,否则P置0。 30.算数运算类指令:ADD A,Rn:A (A)+(Rn);ADDC A,Rn:A (A)+(Rn)+(CY);SUBB A,Rn:A (A)-(Rn)-(CY);INC A:A (A)+1;DEC A:A (A)-1;MUL AB:AB (A)x(B);DIV AB:AB (A)/(B);DA A:对(A)进行十进制调整。 31.逻辑运算类指令:ANL A,Rn:A (A) (Rn);ORL A,Rn:A (A) (Rn);XRL A,Rn:A (A) (Rn)。

32.控制转移类指令:JMP @A+DPTR:PC (A)+(DPTR)。 33.从子程序返回指令:RET;从中断返回指令:RET1.

第 1 页 共 3 页 版权所有,违者必究

34.汇编语言是一种面向机器的语言,它的助记符指令和机器保持着一一对应的关系。

35.伪指令不产生目标代码,不影响程序的执行。伪指令和指令的区别:指令是在程序运行期间由计算机来执行的,而伪指令是在汇编程序对源程序进行汇编时处理的操作,完成诸如数据定义、存储器分配指示、程序开始结束等功能。

36.子程序:在程序设计中会遇到多次使用同一程序的情况,为了简化程序的设计,可以将这些相对独立的多次使用的程序用作子程序。对子程序的要求:(1)必须标明子程序的入口地址,以便程序调用;(2)必须以返回指令RET结束子程序;(3)一般在调用子程序前要设置子程序的入口参数和出口参数。 37.中断系统包括的寄存器有:中断允许控制寄存器IE、中断优先级控制寄存器IP。 38.MCS-51中断系统有6个中断源,2个优先级。

39.外部中断请求INTO或INT1有两种出发方式:电平触发及边沿触发。 40.同一优先级中的中断源优先权排队由中断系统的硬件确定。

41.TF0/TF1:定时器/计数器0、1溢出中断标志位。当定时器/计数器0或定时器/计数器1计数溢出时,由硬件将TF0/TF1置1,向CPU申请中断。CPU相应中断后由硬件自动清除TF0、TF1。 42.TMOD为模式控制寄存器,高4位、低4位分别用于定时器/计数器1和0(即T1、T0)。 43.C/T=1为计数器方式,C/T=0为定时器方式。

44.TCON的高4位用于控制定时器0、1的运行;低4位用于控制外部中断,与定时器/计数器无关。 45.定时器/计数器0.1的工作方式:工作方式0是13位的,M1=0,M0=0;1是16位的M1=0,M0=1;2是8位的M1=1,M0=0;3只对定时器/计数器0有效,分为两个8位定时器/计数器。 46.定时器/计数器的初始化步骤:(1)确定工作方式、操作模式、启动控制方式。(2)设置定时器或计数器的初值。(3)根据要求是否采用中断方式——直接对IE寄存器赋值。(4)启动定时器工作。 47.串行通信根据数据传送时的编码格式不同分为异步通信和同步通信两种方式。 48.串行口中还有两个特殊功能寄存器SCON(复位后SCON的所有位清零)、PCON。

49.MCS-51单片机扩展外部设备中,P2口作为地址总线的高8位A8-A15,P0口通过地址锁存器作为地址总线的低8位A0-A7同时兼作数据总线D0-D7。

50.常用的片选方法有两种:线选法和全地址译码法。 51.74LS138是3-8译码器。

52.8255A是8位可编程并行接口芯片(PA:A组8位I/O口;PB:B组8位I/O口;PC:C组8位I/O口,可分为两个4位口)。

53.8155有3个可编程的通用的输入输出口,其中PA、PB口为8位,PC口为6位。 1.设(A)=42H ,(R3)=68H ,(CY)=1,执行指结果:(A)=0ABH,(CY)=0,(AC)=0,(OV)=1,令:ADDC A,R3 (P)=1 答:(A) = 0 1 0 0 0 0 1 0 B 2.设(A)=0FFH,(R2)=0FH,(30H)=0F0H,(R0) (R3)= 0 1 1 0 1 0 0 0 B =40H,(40H)=00H,执行指令: +)(CY)= 1 B INC A;INC R2;INC 30H;INC @R0  ------------------------------------- 答:结果:(A)=00H,(R2)=10H,(30H)=0F1H, (A) = 1 0 1 0 1 0 1 1 B (40H)=01H,(P)=0 3.用指令实现下述数据传送。

(1)内部RAM20H单元送内部RAM40H单元; (4)外部RAM1000H单元送内部RAM20H单元; (2)外部RAM20H单元送R0寄存器; (5)外部ROM1000H单元送内部RAM20H单元; (3)外部RAM20H单元送内部RAM20H单元; (6)外部ROM1000H单元送外部RAM20H单元。 答:(1)MOV 40H,20H MOVX A,@R1 (5)MOV A,#00H MOV DPTR,#1000H (2)MOV R1,#20H MOV 20H,A MOV DPTR,#1000H MOVC A,@A+DPTR MOVX A,@R1 (4)MOV DPTR,#1000H MOVC A,@A+DPTR MOV R1,#20H MOV R0,A MOVX A,@DPTR MOV 20H,A MOVX @R1,A (3)MOV R1,#20H MOV 20H,A (6)MOV A,#00H

4.试编写程序,查找内部RAM的20H-50H单元中是否有0AAH这一数据。若有,将51单元置为01H;若没有,则将51H单元置为00H。 答:START: MOV R7,#31H MOV 51H,#01H MOV 51H,#00H MOV R1,#20H LJMP EXIT EXIT:RET LOOP1:MOV A,@R1 NEXT: INC R1 CJNE A,#0AAH,NEXT DJNZ R7,LOOP

5.试编写程序将内部RAM的30H-4FH单元的内容分别传送到外部RAM的2040H-205FH单元。 答: MOV R0,#30H LOOP:MOV A,@R0 INC R0 MOV DPTR,#2040H MOVX @DPTR,A DJNZ R1,LOOP MOV R1,#20H INC DPTR RET

6.试编写程序,统计外部RAM2000H-205FH单元中出现00H的次数,并将统计结果存入内部RAM50H单元。 答:START:MOV DPTR,#2000H CJNE A,#00H,NEXT MOV 50H,R1 MOV RO,#60H INC R1 EXIT:RET MOV R1,#00H NXET:INC DPTR LOOP:MOVX A,@DPTR DJNZ R0,LOOP

第 2 页 共 3 页 版权所有,违者必究

7.编写一个程序,把片外RAM从2000H开始存放的10个数传送到片内RAM30H开始的单元中。 答:START:MOV DPTR,#2000H LOOP:MOVX A,@DPTR INC R1 MOV R0,#0AH MOV R1,A DJNZ R0,LOOP MOV R1,#30H INC DPTR EXIT:RET 8.延时程序

START:SETB P1.1; (P1.1)←1

DL:MOV 30H,#03H; (30H)←03H DL0:MOV 31H,#0F0H; (31H)←0F0H

DL1:DJNZ 31H,DL1; (31H)←(31H)-1,若(31H)<>0,重复执行 DJNZ 30H,DL0; (30H)←(30H)-1,若(30H)<>0,则转DL0 CPL P1.1; (P1.1)求反 AJMP DL; 转DL

这段程序的功能是通过延时在P1.1输出方波,可以通过修改30H和31H单元的内容来改变延时时间,从而改变方波频率。

9.从内部RAM的20单元开始有15个数据,试编程序,把其中的正数负数分别送到41H和61H开始的存储单元,并分别将正数负数的个数送40H和60H单元。 解:START:MOV R7,#0FH JB ACC.7.LOOP1 INC R4 MOV SP,2EH MOV @R1,A LOOP2:DJNZ R7,LOOP

MOV R1,#41H INC R1 MOV 40H,R3 MOV R0,#61H INC R3 MOV 60H,R4 MOV R3,#00H SJMP LOOP2 EXIT: RET MOV R4,#00H LOOP1:MOV @R0,A

LOOP: POP A INC R2

10.设内部RAM的30H和31H单元中有两个带符号数,求出其中的大数存放在32H单元中。 解: MOV A,30H SUBB A,31H SJMP EXIT

XRL A,31H JC,LOOP1 LOOP:MOV A,30H JB ACC.7 LOOP MOV 32H,30H JB ACC.7,LOOP1 MOV A,30H SJMP EXIT MOV 32H,30H CLR C LOOP1:MOV 32H,31H EXIT:SJMP $ 11.选用T0工作方式0用于定时,由P1.2输出周期为1ms的方波,设晶振fosc=6MHz。采用查询方式查询。 答:P1.2输出周期为1ms的方波,只要间隔500us取反一次即可得到1ms宽的方波。可选用T0定时器。 X=2^13-fosc×t/12=8192-6×500/12=7942=1F06H

由于作13位计数器使用,TL0的高3位未用,应填0,TH0占高8位,所以13位的二进制表示值应为: X0=11111000 00110B

TL0=06H,只用到5位,TH0=F8H 设置模式控制字

TMOD:00000000即00H 源程序如下: SETB TR0 MOV TH0,#0F8H ORG 8000H LP1:JBC TF0,LP2 CPL P1.2 MOV TL0,#06H AJMP LP1 SJMP LP1 MOV TH0,#0F8H LP2:MOV TL0,#06H

12.用定时器1产生一个50Hz的方波,由P1.2输出,仍用程序查询方式,fosc=12MHz。 解:方波周期T=1/50=0.02s=20ms,用T1定时10ms,计数初值X1: X1=216-12×10×1000/12=65536-10000=55536=D8F0H 源程序如下: LOOP: MOV TH1,#0D8H CLR TF1 MOV TMOD,#01H MOV TL1,#0F0H CPL P1.2 SETB TR1 JNB TF1,$ SJMP LOOP 注:T0定时范围为1-8192us,T1定时范围为1-65536us,T2定时范围为1-256us。

13.已知8051单片机的fosc=12MHz,用T1定时,试编程由P1.2和P1.3分别输出周期为2ms和500us的方波。

答:X=2^13-fosc×t/12=8192-12×250/12=7942=1F06H

由于作13位计数器使用,TL0的高3位未用,应填0,TH0占高8位,所以13位的二进制表示值应为: X0=11111000 00110B

TL0=06H,只用到5位,TH0=F8H 设置模式控制字

TMOD:00000000即00H 源程序如下:

SRART:MOV TMOD,#00H MOV TL1,#06H DJNZ R7,LOOP2 SETB TR1 JNB TF1,$ CPL P1.2 LOOP1:MOV R7,#04H CLR TF1 SJMP LOOP1. LOOP2:MOV TH1,#0F8H CPL P1.3

第 3 页 共 3 页 版权所有,违者必究

因篇幅问题不能全部显示,请点此查看更多更全内容