单片机原理及应用期末考试复习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及应用期末复习题
一、填空题
1.相对寻址是以PC的当前值为基准,加上指令中给出的相对偏移量形成目标地址的方
式。
2.A T89S51单片机的1个机器周期含有12 个晶振周期或 6 状态周期。
3.A T89S51单片机进行扩展时,用P0 口作为地址/数据总线,用P2口作为地址总线高8位。
4.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器1031H单元的内容送累加器A中
5.指令格式是由操作码和操作数部分组成。
6. AT89S51单片机的串行口控制寄存器中有2个中断标志位,它们是 TI和RI
7. JNC rel指令执行时,当CY位为 0时程序发生跳转。
8.单片机位寻址区的单元地址是从20H单元到2FH单元,若某位地址是10H,它所在单元
的地址应该是22H 。
9.外部中断0的中断入口地址为0003H,定时/记数器T1的中断入口地址为001BH。
10.串行口工作方式2为9位异步通信,若SMOD=0,f OSC = 6 MH Z,则其相应波特率为6×106/64 b/s
11.堆栈应遵循先进后出规律,堆栈指针的符号为SP
12、程序计数器PC存放的是下一条要执行指令的地址;
13、指令MOVX A, @DPTR的寻址方式是寄存器间接寻址:
14、MCS-51访问ROM、片内RAM、片外RAM的指令助记符分别为MOVC 、
MOV和 MOVX 。
15、机器字长为8位,则[—10]原 = 8AH ,[-10]反= F5H ,[-10]补=
F6H 。
16、已经累加器A = 97H,则执行指令ADD A, #7DH后,A = 14H ,C =
1 ,OV = 0 ,AC = 1 。
二、单项选择题
1.AT89S51单片机的( d )口的引脚,还具有外中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P3
2.单片机应用程序一般存放在( b )
a)RAM b)ROM c)寄存器 d)CPU
3.已知某数的BCD码为0111010101000010 则其表示的十进制数值为(b)a) 7542H b) 7542 c) 75.42H d) 75.42
4.下列指令中不影响标志位CY的指令有( d )。
a)ADD A,20H b)CLR c)RRC A d)INC A
5.CPU主要的组成部部分为( a )
a)运算器、控制器b)加法器、寄存器
c)运算器、寄存器d)运算器、指令译码器
6.AT89S51 的CPU是( c )位的单片机
a) 16 b)4
c)8 d)准16
7.当需要从AT89S51单片机程序存储器取数据时,采用的指令为(b)。
a)MOV A, @R1 b)MOVC A, @A + DPTR c)MOVX A, @ R0 d)MOVX A, @ DPTR
8.AT89S51单片机中既可位寻址又可字节寻址的单元是( a )
a)20H b)30H c)00H d)70H
9.下列哪条指令是正确的( d )
a) PUSH R2 b) ADD R0, A
c) MOVX A @DPTR d) MOV @R0, A
11.要使累加器A的高4位置为0000,低4位不变,以下指令正确的是 B 。
(A)ANL A, #0F0H(B)ANL A, #0FH(C)ORL A, #0F0H(D)ORL A, #0FH
12. 利用串行口工作方式1进行异步串行通信,当其波特率为4800bps,每秒最多能传送
A 个字符。
(A)480(B)960(C)4800(D)9600
13. C51中,要编写一个中断函数,则必须在函数名后加 B 修饰符。
(A)void(B)interrupt(C)using(D)unsigned
14. 51系列单片机系统中需扩展32KByte的片外RAM,则需要 C 片6264(8K×8bit)。
(A)1(B)2(C)4(D)8
15. 若单片机当前正在执行高优先级的中断服务,则以下能响应的中断是
D 。
(A)高优先级中断(B)同优先级中断(C)低优先级中断(D)以上都不能响应
16. 键盘的软件消除键抖动是通过 C 来实现的。
(A)加滤波器(B)中断(C)延时(D)加RS触发器
三、写出实现下列各要求的指令或程序段
1、将80H单元中的内容与数据4FH相比较,相等返回,不相等将80H单元置FFH返回。
MOV A,80H
CJNE A,# 4FH,BD
SJMP L1
BD:MOV 80H,#0FFH
L1: RET
2、外部RAM单元2000H的内容传送到内部RAM单元70H;
MOV DPTR,#2000H
MOVX A,@DPTR
MOV 70H, A
3、将32H单元中内容的第7位取反后送给50H。
MOV A,32H
CPL ACC.7
MOV C,ACC.7
MOV 50H,C
4、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?(5分)
MOV A,50H ;(A)=40H
MOV R0,A ;(R0)=40H
MOV A,#00H ;(A)=0
MOV @R0,A ;(40H)=0
MOV A, #3BH ;(A)=3BH
MOV 41H,A ;(41H)=3BH
MOV 42H,41H ;(42H)=3BH
(A)=3BH; (R0)= 40H;
(40H)= 0; (41H)= 3BH;(42H)= 3BH
5、将外部数据存储器3000H开始100个存储单元的内容存入3070开始的存储单
元(9分)
MOV DPTR #3000H
MOV P2,#30H
MOV R1,#70H
MOV R5,#100
L1: MOVX A, @DPTR
MOVX@R1,A
INC R1
INC DPTR
DJNZ R5, L1
RET
四、读程序填空
1. CLR C
MOV A, 4DH
SUBB A,, 4EH
MOV 30H, A
MOV A, 7FH
SUBB A, 2BH
MOV 31H, A
SJMP $
(1)该程序的功能是:两个16位数的减法:(7F4DH)-(2B4EH),结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位
(2)若(4DH)=06H,(4EH)=05H,(7FH)=0AH,(2BH)=01H
则执行上述程序后(30H)= 01 H。
(31H)= 09 H。
2. START: MOV R0 , #40H
MOV R7, #04H
MOV A, @R0
LOOP: INC R0
MOV 50H , @R0
CJNE A, 50H , NEXT
NEXT: JNC BIE1
MOV A, 50H
BIE1: DJNZ R7, LOOP
MOV 30H, A
RET
(1) 该程序的功能是:求出40H—44H中最大的无符号数,并将最大数存入30H中
(2) 设(40H)=12H, (41H)=22H , (42H)= 6EH, (43H)=5AH , (44H)= 8AH,
填写程序执行后的结果,(30H)= 8A H。
3.已知(30H)=49H,(31H)=2BH,(32H)=0A3H,执行以下程序:
MOV R7,# 4
RR0: MOV R6,# 3
CLR C
MOV R0,# 30H
RR1: MOV A,@R0
RRC A
MOV @R0,A
INC R0
DJNZ R6,RR1
DJNZ R7,RR0
RET
从该程序可看出这段程序的功能是:将内RAM中30H~32H的内容
右移4位
执行后结果:(30H)= 04H ,(31H)= 92H,(32H)= 0BAH。
(3分)
4、已知(A)=58H,(30H)=7FH,(P1)=EAH,执行下列程序:
MOV SP,#40H
PUSH A
PUSH 30H
MOV A,P1
MOV 30H,A
POP 30H
POP A
执行后结果:(SP)= 40H ,(A)= 58H ,(30H)= 7FH ,(41H)= 58H 。
五、根据题意,按要求答题。
1. AT98S51单片机P1口上接8只发光二极管(高电平亮,低电平灭),若晶振频率是12MHz,用定时/计数器T0以工作方式1工作,使8只发光二极管每1S单循环点亮。
(1)计算定时初值,写出过程
(2)根据相关注释,填写程序
(3)
答:(1)定时初值:
(216-X)×1μS = 50mS
X=216-50000
=15536
(2) MOV TMOD,#01H ;设T0工作方式
MOV DPTR,#15536 ;置定时初值50mS
MOV TH0,DPH
MOV TL0,DPL
MOV A,#01H ;置A初值
SETB TR0;允许定时
LOOP:MOV R7,#20 ;设定时次数
MOV P1,A ;从P1口输出
LOOP1:JNB TF0,$ ;判断定时50mS到没
CLR TF0 ;定时时间到,TF0清0
MOV TH0,DPH;重新置定时初值50mS
MOV TL0,DPL
DJNZ R7,LOOP1 ;判断定时次数到没
RL A ;输出左移
SJMP LOOP;继续循环输出
END
2、根据给定存储类型和数据类型,声明下列变量:
(1)在片内RAM低128字节定义一个有符号整型变量val,初值为100;
(signed) int data val = 100。
(2)在ROM定义一个3元素的无符号字节数组num,数组内容分别为:12H,34H,56;unsigned char code num[3] = {0x12, 0x34, 56}。
(3)在片外RAM定义一个指向无符号字节类型的指针变量p;
unsigned char xdata *p。
3、根据下图进行分析。
(1)6264是程序存储器还是数据存储器?
数据存储器件
(2)写出三片6264所占的地址范围。
0x6000~0x7fff,0x80000`0x9fff。
0xa000~0xbfff
4、51系列单片机中,利用8255A扩展了3个共阴极LED数码管,如下图所示。
(1)写出8255A的控制字;
控制字:0x80
(2)写出三位数码管显示“8”“1”“0”时(按上图由左至右显示为“810”),PA口和PB口分别送出的数据;
“8”:0x7f 0xfe?
“1”:0x06 0xfd?
“0”:0x3f 0xfb?
6、简述矩阵式8行2列键盘的工作过程,其中P1口连接8根行线,P3.0和P3.1连接2根列线。
判断是否有键按下:先给列线P3.0和P3.1送低电平,然后读行线P1的值,判断P1是否为0xff;若P1为0xff则表示没有键按下,则返回重新判断是否有键按下;若P1不为0xff 则表示有键按下,则延时10ms去抖动,再重新读行线P1口,再次判断是否有键按下。
若确实有键按下,则判断哪一个键按下:先给第一根列线P3.0送低电平,而P3.1送高电平,然后读行线P1,判断P1是否为0xff;若是则表示按下的键在这第一列;否则给第二列P3.1送低电平,而P3.0送高电平,然后读行线P1,判断P1是否为0xff,若是则表示按下的键在这第二列;找到按键所在列后,再根据读到的行线值中0的位置从而判断按键所在行线。
确定按键后,执行按键所对应的服务程序;然后等待键释放;按键释放通过给所有的列线P3.0和P3.1送低电平,然后读行线P1的值来进行判断;按键释放后再次延时去抖动,然后返回重新判断是否有键按下。
7、简述51单片机串行双机通信的过程,写明发送和接收时软硬件分别执行的操作。
先
数据发送时,在TI=0时,CPU将待发送数据送入SBUF,启动发送;数据由TXD引脚按位送出,发送时钟由T1控制,最先送出起始位(0),然后依次是8位数据位(低位在
前),最后是停止位(1);一帧数据发送完毕后,硬件自动将TI置1,向CPU请求中断;CPU接收到请求信号后,需将TI清0,然后才能启动下一次发送。
数据接收时,允许接收位REN必须置1,接收器开始工作;当接收到起始位(0),启动接收;在波特率的控制下,把接收到的数据依次移入移位寄存器;当接收完一帧数据,将移位寄存器中的数据送入SBUF,同时硬件自动将RI置1,向CPU请求中断。
CPU接收到请求信号后,需将RI清0,然后才能正常接收下一帧数据。