单片机原理及应用部分习题答案.docx
- 文档编号:11869721
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:25
- 大小:54.70KB
单片机原理及应用部分习题答案.docx
《单片机原理及应用部分习题答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用部分习题答案.docx(25页珍藏版)》请在冰豆网上搜索。
单片机原理及应用部分习题答案
《单片机原理及应用》习题参考答案
主编:
田亚娟
编写组:
单片机原理及应用精品课程组
单位:
广东松山职业技术学院电气工程系
日期:
2008年12月
第1章绪论
1-1.
(1)9AH,154;6.375,6.6H
(2)1100.011B,0C.6H;0111111.111B,7F.EH
(3)10110111B,183;1111101111.1000B;1007.5
1-2.
(1)[+1101110]原=[+1101110]反=[+1101110]补=01101110
(2)[-1111111]原=11111111[-1111111]反=10000000[-1111111]补=10000001
(3)[+1010111]原=[+1010111]反=[+1010111]补=01010111
(4)[-1000000]原=11000000[-1000000]反=10111111[-1000000]补=11000000
1-3.
(1)(01000111)BCD
(2)(01101000)BCD
(3)(0001100110000110.0111)BCD(4)(0001100101101001)BCD
1-4~1-7略。
第2章MCS-51单片机的结构和原理
2-1~2-2、2-4~2-5、2-7、2-9~2-13、略。
2-3.答:
程序状态标志寄存器PSW是一个8位可编程并可按位寻址的专用寄存器,用来存放当前指令执行结果的有关状态信息,位于特殊功能寄存器区,地址是0D0H。
其各位定义如下:
D7D6D5D4D3D2D1D0
CY
AC
F0
RS1
RS0
OV
—
P
CY(PSW.7):
进位标志。
累加器A的最高位有进位或借位时,硬件自动使该位置位(即CY=1),否则该位清零。
AC(PSW.6):
辅助进位标志。
当进行加法或减法操作时,若累加器的D3位向D4位有进位或借位时,则硬件自动将其置位,否则该位清零。
F0(PSW.5):
用户通用状态标志。
用户可对该位置位或清零,也可用软件测试该位的状态以控制程序的流向。
RS1(PSW.4)和RS0(PSW.3):
工作寄存器组选择控制位,用户通过指令对RS1和RS0的状态设置,可以选择相应的工作寄存器组。
OV(PSW.2):
溢出标志。
当有符号数加法或减法运算结果超出(-128~+127)范围时,说明计算结果已经溢出,此时该位将由硬件自动置位(即OV=1),否则清零。
PSW.1:
保留位。
也可作为用户自行定义的状态标志位,其用法与PSW.5相同。
P(PSW.0):
奇偶标志位。
每个指令周期由硬件按累加器A中值为“1”的个数的奇偶性自动置位或清零。
若A中有奇数个“1”,则P置位,否则清零。
2-6.答:
不能。
因为在这种情况下,系统要进行扩展ROM。
P0口和P2口作为专用端口使用。
P0口分时作为低8位地址的输出口和数据输入输出口。
P2口作为高8位地址输出口。
2-8.答:
00H~7FH为8051的片内RAM的空间。
①00H~1FH是通用寄存器区,共32个单元分成0,1,2,3四个区,每个区的8个单元都用R0~R7来表示。
②20H~2FH共16个单元是位寻址区,每个单元的每一位都有它自己的位地址。
③30H~7FH是堆栈和数据缓冲区。
可用来对运算结果等中间数据暂时保存和有关的数据堆栈。
我们把内部RAM中字节地址00H~7FH与位地址00~7F完全重合的现象,称为地址重叠现象,MCS-51指令系统提供了不同的访问指令和寻址方式来解决这种地址重叠现象。
CPU在对位寻址单元进行位操作时,设置有专用的位操作指令。
第3章MCS-51单片机的指令系统
3-1~3-5略
3-6.E530MOVA,30H(A)←(30H)
7442MOVA,#42H(A)←
853874MOV74H,38H(74H)←(38H)
7850MOVR0,#50H(R0)←50H
26ADDA,@R0(A)←(A)+((R0))
D212SETB12H(12H)←01H
3-7.MOVA,30H;直接寻址方式,将内部RAM的30H单元的内容传送
;给累加器A
MOVA,#30H;立即寻址方式,将立即数30H传送给累加器A
MOV31H,R0;寄存器寻址方式,将寄存器R0的内容传送到31H单元
MOV31H,@R0;寄存器间接寻址,将寄存器R0所指的地址单元的内容
;传送到31H
3-8.
(1)R0的内容送R1。
MOVA,R0
MOVR1,A
(2)外部RAM40H单元的内容送内部RAM40H单元。
MOVR0,#40H
MOVXA,@R0
MOV40H,A
(3)外部RAM7E00H单元内容送内部RAMR0。
MOVDPTR,#7E00H
MOVA,@DPTR
MOVR0,A
(4)外部ROM7E00H单元内容送内部RAM20H单元。
MOVDPTR,#7E00H
MOVA,#00H
MOVCA,@A+DPTR
MOV20H,A
(5)外部ROM7E00H单元内容送外部RAM20H单元。
MOVDPTR,#7E00H
MOVA,#00H
MOVCA,@A+DPTR
MOVR0,#20H
MOVX@R0,A
(6)外部RAM2000H单元内容送外部RAM1000H单元。
MOVDPTR,#2000H
MOVXA,@DPTR
MOVDPTR,#1000H
MOVX@DPTR,A
3-9.(R0)=42H,(42H)=08H,(A)=80H,(50H)=80H
3-10.MOVA,#192
ADDA,#88H
MOV30H,A
MOVA,#00H
ADDCA,#00H
MOV31H,A
3-11.A=57HCy=1;A=3BHCy=0
3-12.(20H)=00H(A)=00HCy=1;
取消DA后:
(20H)=9AH(A)=9AHCy=0
3-13.rel=0F75H-0F46H=2FH
3-14.与操作结果为:
00H
或操作结果为:
FFH
异或操作结果:
FFH
3-15.C=1P1=BBHP3=3CH
第4章MCS-51单片机的程序设计
4-1.ORG0000H
CLRC
MOVA,50H
MOVB,#10
MULAB
MOV53H,B
ADDA,51H
MOV52H,A
MOVA,53H
ADDCA,#0
MOV53H,A
END
4-2.ORG0000H
MOVR7,#30
MOVR6,#0
MOVR5,#0
MOVR4,#51H
MOVR3,#71H
MOVR0,#20H
MAIN:
MOVA,@R0
JBACC.7,MAIN1
INCR6
MOVR1,R4
MOV@R1,A
AJMPLOOP
MAIN1:
INCR5
MOVR1,R3
MOV@R1,A
LOOP:
DJNZR7,MAIN
MOV50H,R6
MOV70H,R5
END
4-3.ORG0000H
CLRC
MOVR7,#4
MOVR6,#3
MOVR0,#DATA+4
MOVR1,#DATA
MOVA,@R0
JNBACC.7,END0
LP:
MOVA,@R1
CPLA
MOV@R1,A
INCR1
DJNZR7,LP
MOVA,@R0
SETBACC.7
MOV@R0,A
MOVR1,#DATA
MOVA,@R1
ADDA,#1
MOV@R1,A
LP1:
INCR1
MOVA,@R1
ADDCA,#0
MOV@R1,A
DJNZR6,LP1
END0:
SJMP$
END
4-4.ORG0000H
MAIN:
MOVDPTR,#4000H
MOVR7,#50
CLRA
LOOP:
MOVX@DPTR,A
INCDPTR
DJNZR7,LOOP
END
4-5.ORG0000H
CLRC
MOVR0,#DATA0
MOVA,@R0
JZMAIN0
JNBACC.7,MAIN1
SUBBA,#5
SJMPMAIN0
MAIN1:
ADDA,#5
MAIN0:
MOVDATA2,A
END
4-6.ORG0000H
MAIN:
MOVR0,#55H
MOVA,60H
CLRC
SUBBA,#30H
JCMAIN1
MOVA,60H
SUBBA,#3AH
JNCMAIN1
MOVR0,#00H
MAIN1:
MOV62H,R0
END
4-7.ORG0000H
STADADATA20H
SLANGDATA1FH
CMCRQ:
MOVR0,#STADA
MOVB,#00H
CRLP1:
MOVXA,@40
CJNEA,#0DH,CRNEXT
MOVSLANG,B
SJMP$
CRNEXT:
INCB
INCR0
SJMPCRLP1
END
4-8.ORG0000H
MAIN:
MOVR0,#20H
LOOP:
CJNE@40,#20H,NKG
INCR0
SJMPLOOP
NKG:
MOV95H,R0
END
4-9.ORG0000H
DATAEQU30H
MAIN:
MOVA,DATA
ADDA,DATA
MOVR2,A
ADDA,#06H
MOVCA,@A+PC
XCHA,R2
ADDA,#03H
MOVCA,@A+PC
MOVR3,A
RET
TAB:
DW01,01,02,06,24,120,720,5040
END
4-10.ORG0000H
MAIN:
MOVR0,#40H
MOVA,@R0
ANLA,#0FH
MOVB,A
INCR0
MOVA,@R0
ANLA,#0FH
SWAPA
ORLA,B
INCR0
MOV@R0,A
END
4-11.ORG1000H
DATA1EQU40H
DATA2EQU2000H
MAIN:
MOVR1,#14H
MOVR0,#DATA1
MOVDPTR,#DATA2
NEXT:
MOVA,@DPTR
XCHA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR1,NEXT
SJMP$
END
4-12.ORG1000H
DATA1EQU40H
DATA2EQU2000H
MAIN:
MOVR1,#32H
MOVR0,#DATA1
MOVDPTR,#DATA2
NEXT:
MOVA,@R0
MOVXA,@DPTR
INCR0
INCDPTR
DJNZR1,NEXT
SJMP$
END
4-13.平方表的一个数据占2个字节
ORG0000H
MAIN:
ADDA,A
PUSSACC
MOVCA,@A+DPTR
MOVR7,A
POPA
INCA,
MOVCA,@A+DPTR
MOVR6,A
SJMP$
TAB:
DB00,00,00,01,00,04,00,09,00,16H,······
DB······04H,00
END
4-14~4-15略。
第5章中断系统及定时/计数器
题5-1~5-8答案略
5-9.出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外部中断(P3.2)引脚输入,行驶里程为轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。
编程如下:
ORG0000H
LJMPSTAT
ORG0003H
LJMPINT
ORG0100H
STAT:
MOVSP,#60H
SETBIT0
MOVIP,#01H
MOVIE,#81H
MOV30H,#0
MOV31H,#0
MOV32H,#0
LJMPMAIN;转主程序,MAIN主程序可以处理循环显示等任务。
ORG0200H;中断服务子程序首地址
INT:
PUSHAcc
PUSHPSW
MOVA,30H
ADDA,#2
MOV30H,A
CLRA
ADDCA,31H
MOV31H,A
CLRA
ADDCA,32H
MOV32H,A
PUSHPSW
PUSHAcc
RETI
5-10.电路图如右图所示。
程序如下:
ORG0000H
LJMPMAIN
ORG0003H
LJMPEXTER
ORG1000H
MAIN:
SETBIT0
SETBEX0
SETBEA
LOOP:
AJMPLOOP
ORG1050H;中断程序入口
EXTER:
MOVR2,#0FFH
MOVA,#01H
FLASH:
RRA
MOVR7,#0FFH;定时
LOOP1:
MOVR6,#0FFH
LOOP2:
NOP
NOP
DJNZR6,LOOP2
DJNZR7,LOOP1
MOVP1,A
DJNZR2,FLASH
RETI
END
5-11.思路:
根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。
电路如下图所示。
一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。
在中断程序中可以显示故障信息。
扩展4个外中断源电路如下图所示。
主程序和中断服务程序如下:
ORG0000
AJMPZCX1
NOP
ORG0013H
AJMPINT1
NOP
ORG0100H
ZCX1:
MOVSP,#30H
MOVIP,#04H
CLRIT1
SETBEA
SETBEX1
ZCX2:
其他处理程序
AJMPZCX2
ORG0200H
INT1:
PUSHPSW
PUSHACC
MOVA,P1
ANLA,#0FH
JNBACC0,X1
ACALLXY1
X1:
JNBACC1,X2
ACALLXY2
X2JNB:
ACC2,X3
ACALLXY3
X3:
JNBCC3,X4
ACALLXY4
X4:
POPACC
POPPSW
RETI
XY1:
OC处理子程序(略)
RET
5-12~5-17略。
第6章单片机串行通信及接口
6-1~6-3略。
6-4.串行口的方式控制字SCON=50H,允许接收,T1工作方式控制字TMOD=20H;若晶振频率
=11.0592MHz,串行口工作于方式1,波特率为4800bps,查表6-2可得T1计数初值为TH1=TL1=0FAH,此时SMOD=0,所以PCON=00H。
6-5.设计双机通信系统如下:
设甲、乙两进行通信、波特率为2400,晶振均为11.0592MHz。
甲机将片外RAM的3400H~34FFH的数据块通过串行口传送给乙机,发送数据前将数据块长度发给乙机,当数据发送完向乙机发送一个累加校验和。
乙机接收将数据放在片外RAM的4400~44FFH单元中,同时进行累加和校验,如果和甲机发送的累加和一致,发数据“00H”表示接收正确,如果不一致,发数据“FFH”,甲方再重发。
解:
(1)T1计数初值:
两机晶振为11.0592MHz,波特率为2400,T1工作在定时器方式2,查表6-2可得TH1=TL1=0F4H,PCON寄存器的SMOD位为0。
(2)约定R7作为数据长度计数器,计数256个字节。
采用减1计数,初值取0,R6作为累加和寄存器。
甲机发送程序:
TRT:
MOVTMOD,#20H
MOVTH1,#0F4H
MOVTL1,#0F4H
SETBTR1
MOVSCON,#50H
RPT:
MOVDPTR,#3400H
MOVR7,#00H
MOVR6,#00H
MOVSBUF,R7
LOOP1:
JBCTI,L00P2
AJMPLOOP1
LOOP2:
MOVXA,@DPTR
MOVSBUF,A
ADDA,R6
MOVR6,A
INCDPTR
LOOP4:
JBCTI,LOOP3
AJMPLOOP4
LOOP3:
DJNZR7,LOOP2
MOVSBUF,R6
MOVR6,#00H
LOOP6:
JBCTI,LOOP5
AJMPLOOP6
LOOP5:
JBCRI,LOOP7
AJMPLOOP5
LOOP7:
MOVA,SBUF
JZLOOP8
AJMPRPT
LOOP8:
RET
乙机接收程序:
首先接收数据长度,然后接收数据,当接收256字节后,接收校验码,进行累加和校验,数据传送结束时,向甲机发送一个状态字节,表示传送正确或出错。
RSU:
MOVTMOD,#20H
MOVTH1,#0F4H
MOVTL1,#0F4H
SETBTR1
MOVSCON,#50H
DPT:
MOVDPTR,#4400H
LOOP0:
JBCRI,L00P1
AJMPLOOP0
LOOP1:
MOVA,SBUF
MOVR7,A
MOVR6,#00H
WTD:
JBCRI,LOOP2
AJMPWTD
LOOP2:
MOVA,SBUF
MOVX@DPTR,A
INCDPTR
ADDA,R6
MOVR6,A
DJNZ R7,WTD
LOOP5:
JBCRI,LOOP4
AJMPLOOP5
LOOP4:
MOVA,SBUF
XRLA,R6
MOVR6,#00H
JZLOOP6
MOVSBUF,#0FFH
LOOP8:
JBCTI,LOOP7
AJMPLOOP8
LOOP7:
AJMPDPT
LOOP6:
MOVSBUF,#00H
LOOP9:
JBCTI,LOOP3
AJMPLOOP9
LOOP3:
RET
6-6.电路图如下图所示,串行口处于方式0条件下发送数据。
程序如下:
ORG2000H
MOVSCON,#00H
MOVA,#0FFH
MOVSBUF,A
LOOP:
JNBTI,LOOP
CLRTI
ACALLDEL
CPLA
MOVSBUF,A
SJMP LOOP
DEL:
MOVR5,#10
DEL0:
MOVR6,#200
DEL1:
MOVR7,#248
NOP
DEL2:
DJNZR7,DEL2
DJNZR6,DEL1
DJNZR5,DEL0
RET
END
第7章单片机系统扩展
略。
第8章A/D和D/A转换的接口技术
8-1~8-6、8-8、8-9、8-10、8-13~8-15略。
8-7.用8031和DAC0832设计一个周期和幅值可调的锯齿波、三角波和阶梯波的波形发生器。
要求画出电路图并编程。
答:
见下图
程序如下:
1)程序1:
DA_ADREQU7FFFH;DA的地址
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#DA_ADR;DA的地址
CLRA
LOOP:
MOVX@DPTR,A
INCA
CJNEA,#0FFH,LOOP
SJMPMAIN
END
2)程序2:
DA_ADREQU7FFFH;DA的地址
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#DA_ADR;DA的地址
CLRA
LOOP:
MOVX@DPTR,A
INCA
ACALLDEL
CJNEA,#0FFH,LOOP
L2:
SJMPL1
L1:
MOVX@DPTR,A
DECA
ACALLDEL
CJNEA,#0,L0
SJMPMAIN
DEL:
MOVR7,#5
DJNZR7,$
RET
END
3)程序3:
图中Δt=0.1ms,ΔV=10,阶梯波级数为10级。
DA_ADREQU7FFFH;DA的地址
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#DA_ADR;DA的地址
CLRA
MOVR7,#5
LOOP:
MOVX@DPTR,A
ACALLDEL
ADDA,#51
DJNZR7,LOOP
SJMPMAIN
DEL:
MOVR6,#5
L1:
MOVR5,#255
DJNZR5,$
DJNZR6,L1
RET
END
8-11.答:
在启动A/D转换指令“MOVX@DPTR,A”中,A中数据写到ADC0809的三态输出锁存缓冲器,A中的数据是什么都无所谓,因为这时数据输出允许信号无效,三态输出锁存缓冲器对外呈高阻状态。
DPTR中的地址包含了选中转换模拟量的模拟通道和START信号。
作用是使STAET信号有效从而启动A/D转换器进行转换,并同时使EOC信号为低电平表示转换开始。
读转换信号指令“MOVXA,@DPTR”中,DPTR中的地址包含了选中转换模拟量的模拟通道和OE信号。
作用是使OE信号有效从而使数据经过三态输出锁存缓冲器输出,数据出现在数据总线上。
8-12.答:
程序如下;
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0
ORG0030H;主程序
MAIN:
DATAEQU30H
MOVR0,#DATA;设立数据存储区指针
MOVR2,#08H;设置8路采样计数值
SETBIT0;设置外部中断0为边沿触发方式
SETBEA;CPU开放中断
SETBEX0;允许外部中断0中断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 部分 习题 答案