单片机复习题电本.docx
- 文档编号:17161789
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:28
- 大小:194.84KB
单片机复习题电本.docx
《单片机复习题电本.docx》由会员分享,可在线阅读,更多相关《单片机复习题电本.docx(28页珍藏版)》请在冰点文库上搜索。
单片机复习题电本
《单片机原理与应用》期末复习
一、填空(按八位机填空)
1.133=()B=()H=()BCD
2.10101101B=()D=()H=()BCD
3.+8的反码(8位二进制数)是();补码是();-8的反码(8位二进制数)是();补码(8位二进制数)是()
二、算术运算
试问下列程序执行后,累加器A和PSW内容各是什么?
(1)MOVA,#0FEH11111110
ADDA,#0FEH,,11111110
A=0FCH;111111100
CYACF0RS1RS0OV–P
11000000(PSW)=0C0H
(2)MOVA,#92H10010010
ADDA,#0A4H10100100
A=36H;100110110
CYACF0RS1RS0OV–P
10000100(PSW)=84H
已知:
A=7AH,R0=30H,(30H)=0A5H,PSW=80H.试问下列程序执行后的结果是什么?
(1)ADDCA,30H01111010
INC30H10100101
CYACF0RS1RS0OV-P1
11000001100100000
A=20H;R0不变;(30H)=0A6H;PSW=0C1H
(2)SUBBA,30H01111010
INCA10100101
CYACF0RS1RS0OV-P1
10000101111010100
1
11010101
A=0D5H;R0不变;(30H)不变;PSW=85H
(3)SUBBA,#30H01111010
DECR000110000
CYACF0RS1RS0OV-P1
0000000101001001
A=49H;R0=2FH;(30H)=不变;PSW=01H
(4)SUBBA,R001111010
DEC30H00110000
CYACF0RS1RS0OV-P1
0000000101001001
A=49H;R0不变;(30H)=0A4H;PSW=01H
.已知:
A=8CH,(40H)=0B5H,PSW=80H.试问下列程序执行后的结果是什么?
(1)SUBBA,40H
DEC40H
CYACF0RS1RS0OV-P1
A=;(40H)=;PSW=
(2)ADDCA,40H
INC40H
CYACF0RS1RS0OV-P1
A=;(40H)=;PSW=
三、逻辑运算
已知:
A=7AH,CY=1(PSW=80H).试问执行下列程序后的结果。
(1)MOVA,#0FHA=00001111B
CPLAA=11110000B
MOV30H,#00H(30H)=00000000B
ORL30H,#0ABH(30H)=10101011B
RLAA=11100001B
A=0E1H;(30H)=0ABH
(2)MOVA,#0BBHA=10111011B
CPLAA=01000100B
RRAA=00100010B
MOV40H,#0AAH(40H)=10101010B
ORLA,40HA=10101010B
A=0AAH;(40H)=0AAH
(3)ANLA,#0FFHA=01111010B
MOV30H,A(30H)=01111010B
XRLA,30HA=00000000B
RLCAA=00000001B
SWAPAA=00010000B
A=10H;(30H)=7AH
(4)ORLA,#0FHA=01111111B
SWAPAA=11110111B
RRCAA=11111011B
XRLA,#0FH00001111B
ANLA,#0F0HA=11110100B
11110000B
A=11110000B
A=0F0H
试问执行下列程序后的结果。
(1)MOVA,#0CDHA=0CDH
SWAPAA=0DCH
XRLA,#0F0HA=2CH
A=2CH
(2)MOVA,#9AHA=9AH
RRAA=4DH
ANLA,#0FHA=0DH
A=0DH
01001101
(3)MOVA,#0C5HA=0C5H
CPLAA=3AH
RLAA=74H
A=
(4)MOVA,#58HA=
MOV30H,#0DDH(30H)=
ORLA,30HA=
A=;
01110100
四、按要求写指令:
1.将外部RAM1000H~1050H单元有一个数据块,请编程把它们传送到片外2000H~2050H单元的RAM数据区。
MOVDPL,#00H
MOVR3,#00H
LOOP:
MOVDPH,#20H
MOVXA,@DPTR
MOVDPH,#30H
MOVX@DPTR,A
INCDPL
DJNZR3,LOOP
END
2.将外部ROM1000H~1050H单元有一个数据块,请编程把它们传送到片外1000H~1050H单元的RAM数据区。
MOVDPTR,#1000H
MOVR2,#51H
LOOP:
CLRA
MOVCA,@A+DPTR
MOVX@DPTR,A
INCDPTR
DJNZR2,LOOP
END
3.片外RAM以50H单元开始以‘A’结束的数据块传送到片内以40H单元开始的数据区(‘A’也要传送).
MOVR0,#50
MOVR1,#40
LOOP:
MOVXA,@R0
MOV@R1,A
INCR0
INCR1
CJNEA,‘A’,LOOP
SJMP$
END
4.片外RAM3000H单元内容加上片内RAM50H单元内容,和放到片外RAM3000H单元.
MOVDPTR,#3000H
MOVXA,@DPTR
ADDA,50H
MOVX@DPTR,A
5.用两种方法使A累加器与20H单元的内容调换.
①PUSHACC②MOV30H,ACC③XCHACC,20H
PUSH20HMOVACC,20H
POPACCMOV20H,30H
POP20H
6.片外RAM3000H单元内容减去片内RAM30H单元内容,差值放到片外RAM3000H单元.
MOVDPTR,#3000H
MOVXA,@DPTR
CLRC
SUBBA,30H
MOVX@DPTR,A
五、程序设计:
(15分)
1.设单片机主频为12MHz,利用定时器T0(定时方式1)编程实现在P1.3上输出频率为500Hz方波脉冲,(用中断方式实现)。
解:
频率为500Hz方波脉冲,周期为2000μs,每半个周期P1.3电平翻转一次即每1000μsP1.3电平翻转一次
采用方式1:
TC=M-T/T计数=216-1000μs/1μs
=65536-1000=664536=0FC18H
=216-1024+24=10000H-400H+18H=0FC18H
程序:
ORG0000H
AJMPMAIN
ORG000BH
AJMPTTT0
MAIN:
MOVTMOD,#01HTTT0:
MOVTH0,#0FCH
MOVTH0,#0FCHMOVTL0,#18H
MOVTL0,#18HCPLP1.3
MOVIE,#82HRETI
SETBTR0
SJMP$;
END
2.设单片机主频为12MHz,利用定时器T1(定时方式1)编程实现在P1.3上输出频率为500Hz方波脉冲,(用中断方式实现)。
解:
频率为500Hz方波脉冲,周期为2000μs,每半个周期P1.3电平翻转一次即每1000μsP1.3电平翻转一次
采用方式1:
TC=M-T/T计数=216-1000μs/1μs
=65536-1000=664536=0FC18H
=216-1024+24=10000H-400H+18H=0FC18H
程序:
ORG0000H
AJMPMAIN
ORG001BH
AJMPTTT1
MAIN:
MOVTMOD,#10HTTT0:
MOVTH1,#0FCH
MOVTH1,#0FCHMOVTL1,#18H
MOVTL1,#18HCPLP1.3;
MOVIE,#88HRETI
SETBTR1(reti)
SJMP$
END
3.设单片机主频为12MHz,利用定时器T0(定时方式2)编程实现在P1.3上输出频率为500Hz方波脉冲,(用中断方式实现)。
解:
频率为500Hz方波脉冲,周期为2000μs,每半个周期P1.3电平翻转一次即每1000μsP1.3电平翻转一次
采用方式2,最大定时是28=256μs(初值为0),所以取整,定时250μs,即4次中断完成一次反转。
TC=M-T/T计数=28-250μs/1μs=06H
程序:
ORG0000H
AJMPMAIN
ORG000BH
AJMPTTT0
MAIN:
MOVTMOD,#02HTTT0:
DJNZ50H,NEXT
MOVTH0,#06HCPLP1.3;
MOVTL0,#06HMOV50H,#04H
MOVIE,#82HNEXT:
RETI
MOV50H,#04H
SETBTR0
SJMP$
END
4.设单片机主频为12MHz,利用定时器T1(定时方式2)编程实现在P1.3上输出频率为500Hz方波脉冲,(用中断方式实现)。
解:
频率为500Hz方波脉冲,周期为2000μs,每半个周期P1.3电平翻转一次即每1000μsP1.3电平翻转一次
采用方式2,最大定时是28=256μs(初值为0),所以取整,定时250μs,即4次中断完成一次反转。
TC=M-T/T计数=28-250μs/1μs=06H
程序:
ORG0000H
AJMPMAIN
ORG001BH
AJMPTTT1
MAIN:
MOVTMOD,#20HTTT0:
DJNZ50H,NEXT
MOVTH1,#06HCPLP1.3
MOVTL1,#06HMOV50H,#04H
MOVIE,#88HNEXT:
RETI
MOV50H,#04H
SETBTR1
SJMP$
END
六、(给出电路、按要求编写程序)——首先,五个实验都在其中。
1.如图所示,让数码管(共阴极)循环显示0,1,2…….8,9;0,1,2,……,每个数字显示2秒,主频12MHz,分别用两种方法(延时子程序和用定时器0中断方式)实现延时。
用延时子程序实现延时。
MAIN:
MOVR2,#00H;
MOVDPTR,#SZ;
XS:
MOVA,R2;
MOVCA,@A+DPTR;
MOVP1,A;
LCALLYS;
INCR2;
CJNER2,#0AH,XS;
JMPMAIN;
;0--9的显示代码
;延时2秒子程序(主频为12MHz)
YS:
MOVR5,#20;
YS1:
MOVR6,#200
YS2:
MOVR7,#250;
YS3:
DJNZR7,YS3;
DJNZR6,YS2
DJNZR5,YS1
RET
sz1DB0C0H,0CFH,0A4H,0B0H,99H,92H,82H,0F8H,
DB80H,90H;共阳极数码管字型代码
SZDB3fH,60H,5BH,4FH,66H,6DH,7DH,07H,
DB7FH,6FH;共阴极数码管字型代码
END
用中断服务子程序实现延时。
ORG0000HORG000BH
LJMPMAIN;AJMPTTT1
MAIN:
MOVR2,#00H;ORG0090H
MOVDPTR,#SZ;TTT1:
DJNZR3,NEXT
XS:
MOVIE,#82HMOVR3,#40
MOVTMOD,#01HINCR2
MOVTH0,#3CHCJNER2,#0AH,NEXT1
MOVTL0,#0B0HMOVR2,#00H
MOVR3,#40NEXT1:
MOVA,R2
MOVA,R2MOVCA,@A+DPTR
MOVCA,@A+DPTRMOVP1,A
MOVP1,A;NEXT:
MOVTH0,#3CH
SETBTR1MOVTL0,#0B0H
SJMP$RETI
;0--9的显示代码
sz1DB0C0H,0CFH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;共阳极数码管字型代码
SZDB3fH,60H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;共阴极数码管字型代码
END
2.如图所示,用中断的方法实现A/D转换,并将转换结果放到片内RAM40H单元;如果连接ADC0804片选引脚CS的不是P1.0,而是P2.1,如何用MOVX指令启动A/D转换和对转换后数据的读取?
ORG0000H
AJMPMAIN
ORG0013H
AJMPINT111
MAIN:
MOVIE,#84HINT111:
CLRP3.7
CLRP1.0MOV40H,P0
CLRP3.6RETI
SJMP$
如果连接ADC0804片选引脚CS的不是P1.0,而是P2.1,用MOVX指令启动A/D转换和对转换后数据的读取程序如下:
ORG0000H
AJMPMAIN
ORG0013H
AJMPINT111
MAIN:
MOVIE,#84HINT111:
MOVXA,@DPTR
MOVDPTR,#0FDFFHMOV40H,A
MOVX@DPTR,ARETI
SJMP$
3.如图所示,让发光二极管从低位循环点亮,每个点亮2秒,主频12MHz,分别用两种方法(延时子程序和用定时器0中断方式)实现延时。
diolabitP2.5;
BG:
mova,#0feh
LOOP:
movp1,a;点亮第一灯
setbdiola
ACALLDELAY1S
rlA
SJMPLOOP
DELAY1S:
MOVR5,#10;1μS
DELAY0:
MOVR6,#250;1x10μS=10μS
DELAY1:
MOVR7,#200;1x250x10μS=2500μS=2.5mS
DELAY2:
DJNZR7,DELAY2;2X200X250X10μS=1000000μS=1S
DJNZR6,DELAY1;2X250X10=5000μS=5mS
DJNZR5,DELAY0;2x10μS=20μS
RET;2μS
END
diolabitP2.5;
ORG0000H
AJMPBG
ORG000BH
AJMPTTT0
BG:
mova,#0fEh;点亮第一、二灯
MOVP1,A
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
SETBTR0
MOVR7,#20
SJMP$
TTT0:
DJNZR7,NEXT
RLA
MOVP1,A
setbdiola
MOVR7,#20
NEXT:
MOVTH0,#3CH
MOVTL0,#0B0H
RETI
END
七、硬软件设计
1.设计一个74LS373为输出接口,并驱动数码管,让数码管循环显示0,1,2…….8,9,0,1,2,……,每个数字显示2秒,主频12MHz,用延时子程序实现延时。
MAIN:
MOVR2,#00H;
MOVDPTR,#SZ;
XS:
MOVA,R2;
MOVCA,@A+DPTR;
MOVDPTR,#7FFFH;
MOVX,@DPTR,A
LCALLYS;
INCR2;
CJNER2,#0AH,XS;
JMPMAIN;
;0--9的显示代码
;延时2秒子程序(主频为12MHz)
YS:
MOVR5,#20;
YS1:
MOVR6,#200
YS2:
MOVR7,#250;
YS3:
DJNZR7,YS3;
DJNZR6,YS2
DJNZR5,YS1
RET
sz1DB0C0H,0CFH,0A4H,0B0H,99H,92H,82H,0F8H,
DB80H,90H;共阳极数码管字型代码
SZDB3fH,60H,5BH,4FH,66H,6DH,7DH,07H,
DB7FH,6FH;共阴极数码管字型代码
END
2.设计一个扩展输入接口74LS244用于连接独立键盘,其地址线是P2.6;.扩展输出接口74LS373用于连接8个八光二极管(用共阴极连接方式,其地址线是P2.7.开关状态控制P1口LED显示灯熄灭的电路,并编写控制程序。
MOVP0,#0FFH
LOOP:
MOVDPTR,#0BFFFH
MOVXA,@DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
SJMPLOOP
END
扩展输入接口74LS244用于连接独立键盘,其地址线是P2.6;.扩展输出接口74LS373用于连接8个八光二极管(用共阴极连接方式,其地址线是P2.7
MOVP0,#0FFH
LOOP:
MOVDPTR,#0BFFFH
MOVXA,@DPTR
CPLA
MOVDPTR,#7FFFH
MOVX@DPTR,A
SJMPLOOP
END
3.设计一个8751应用系统,扩展一片6264,P2.5作其片选信号引脚,扩展一片8255可编程接口芯片,P2.6作其片选信号引脚,画出逻辑框图。
写出6264的地址范围,写出四个口(命令/状态口、PA口、PB口、PC口)地址,并写入命令字,将8255的PA口为基本输出方式,PB口、PC口为基本输入方式。
A0
A1PA
D0~D7
PB
RST8255
CSPC
A0~A7
6264
D0~D7
ALE
A8~A12
CS
P0
8751
ALE
RST
P2.0~P2.4
P2.5
P2.6
88
74LS373
8
5
答:
6264的地址范围是4000H~5FFFH;
四个口(PA口、PB口、PC口、命令/状态口)的地址分别是:
2000H、2001H、2002H、2003H;
将8255的PA口为基本输出方式,PB口、PC口为基本输入方式的命令是:
MOVDPTR,#2003H
MOVA,#8BH
MOVX@DPTR,A
4设计一个用中断的方法实现A/D转换的电路与程序,如果连接ADC0804片选引脚CS接单片机的P1.0,中断引脚INTR接单片机的INT1,并将转换结果放到片内RAM40H单元;画出电路图并编写程序。
ORG0000H
AJMPMAIN
ORG0013H
AJMPINT111
MAIN:
MOVIE,#84HINT111:
CLRP3.7
CLRP1.0MOV40H,P0
CLRP3.6RETI
SJMP$
设计一个8751应用系统,扩展一片2732,P2.6作其片选信号引脚,扩展一片8255可编程接口芯片,P2.7作其片选信号引脚,画出逻辑框图。
写出2732的地址范围,写出四个口(命令/状态口、PA口、PB口、PC口)地址,并写入命令字,将8255的PA口、PB口为基本输出方式,PC口为基本输入方式。
A0
A1PA
D0~D7
PB
RST8255
CSPC
A0~A7
D0~D7
ALE
A8~A13
CS
27128
P0
8751
ALE
RST
P2.0~P2.5
P2.6
P2.7
88
74LS373
8
6
答:
27128的地址范围是8000H~0BFFFH;
四个口(PA口、PB口、PC口、命令/状态口)的地址分别是:
4000H、4001H、4002H、4003H;
将8255的PA口、PB口为基本输出方式、PC口为基本输入方式的命令是:
MOVDPTR,#4003H
MOVA,#89H
MOVX@DPTR,A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 复习题