单片机原理及应用考试复习知识点
第1章 计算机基础知识
考试知识点:
1、各种进制之间的转换
(1)各种进制转换为十进制数
方法:各位按权展开相加即可。 (2)十进制数转换为各种进制
方法:整数部分采用“除基取余法”,小数部分采用“乘基取整法”。 (3)二进制数与十六进制数之间的相互转换
方法:每四位二进制转换为一位十六进制数。 2、带符号数的三种表示方法
(1)原码:机器数的原始表示,最高位为符号位(0‘+’1‘-’),其余各位为数值位。 (2)反码:正数的反码与原码相同。负数的反码把原码的最高位不变,其余各位求反。 (3)补码:正数的补码与原码相同。负数的补码为反码加1。
原码、反码的表示范围:-127~+127,补码的表示范围:-128~+127。 3、计算机中使用的编码
(1)BCD码:每4位二进制数对应1位十进制数。
(2)ASCII码:7位二进制数表示字符。0~9的ASCII码30H~39H,A的ASCII码41H,a的ASCII码61H。 考试复习题:
1、求十进制数-102的补码(以2位16进制数表示),该补码为 。 2、123= B= H。
3、只有在________码表示中0的表示是唯一的。
4、真值-0000000B的反码为 ;其补码为 。
5、+1000110B的反码是 ;-0110011B的补码是 。 6、10101.101B转换成十进制数是( )。
(A)46.625 (B)23.625 (C) 23.62 (D) 21.625 7、3D.0AH转换成二进制数是( )。
(A)111101.0000101B (B) 111100.0000101B (C) 111101.101B (D) 111100.101B 8、73.5转换成十六进制数是( )。
(A)94.8H (B) 49.8H (C) 111H (D) 49H 9、十进制29的二进制表示为原码( )
A 11100010 B 10101111 C 00011101 D 00001111 10、-49D的二进制补码为.( )
A 11101111 B 11101101 C 0001000 D 11101100 11、已知某数的BCD码为0111 0101 0100 0010 则其表示的十进制数值为( )
a) 7542H b) 7542 c) 75.42H d) 75.42
1
第2章 80C51单片机的硬件结构
考试知识点:
1、80C51单片机的内部逻辑结构
单片机是把CPU、存储器、输入输出接口、定时/计数器和时钟电路集成到一块芯片上的微型计算机,主要由以下几个部分组成。
(1)中央处理器CPU 包括运算器和控制器。
运算电路以ALU为核心,完成算术运算和逻辑运算,运算结果存放于ACC中,运算结果的特征存放于PSW中。
控制电路是单片机的指挥控制部件,保证单片机各部分能自动而协调地工作。程序计数器PC是一个16位寄存器,PC的内容为将要执行的下一条指令地址,具有自动加1功能,以实现程序的顺序执行。
(2)存储器 分类:
随机存取存储器RAM:能读能写,信息在关机后消失。可分为静态RAM(SRAM)和动态RAM(DRAM)两种。
只读存储器:信息在关机后不会消失。
掩膜ROM:信息在出厂时由厂家一次性写入。 可编程PROM:信息由用户一次性写入。
可擦除可编程EPROM:写入后的内容可由紫外线照射擦除。 电可擦除可编程EEPROM:可用电信号进行清除和改写。 存储容量:
存储容量指存储器可以容纳的二进制信息量,M位地址总线、N位数据总线的存储器容量为2M×N位。
80C51单片机的存储器有内部RAM(128B,高128B为专用寄存器)、外部RAM(64KB)、内部ROM(4KB掩膜ROM)、外部ROM(64KB)。
(3)输入输出接口
4个8位并行I/O口(P0、P1、P2、P3) (4)其它资源
一个全双工串行口、5个中断源、2个16位的定时/计数器、时钟电路。 2、80C51单片机的信号引脚
(1)电源部分:VCC接+5V、VSS接地。
(2)时钟电路部分:XTAL1和XTAL2接晶振。 1个机器周期=6个状态=12个拍节
6MHZ的晶体机器周期2us,12MHZ的晶体机器周期1us。
(3)I/O口部分:P0——8位数据总线/地址总线低8位、P1——用户口、P2——地址高8位、P3——第二功能。
(4)控制部分:
地址锁存控制信号ALE,用于控制把P0口输出的低8位地址送入锁存器锁存地起来。 外部程序存储器读选通信号PSEN,低电平有效,以实现外部ROM单元的读操作。 访问程序存储器控制信号EA,低电平时只读外部ROM,高电平时先读内部ROM,再读外部ROM。
复位信号RST,当输入的复位信号延续2个机器周期以上高电平时即为有效。 复位值:PC=0000H,SP=07H,P0=0FFH。
2
3、内部RAM的基本结构与功能
80C51的内部数据存储器低128单元区,称为内部RAM,地址为00~7FH。 (1)寄存器区(00~1FH)
共分为4组,组号依次为0、1、2、3,每组有8个寄存器,在组中按R7~R0编号。由PSW中RS1、RS0位的状态组合来决定哪一组。
(2)位寻址区(20H~2FH) 可对单元中的每一位进行位操作,16个字节单元共128个可寻址位,位地址为00~7FH。 位起始地址D0=(字节地址-20H)*8
(3)用户RAM区(30H~7FH)堆栈、缓冲区
堆栈是在内部RAM中开辟的,最大特点就是“后进先出”的数据操作原则。 两项功能:保护断点和保护现场。两种操作:进栈和出栈。 SP堆栈指针,它的内容就是堆栈栈顶单元的地址。 4、专用寄存器(内部数据存储器高128单元)
(1)累加器A(ACC) (2)寄存器B
(3)程序状态字PSW
CY——进位标志位,最高位的进位或借位。
AC——半进位标志位,低4位向高4位的进位或借位。
OV——溢出标志位,同符号数相加,结果为异符号,有溢出;异符号数相减,结果和减数符号相同,有溢出。
P——A中1的个数,奇数个P=1,偶数个P=0。
(4)数据指针DPTR:80C51中惟一一个供用户使用的16位寄存器。高8位DPH,低8位DPL。 考试复习题:
1、80C51单片机的( )口的引脚,还具有外中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P3 2、单片机应用程序一般存放在( )
a) RAM b)ROM c)寄存器 d)CPU 3、CPU主要的组成部部分为( )
a)运算器、控制器 b)加法器、寄存器 c)运算器、寄存器 d)运算器、指令译码器 4、80C51是( )位的单片机
a) 16 b)4 c)8 d)准16
5、80C51复位后,PC与SP的值为( )
a )0000H,00H b) 0000H,07H c) 0003H,07H d)0800H,00H 6、80C51单片机中既可位寻址又可字节寻址的单元是( )
a)20H b)30H c)00H d)70H 7、PSW=18H时,则当前工作寄存器是( )
A.0组 B. 1组 C. 2组 D. 3组
8、MCS—51单片机外部有40个引脚,其中,地址锁存允许控制信号引脚是
(A)ALE
(B)PSEN
(C)EA
(D)RST
( )
9、PC中存放的是( )
3
A.下一条指令的地址 B. 当前正在执行的指令 C.当前正在执行指令的地址 D.下一条要执行的指令 10、MCS-51单片机的堆栈区应建立在()。
A. 片内数据存储区的低128字节单元 B. 片内数据存储区
C. 片内数据存储区的高128字节单元 D.程序存储区 11、MCS-51单片机有片内ROM容量( ) A. 4KB B. 8KB C. 128B D. 256B
12、MCS-51单片机的RS1,RS0=11时,当前寄存器R0—R7占用内部RAM( )单元。 A. 00H—07H B. 08H—0FH C. 10H—17H D. 18H—1FH
13、单片机即一个芯片的计算机,此芯片上包括五部分:运算器、_________、________、输入部分、________。
14、半导体存储器分成两大类 和 ,其中 具有易失性,常用于存储 。
15、在MCS—51单片机内部RAM中,字节地址范围是20H ~ 2FH的区域称为 而字节地址范围是30H ~ 7FH的一段区域称为 。
16、MCS-51系列单片机内部数据存储器,即内RAM中位寻址区的地址范围是 工作寄存器区的地址范围是 。内R0M中寻址区的地址范围是 。
17、若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为______。
18、MCS—5l单片机的堆栈区只可设置在 ,堆栈寄存器5P是 位寄存器。
19、P0、P1、P2、P3四个均是___位的____口(填“串行”还是“并行”),其中P0的功能是______________________;P2口的功能是___________;而_________是双功能口;______是专门的用户口。
20、程序状态标志字寄存器PSW中的PSW.7的含义是 ;PSW.0的含义是 。
21、当MCS-51引脚 信号有效时,表示从Po口稳定地送出了低8位地址. 22、当EA接地时,MCS-51单片机将从______的地址0000H开始执行程序。 23、1个机器周期= 个状态,1个状态= 个拍节。
24、MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。 25、简述累加器的ACC的作用。
26、8051的振荡周期、机器周期、指令周期是如何分配的?当晶振频率为6MHz时,一个机器周期为多少微秒?
27、开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?
28、80C51单片机片内256B的数据存储器分为哪几个区?分别作什么用?
29、80C51单片机的程序存储器和数据存储器共处同一地址空间,为什么不会发生总线冲突?
4
第3章 80C51单片机指令系统
考试知识点: 1、寻址方式
(1)立即寻址(#data,#data16)例:MOV A,#00H
(2)直接寻址(direct)内部RAM:00~7FH、特殊功能寄存器 例:MOV A,00H (3)寄存器寻址(A、B、Rn、DPTR)
(4)寄存器间接寻址(@Ri、@DPTR)例:MOVX A,@DPTR (5)变址寻址(@A+DPTR,@A+PC)例:MOVC A,@A+DPTR
(6)位寻址(bit)20~2FH:00~7FH、特殊功能寄存器 例:MOV C,00H (7)相对寻址(rel)例:JZ rel 2、数据传送类指令
(1)内部RAM数据传送指令 MOV 目的,源;目的→源 交换指令:
XCH A,direct/Rn/@Ri;A和源交换 XCHD A,@Ri;只换低4位 SWAP A;A的高低4位交换 注意:A作目的操作数会影响P。 PUSH direct POP direct
(2)外部RAM数据传送指令
MOVX A,@Ri/@DPTR;外部地址内容→A MOVX@Ri/@DPTR,A;A→外部地址内容 (3)ROM数据传送指令
MOVC A,@A+DPTR/@A+PC;查表指令 3、算术运算指令
(1)加法指令
ADD/ADDC A,#data/ direct/ Rn/@Ri;会影响CY、AC、OV、P INC A/ direct/ Rn/@Ri/DPTR;加1,P DA A;十进制调整,大于9加6 (2)减法指令
SUBB A,#data/ direct/ Rn/@Ri;会影响CY、AC、OV、P DEC A/ direct/ Rn/@Ri;减1 (3)乘除指令
MUL AB;(A)*(B)→BA,会影响CY=0,OV,P DIV AB;(A)/(B)的商→A,余数→B 4、逻辑运算及移动指令
(1)逻辑运算指令
ANL/ORL/XRL A,#data/ direct/ Rn/@Ri ANL/ORL/XRL direct,A/#data
与→清0,或→置1,异或→取反 CLR/CPL A;清0和取反 (2)移位指令
RL/RR/RLC/RRC A
5
注意:每左移一位相当于乘2,每右移一位相当于除2,带进位的移会影响CY和P。 5、控制转移类指令
(1)无条件转移指令
LJMP addr16;addr16→PC,64KB
AJMP addr11;(PC)+2→PC,addr11→PC10~0,2KB SJMP rel;(PC)+2+rel→PC,256B
JMP @A+DPTR;(A)+(DPTR)→PC,64KB (2)条件转移指令
累加器A判0转移指令
JZ rel;A为0 JNZ rel;A不为0 比较不相等转移指令
CJNE A/Rn/@Ri,#data,rel CJNE A,direct,rel
注意:第一操作数和第二操作数不相等,程序转移,若第一大于第二,CY=0,第一小于第二,CY=1。第一操作数和第二操作数相等,程序顺序执行,CY=0。
减1不为0转移指令 DJNZ Rn/direct,rel;(Rn/direct)-1不为0,程序转移。 (3)调用和返回指令
LCALL addr16;(PC)+3→PC,先入低8位,再入高8位,addr16→PC
ACALL addr11;(PC)+2→PC,先入低8位,再入高8位,addr11→PC10~0 RET;先出高8位,再出低8位 6、位操作类指令
(1)位传送指令 MOV C,bit MOV bit,C (2)位赋值指令 CLR C/bit SETB C/bit
(3)位逻辑运算指令
ANL/ORL C,bit或/bit CPL C/bit
注意:实现逻辑表达式 (4)位控制转移指令 JC rel;(CY)=1 JNC rel;(CY)=0 JB bit,rel;(bit)=1 JNB bit,rel;(bit)=0
JBC bit,rel;(bit)=1,转移,清0 考试复习题:
1、下列指令中不影响标志位CY的指令有( )。
a)ADD A,20H b)CLR A c)RRC A d)INC A 2、当需要从MCS-51单片机程序存储器取数据时,采用的指令为( )。 a)MOV A, @R1 b)MOVC A, @A + DPTR
6
c)MOVX A, @ R0 d)MOVX A, @ DPTR 3、下列哪条指令是正确的( )
a) PUSH R2 b) ADD R0,A c) MOVX A @DPTR d) MOV @R0,A
4、MOVX A , @R0指令中,源操作数采用( )寻址方式,指令作用在( )区间。 (A)寄存器,外部数据存储器 (B)直接,程序存储器
(C)寄存器间接 ,内部数据存储器 (D)寄存器间接,外部数据存储器 5、在中断服务程序中,至少应有一条( )
A、传送指令 B、转移指令 C、加法指令 D、中断返回指令
6、要用传送指令访问80C51外部RAM,它的指令助记符应是( ) A、MOV B、MOVX C、MOVC D、MOVD
7、执行LCALL 4000指令时,80C51所完成的操作是( )
A、保护PC B、PC←4000H C、保护现场 D、PC+3入栈,PC←4000H 8、以下运算中对溢出标志OV没有影响或不受OV影响的运算是( ) A、逻辑运算 B、符号数加减法运算 C、乘法运算 D、除法运算 9、必须进行十进制调整的十进制运算( )
A、只有加法 B、有乘法和除法 C、有加法和减法 D、只有减法 10、指令AJMP的跳转范围是( ) A、256B B、1KB C、2KB D、4KB
11、执行PUSH ACC指令,80C51完成的操作是( )
A、SP←(SP)+1 (SP)←(ACC) B、(SP)←(ACC) SP←(SP)-1 C、SP←(SP)-1 (SP)←(ACC) D、(SP)←(ACC) SP←(SP)+1 12、A7H和5BH两个立即数相加后,和为( ),(CY)是( )。
(A)1CH,0 (B) C1H,0 (C) 02H,1 (D) C1H,1 13、若(A)=86H,(PSW)=80H,则执行RRC A指令后( ) (A)C3H (B) B3H (C) 0DH (D) 56H 14、如果(P0)=65H ,则当
CPL P0.2 SETB C
MOV P0.4 ,C 执行后(P0)=( )
(A)61H (B) 75H (C) 71H (D) 17H
15、8031单片机中,将累加器A中的数送入外RAM的40H单元,可执行的指令((A) MOV R1 ,40H (B) MOV R1 ,#40H
MOVX @R1 , A MOVX R1 , A (C) MOVX 40H , A (D) MOV R1, #40H
MOVX @R1 , A
16、ORG 2000H LACLL 3000H ORG 3000H RET
上边程序执行完RET指令后,PC=( )
A.2000H B.3000H C.2003H D.3003H 17、JNZ REL指令的寻址方式是( )
。
7
)
A.立即寻址 B.寄存器寻址 C.相对寻址 D.位寻址 18、下面哪条指令产生WR信号( )
A.MOVX A,@DPTR B.MOVC A,@A+PC C.MOVC A,@A+DPTR D.MOVX @DPTR,A 19、MOVX A,@DPTR指令中源操作数的寻址方式是( )
A. 寄存器寻址 B. 寄存器间接寻址 C.直接寻址 D. 立即寻址
20、已知累加器A的数值为98H,它与0FAH相加,相加后会影响标志位CY、AC和OV位。各个位的值是( )。
(A) 0、0、0 (B) 1、0、1 (C) 1、1、1 (D) 1、1、0 21、ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H
当CPU响应外部中断0后,PC的值是( )
A.0003H B.2000H C.000BH D.3000H
22、假定设置堆栈指针SP的值为37H,在进行子程序调用时把断点地址进栈保护后,SP的
值为( )
A、36H B、37H C、38H D、39H
23、要把P0口高4位变0,低4位不变,应使用指令( )
A.ORL P0,#0FH B.ORL P0,#0F0H C.ANL P0,#0F0H D.ANL P0,#0FH 24、MCS-51执行完MOV A,#08H后,PSW的哪一位被置位( ) A.CY B. F0 C.OV D.P
25、对于指令JNB 12H,$,其操作码为80H,其操作数(即偏移量)为______。 26、JZ e的操作码地址为1000H,e=20H,它的转移目的地址为 。 27、执行下列程序段后,(P1)=_______。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7
28、执行下列程序段后,(A)=_______,(CY)=____。 MOV A,#C5H RL A
29、下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H 1NC @R0 1NC R0 1NC @R0
30、已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。 31、ORL A,#0F0H是将A的高4位置1,而低4位 。
32、SJMP e的指令操作码地址为0050H,e=65H,那么它的转移目的地址为 。
8
33、假定(A)=0FBH,(B)=12H。执行指令:DIV AB后, CY的内容为 ,OV 的内容为 。
34、假定(SP)=40H , (39H)=30H,(40H)=60H。执行下列指令:
POP DPH POP DPL
后,DPTR的内容为 ,SP的内容是 。
35、下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)MOV A,#48H ;寻址方式: (A)= (2)ADD A,60H ;寻址方式: (A)= (3)ANL A,@R0 ;寻址方式: (A)= 36、(A)=3BH,执行ANL A,#9EH指令后,(A)= (CY)=
37、JNZ REL为2B指令,放于1308H,转移目标地址是134AH,求偏移量REL= 38、若(A)=C3H,(R0)=AAH,执行ADD A,R0后,(A)= (CY)= (OV)= (AC)= 39、若(A)=50H,(B)=A0H,执行MUL AB后,(A)= (B)= (CY)= (OV)=
40、SJMP 0E7H为2B指令,放于F010H,目标地址= 41、判断以下各条指令是否正确(LL1和PROC为标号)(10分)
(1)MOVX @R0,B (2)MOV A,30H (3)MOVX A,30H (4)ADDC A,R7 (5)SUB A,R2 (6)ANL #99H ,36H (7)MOV C,ACC.0 (8)ORL P1.0,P3.1 (9)JBC P0,LL1 (10)ACALL PROC 42、判断指令(或伪指令)正误
(1). MOV 20H , R1 ( ) (2). ADDC A , 2030H ( ) (3). CLR A ( ) (4). MOVX 40H , #30H( ) (5). ORG 3000H ( ) (6). MOVC @A+PC , A( ) (7). MOVX A ,2000H ( ) (8). DJNZ #data , rel ( ) (9). INC @R5 ( ) (10). DEC DPTR ( )(11). MOV R1 ,@ R2 ( ) (12). SWAP R1 ( ) (13). SETB 2000H ( ) (14). JZ A , LOOP ( ) (15) DA R2 ( )
43、设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)= ORL A,#27H ANL A,28H XCHD A,@R0
9
CPL A
44、设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。 SETB C
ADDC A, 20H (A)= (CY)= (AC)= RLC A (A)= (CY)= (P)= MUL AB (A)= (B)= (OV)= 45、若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果
MOV A,10H (A)= , ANL A,#01H (A)= , MOV A,11H (A)= ,
ORL A,#01H (A)= , MOV A,12H (A)= , XRL A,#01H (A)= , MOV A,13H (A)= , XRL A,#0AA (A)= ,
(10H)= , (11H)= , (12H)= , (13H)= 46、MOV 30H,#60H MOV R0,#60H MOV A,30H MOV B,A MOV @R0,B
(A)= ,(R0)= ,(B)= , 47、MOV SP,#60H
MOV A,#01H (A)= , MOV B,#02H (B)= , PUSH A (SP)= , PUSH B (SP)= , POP A
POP B (60H)= , 48、若PSW=00H,当执行完下面三条语句后,PSW应为多少?
MOV A, #0FBH
MOV PSW, #10H ADD A, #7FH
49、已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) = MOV @R0 , #11H MOV A , R2 ADD A , 20H MOV PSW , #80H SUBB A , P0 XRL A , #45H
10
MOV 40H , A
50、设在31H单元存有#23H,执行下面程序: MOV A, 31H ANL A, #0FH MOV 41H, A MOV A, 31H ANL A, #0F0H SWAP A
MOV 42H, A
则(41H)= (42H)=
51、若PSW=00, 执行下列程序后,PSW的各位状态如何?
MOV A,#0FBH MOV PSW,#10H ADD A,#7FH CY AC OV P OF RS1 52、位地址为M、N、Y,程序如下:
MOV C,M ANL C, MOV Y,C MOV C,M ANL C,N
ORL CY MOV Y,C
求程序功能表达式:
53、阅读下列程序并回答问题
CLR C
MOV A,#9AH SUBB A,60H ADD A,61H, DA A MOV 62H,A
(1) 请问该程序执行何种操作? (2)已知初值:(60H)=23H,(61H)=61H,请问运行程序后:(62H)=( )? 54、已知(B)=35H,(A)=43H在执行下列指令后,(SP)=______,内部RAM(51H)=______。
MOV SP,# 50H PUSH ACC PUSH B
55、执行下列程序后,(A)=______,(B)=______。 MOV A,#9FH MOV B,#36H ANL B,A
11
SETB C
ADDC A,B
56、设RAM中(2456H)=66H,(2457H)=34H,ROM中(2456H)=55H,(2457H)=64H。请分析下面程序执行后各寄存器的内容。 (A)=______,(DPTR)=______。 MOV A,#1
MOV DPTR,#2456H MOVC A,@A+DPTR
第4章 80C51单片机汇编语言程序设计
考试知识点:
1、汇编语言的语句格式
【标号:】 操作码 【操作数】 【;注释】 标号:语句地址的标志符号。
操作码:语句执行的操作内容,用指令助记符表示。 操作数:为指令操作提供数据。 注释:对语句的解释说明。 2、伪指令
起始地址ORG、结束END、赋值EQU、字节DB、字DW、空DS、位BIT 3、汇编语言程序的基本结构形式
(1)顺序结构 (2)分支结构
(3)循环结构:数据传送问题、求和问题 4、定时程序
例:延时100ms的子程序,设晶振频率6MHZ。 DELAY:MOV R5,#250 LOOP2:MOV R4,#49 LOOP1:NOP NOP
DJNZ R4,LOOP1 DJNZ R5,LOOP2 RET 5、查表程序
(1)要查找的数据在表中的位置给A (2)表的首地址给DPTR (3)MOVC A,@A+DPTR (4)数据表 考试复习题:
1、下列标号中,正确的标号是( )。
A.1BT: B.BEGIN: C.ADD: D.STAB31: 2、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,(26H)=6FH,(27H)=76H,下列程序执行后,结果如何?并给出部分语句的注释。
CLR C
12
MOV R2,#3 LOOP:MOV A,@R0 ADDC A,@R1
MOV @R0,A INC R0
INC R1
DJNZ R2,LOOP ; JNC NEXT ; MOV @R0,#01H SJMP $ NEXT:DEC R0
SJMP $
(20H)= 、(21H)= 、(22H)= 、(23H)= 、CY= 、A= 、R0= 、R1= 3、阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A
MOV R1,A RL A RL A
ADD A,R1 MOV @R0,A RET
4、阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?(15分) MOV R1,#30H ;(R1)= MOV A,#64H ;(A)= ADD A,#47H ;(A)= ,(CY)= ,(AC)= DA A ;(A)= ,(CY)= ,(AC)= MOV @R1,A ;(R1)= ,(30H)= 5、2506H M5:MOV SP,#58H 2509H MOV 10H,#0FH 250CH MOV 11H,#0BH
?SP?1?SP,PC7~0?SP?250FH ACALL XHD ;PC+2?PC , ??
SP?1?SP,PC?SP??15~8?addr?PC?10~0??MOV 20H,11H
2514H M5A:SJMP M5A XHD:PUSH 10H PUSH 11H POP 10H POP 11H RET
13
问:(1)执行POP 10H后堆栈内容? (2)执行M5A:SJMP M5A后,(SP)= (20H)= 6、A程序存储空间表格如下: 地址 内容 2000H 3FH 2001H 06H 2002H 5BH 2003H 4FH 。。。。。 。。。。。 已知:片内RAM的20H中为01H,执行下列程序后(30H)=
MOV A,20H INC A
MOV DPTR,#2000H MOVC A,@A+DPTR CPL A
MOV 30H,A SJMP $
7、解读下列程序,然后填写有关寄存器内容
(1) MOV R1,#48H MOV 48H,#51H
CJNE @R1,#51H,00H JNC NEXT1 MOV A,#0FFH SJMP NEXT2 NEXT: MOV A,#0AAH NEXT2: SJMP NEXT2 累加器 A=( )
(2) MOV A,#0FBH MOV PSW,#10H ADD A,#7FH
若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表:
PSW CY AC F0 RS1 RS0 OV F1 P 8、内部RAM从list单元开始存放一单字节正数表,表中之数作无序排列,并以-1作结束标志。编程实现表中找出最小值。 MOV R0,#LIST MOV A,@R0 MOV MIN,A LOOP5:INC R0 MOV A,@R0 ________,LOOP3 RET
LOOP3:CJNE A,MIN,LOOP1 LOOP1:________ LOOP2 MOV MIN,A
LOOP2:SJMP LOOP5
9、设两个十进制数分别在内部RAM40H单元和50H单元开始存放(低位在前),其字节长
14
度存放在内部30H单元中。编程实现两个十进制数求和,并把求和结果存放在40H开始的单元中。
MOV R0,#40H MOV R1,#50H MOV R2,#30H _________
LOOP:MOV A,@R0 ADDC A,@R1 _________ MOV @R0,A INC R0 INC R1
DJNZ R2,LOOP
RET
10、比较两个ASCII码字符串是否相等。字符串长度在内部RAM3FH单元,两字符串的首地址分别为40H、50H。如果两个字符串相等,置CY=1,否则,置CY=0。 MOV R0,#40H MOV R1,#50H MOV R2,#3FH
LOOP1:MOV A,@R0 CLR C
______,@R1 JNZ LOOP2 INC R0 INC R1
______,LOOP1 SETB C RET
LOOP2:CLR C RET
11、将以表格形式存放在从table开始的内部单元中的8个单字节正数求平均值。 MOV R0,#TABLE MOV R2,#8 MOV R4,#0
LOOP1:MOV A,@R0 ______
MOV R4,A INC R0
DJNZ R2,LOOP1 MOV B,#8 ______ RET
12、分析下列程序的功能,并给出部分语句的注释。
START:MOV R0,#40H
15
MOV R7,#09H MOV A,@R0
LOOP: INC R0 ; MOV 30H,@R0
CJNE A,30H,NEXT ; NEXT: JNC BIE1 ; MOV A,30H ; BIE1: DJNZ R7,LOOP ; MOV 50H,A ; RETI
13、已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 14、请使用位操作指令实现下列逻辑操作: BIT=(10H∨P1.0)∧(11H∨CY)
15、已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。 ?1x?0?0x?0???1x?0 Y=?16、已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。
17、将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 18、编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。 19、请将片外RAM20H-25H单元清零
20、阅读程序并填空,形成完整的程序以实现如下功能。
有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。要求将该字符串中每一个字符加偶校验位。(以调用子程序的方法来实现。)
源程序如下: ORG 1000H MOV R0,#40H MOV R7,#10 NEXT: MOV A, ① ACALL SEPA MOV @R0,A INC R0 DJNZ ② ,NEXT SJMP $ SEPA: ADD A,#00H ③ PSW.0,SRET ORL A, ④ SRET: ⑤
21、从内部RAM30H单元开始,有10个单字节数据。试编一个程序,把其中的正数、负数分别送40H和50H开始的内部RAM单元。
22、将字节地址30H~3FH单元的内容逐一取出减1,然后再放回原处,如果取出的内容为00H,则不要减1,仍将0放回原处。 23、将31H、32H单元与41 H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。 24、编程实现字符串长度统计:设在单片机内RAM中从STR单元开始有一字符串《以ASC
16
II码存放》,该字符串以$<其值为24H>结束,试统计该字符串的长度,其结果存于LON单元。 求平方子程序计算X=a^2+b^2 25、(8分)片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256
第5章 80C51单片机的中断与定时
考试知识点:
1、中断源和中断请求标志位 中断名称 外部中断0 T0中断 外部中断1 T1中断 串行发送中断 串行接收中断 2、和中断相关的寄存器的设置 (1)定时器控制寄存器TCON 格式如下: 位 TCON 位地址 D7 TF1 8F D6 TR1 8E D5 TF0 8D D4 TR0 8C D3 IE1 8B D2 IT1 8A D1 IE0 89 D0 IT0 88 中断请求标志 IE0 TF0 IE1 TF1 TI RI 中断向量 0003H 000BH 0013H 001BH 0023H 0023H
IT0=0,为电平触发方式。 INT 0 低电平有效。 IT0=1,为边沿触发方式。 INT 0 输入脚上电平由高到低的负跳变有效。 IE0=1,说明有中断请求,否则IE0=0。 (2)中断允许控制寄存器IE 其各位的定义如下: 位 代号 D7 EA D6 — D5 — D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0 EA: 开放或禁止所有中断。ES:开放或禁止串行通道中断。ET1:开放或禁止定时/计数器T1溢出中断。EX1:开放或禁止外部中断源1。ET0:开放或禁止定时/计数器T0溢出中断。EX0:开放或禁止外部中断源0。
(3)中断优先级控制寄存器IP 各位的定义如下: 位 代号 D7 — D6 — D5 — D4 PS D3 PT1 D2 PX1 D1 PT0 D0 PX0 1为高优先级、0为低优先级。如果同级的多个中断请求同时出现,则按CPU查询次序
17
确定哪个中断请求被响应。查询次序为:外部中断0、T0中断、外部中断1、T1中断、串行中断。
3、响应中断的必要条件
(1)有中断源发出中断请求。
(2)中断允许寄存器IE相应位置“1”,CPU中断开放(EA=1)。 (3)无同级或高级中断正在服务。
(4)现行指令执行到最后一个机器周期且已结束。若现行指令为RETI或需访问特殊功能寄存器IE或IP的指令时,执行完该指令且其紧接着的指令也已执行完。
中断响应的主要内容是由硬件自动生成一条长调用指令,指令格式为“LCALL addr16”。这里的addr16就是程序存储器中断区中相应中断的入口地址。 4、中断程序设计
(1)在0000H处存放一条无条件转移指令转到主程序。
(2)在入口地址处存放一条无条件转移指令转到中断服务子程序。 (3)设置触发方式(IT0/IT1) (4)设置IE和IP。 (5)设置SP。 (6)原地踏步。
(7)中断服务子程序。最后RETI。 5、定时计数的基本原理
(1)定时功能:每个机器周期计数器加1。
(2)计数功能:T0(P3.4)和T1(P3.5)输入计数脉冲,每一来一个脉冲计数器加1。 6、用于定时计数的寄存器的设置
(1)定时器控制寄存器TCON 格式如下: 位 TCON 位地址 D7 TF1 8F D6 TR1 8E D5 TF0 8D D4 TR0 8C D3 IE1 8B D2 IT1 8A D1 IE0 89 D0 IT0 88 TF1、TF0——计数溢出标志位。当计数器产生计数溢出时,由硬件置1。采用查询方式,它是供查询的状态位。采用中断方式,作为中断请求信号。
TR1、TR0——计数运行控制位。为1时,启动定时器/计数器工作;为0时,停止定时器/计数器工作。
(2)工作方式控制寄存器TMOD
其格式如下:
GATE:门控位。当GATE=1时,同时INTx为高电平,且TRx置位时,启动定时器,外部启动。当GATE=0时,每当TRx置位时,就启动定时器,是内部启动方式。
18
C/T:选择定时器功能还是计数器功能。该位置位时选择计数器功能;该位清零时选择定时器功能。
M1M0:这两位指定定时/计数器的工作方式,可形成四种编码,对应四种工作方式: M1 M0 方式 说明 0 0 0 TLx低5位与THx中8位构成13位计数器 0 1 1 TLx与THx构成16位计数器 1 0 2 可自动再装入的8位计数器,当TLx计数溢出时,THx内容自动装入TLx。 1 1 3 对定时器0,分成两个8位的计数器;对定时器1,停止计数。 7、各种工作方式计数初值计算公式
方式0:
定时时间T=(8192-计数初值)×机器周期 计数次数C=8192-X 方式1:
定时时间T=(65536-计数初值)×机器周期 计数次数C=65536-X 方式2:
定时时间T=(256-计数初值)×机器周期 计数次数C=256-X 8、定时器程序设计
查询方式:
(1)在0000H处存放一条无条件转移指令,转到主程序。 (2)设置工作方式TMOD。 (3)设置计数初值。 (4)启动定时计数。
(5)等待时间到或计数计满。
LOOP:JBC TF0/TF1,LOOP1 SJMP LOOP LOOP1:??
(6)重新设置计数初值(除方式2),再转第5步。 中断方式:
(1)在0000H处存放一条无条件转移指令,转到主程序。
(2)在入口地址处存放一条无条件转移指令转到中断服务子程序。 (3)设置工作方式TMOD。 (4)设置计数初值。 (5)启动定时计数。 (6)设置IE和IP。 (7)设置SP。 (8)原地踏步。
(9)中断服务子程序。重新设置计数初值(除方式2),最后RETI。
19
例 选用定时器/计数器T1工作方式0产生500μS定时,在P1.1输出周期为1ms的方波,设晶振频率=6MHZ。
(1)根据定时器/计数器1的工作方式,对TMOD进行初始化。
C 按题意可设:GATE=0(用TR1位控制定时的启动和停止), T =0(置定时功能),M1M0=00(置方式0),因定时器/计数器T0不用,可将其置为方式0(不能置为工作方式3),这样可将TMOD的低4位置0,所以(TMOD)=00H。
(2)计算定时初值
( 13 - X)×2=500 2X=7942D=1111100000110B
将低5位送TL1,高8位送TH1得:(TH1)=F8H,(TL1)=06H (3) 编制程序(查询方式) ORG 0000H LJMP MAIN ORG 0300H
MAIN: MOV TMOD,#00H ;TMOD初始化 MOV TH1,#0F8H ;设置计数初值 MOV TL1,#06H
SETB TR1 ;启动定时 LOOP: JBC TF1,LOOP1 ;查询计数溢出 AJMP LOOP
LOOP1:CPL P1.1 ;输出取反
MOV TL1,#06H ;重新置计数初值
MOV TH1,#0F8H
AJMP LOOP ;重复循环 END
例 用定时器/计数器T1以工作方式2计数,要求每计满100次进行累加器加1操作。 (1)TMOD初始化
C M1M0=10(方式2), =1(计数功能),GATE=0(TR1启动和停止),因此(TMOD)
T=60H。
(2)计算计数初值
8 2 -100=156D=9CH 所以 TH1=9CH
(3)编制程序(中断方式) ORG 0000H
AJMP MAIN ;跳转到主程序
ORG 001BH ;定时/计数器1中断服务程序入口地址
20
AJMP INSERT1 ORG 0030H
MAIN:MOV TMOD #60H ;TMOD初始化 MOV TL1,#9CH ;首次计数初值 MOV TH1,#9CH ;装入循环计数初值 SETB TR1 ;启动定时/计数器1
SETB EA ;开中断
SETB ET1
SETB PT1 ;T1为高优先级
MOV SP,#40H
SJMP ﹩ ;等待中断 INSERT1:INC A RETI END 考试复习题:
1、定时器1工作在计数方式时,其外加的计数脉冲信号应连接到( )引脚。 A.P3.2 B.P3.3 C.P3.4 D.P3.5
2、当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持( )。
A.1个机器周期 B.2个机器周期 C.4个机器周期 D.10个晶振周期 3、MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应( )。 A.外部中断0 B.外部中断1 C.定时器0中断 D.定时器1中断 4、定时器若工作在循环定时或循环计数场合,应选用( )。
A.工作方式0 B.工作方式1 C.工作方式2 D.工作方式3 5、MCS-51单片机的外部中断1的中断请求标志是( )。 A.ET1 B.TF1 C.IT1 D.IE1
6、MCS-51单片机定时器工作方式0是指的()工作方式。 A.8位 B.8位自动重装 C.13位 D.16位
7、8051单片机内有( )个16位的定时/计数器 ,每个定时/计数器都有( )种工作方式。 (A) 4, 5 (B) 2, 4 (C) 5, 2 (D) 2, 3
8、要使MCS-51能响应定时器T1中断,串行接口中断,它的中断允许寄存器IE的内容应是( )
A.98H B.84H C.42H D.22H 9、MCS-51单片机的外部中断0中断入口地址为( )。 A. 0003H B. 000BH C. 0013H D. 001BH 10、80C51响应中断时,下面哪一个条件不是必须的( ) A、当前指令执行完毕 B、中断是开放的 C、没有同级或高级中断服务 D、中断返回指令
11、80C51可分为两个中断优先级别,各中断源的优先级别设定是利用寄存器( ) A、TCON B、IP C、SCON D、IE
12、各中断源发出的中断请求信号,都会标记在80C51系统中的( )
21
A、TMOD B、TCON/SCON C、IE D、IP 13、定时器/计数器的工作方式3是指得将 拆成两个独立的8位计数器。而另一个定时器/计数器此时通常只可作为 使用。
14、MCS—51单片机外部中断请求信号有电平方式和 ,在电平方式下,当采集到INT0、INT1的有效信号为 时,激活外部中断。
15、设定T1为计数器方式,工作方式2,则TMOD中的值为 。 16、若IT1=0,当引脚 为低电平的时候,INT0的中断标志位 才能复位。 17、当定时器T0工作在方式3时,要占定时器T1的_ 控制位.
18、MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?
19、已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤) 20、想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置?请举例加以说明。
21、80C51单片机外部中断源有哪几种触发中断请求的方法?它们如何实现中断请求? 22、80C51响应中断的条件是什么?CPU响应中断后,CPU要进行哪些操作?
23、8051的定时器/计数器有几个?是多少位的?有几种工作方式?其工作原理如何? 24、8051有哪几个中断源?哪些是内部中断源?哪些是外部中断源?
25、若8051的晶振频率fosc为6MHz,定时器/计数器T0工作在工作方式1,要求产生10ms定时,写出定时器的方式控制字和计数初值(分别写出TH0与TL0值)。 26、简述子程序调用和执行中断服务程序的异同点。
27、已知晶振频率为6MHz,在P1.0引脚上输出周期为500微秒的等宽矩形波,若采用T1中断,工作方式2,试写出中断初始化程序
28、按以下要求编写8051单片机定时器的初始化程序:
(1)T0作为定时,定时时间为10ms. (2)T1作为计数,记满100溢出。
29、应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
16
请(1)计算时间常数X,应用公式X=2-t(f/12) (2)写出程序清单(查询方式)
30、设单片机晶振频率FOSC=6MHZ,使用定时器0以工作方式1产生周期为800μs的等宽方波,用中断方式实现编程,并在P1.0输出。
31、用定时器0以工作方式2计数,每计数100次,将COUNT单元加1。 32、设计题
图1所示是一个舞台示意图,使用80C51设计一个控制器,编写程序每隔10ms将阴影部分和无阴影部分交替点亮。
22
图1
第6章 单片机并行存储器扩展
考试知识点:
1、单片机并行扩展总线的组成
(1)地址总线:传送地址信号
(2)数据总线:传送数据、状态、指令和命令 (3)控制总线:控制信号 2、80C51单片机并行扩展总线
(1)以P0口的8位口线充当低位地址线/数据线 (2)以P2口的口线作高位地址线 (3)控制信号:
使用ALE作地址锁存的选通信号,以实现低8位地下锁存。 以PSEN信号作为扩展程序存储器的读选通信号。 以EA信号作为内外程序存储器的选择信号。
以RD和WR作为扩展数据存储器和I/O端口的读/写选通信号。 3、单片机并行存储器扩展的方法
各种外围接口电路与单片机相连都是利用三总线实现。 (1)地址线的连接
将外围芯片的低8位地址线(A7~A0)经锁存器与P0口相连,高8位地址线(A15~A8)与P2口相连。如果不足16位则按从低至高的顺序与P0、P2口的各位相连。
(2)数据线的连接
外围芯片的数据线(D7~D0)可直接与P0口相连。 (3)控制线的连接 ROM:OE—PSEN
RAM:OE—RD、WE—WR 片选信号CE的连接方法:
(1)接地,适用于扩展一块存储器芯片。 (2)线选法
23