《单片机原理及应用》部分习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单⽚机原理及应⽤》部分习题答案
《单⽚机原理及应⽤》习题参考答案
主编:⽥亚娟
编写组:单⽚机原理及应⽤精品课程组
单位:⼴东松⼭职业技术学院电⽓⼯程系⽇期: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)(0100 0111)BCD(2)(0110 1000)BCD
(3)(0001 1001 1000 0110. 0111)BCD (4)(0001 1001 0110 1001)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。

其各位定义如下:
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是堆栈和数据缓冲区。

可⽤来对运算结果等中间数据暂时保存和有关的数据堆栈。

第3章MCS-51单⽚机的指令系统
3-1~3-5略
3-6. E5 30 MOV A,30H (A)←(30H)
74 42 MOV A,#42H (A)←
85 38 74 MOV 74H,38H (74H)←(38H)
78 50 MOV R0,#50H (R0)←50H
26 ADD A,@R0 (A)←(A)+((R0))
D2 12 SETB 12H (12H)←01H
3-7. MOV A,30H ;直接寻址⽅式,将内部RAM的30H单元的内容传送
;给累加器A
MOV A,#30H ;⽴即寻址⽅式,将⽴即数30H传送给累加器A
MOV 31H,R0 ;寄存器寻址⽅式,将寄存器R0的内容传送到31H单元MOV 31H,@R0 ;寄存器间接寻址,将寄存器R0所指的地址单元的内容
;传送到31H
3-8.(1)R0的内容送R1。

MOV A, R0
MOV R1,A
(2)外部RAM 40H单元的内容送内部RAM 40H单元。

MOV R0,#40H
MOVX A,@R0
MOV 40H,A
(3)外部RAM 7E00H单元内容送内部RAM R0。

MOV DPTR,#7E00H
MOV A,@DPTR
MOV R0,A
(4)外部ROM 7E00H单元内容送内部RAM 20H单元。

MOV DPTR,#7E00H
MOV A,#00H
MOVC A,@A+DPTR
MOV 20H,A
(5)外部ROM 7E00H单元内容送外部RAM 20H单元。

MOV DPTR,#7E00H
MOV A,#00H
MOVC A,@A+DPTR
(6)外部RAM 2000H单元内容送外部RAM 1000H单元。

MOV DPTR,#2000H
MOVX A,@DPTR
MOV DPTR,#1000H
MOVX @DPTR,A
3-9. (R0)=42H,(42H)=08H,(A)=80H,(50H)=80H
3-10. MOV A,#192
ADD A,#88H
MOV 30H,A
MOV A,#00H
ADDC A,#00H
MOV 31H,A
3-11. A=57H Cy=1;A=3BH Cy=0
3-12. (20H)=00H (A)=00H Cy=1;
取消DA后:(20H)=9AH (A)=9AH Cy=0 3-13. rel=0F75H-0F46H=2FH 3-14. 与操作结果为:00H
或操作结果为:FFH
异或操作结果:FFH
3-15. C=1 P1=BBH P3=3CH
第4章MCS-51单⽚机的程序设计
4-1. ORG 0000H
CLR C
MOV A,50H
MOV B,#10
MUL AB
MOV 53H,B
ADD A,51H
MOV 52H,A
MOV A,53H
ADDC A,#0
MOV 53H,A
END
4-2. ORG 0000H
MOV R7,#30
MOV R3,#71H
MOV R0,#20H MAIN:MOV A,@R0 JB ACC.7,MAIN1
INC R6
MOV R1,R4
MOV @R1,A
AJMP LOOP
MAIN1:INC R5
MOV R1,R3
MOV @R1,A LOOP:DJNZ R7,MAIN MOV 50H,R6
MOV 70H,R5
END
4-3. ORG 0000H
CLR C
MOV R7,#4
MOV R6,#3
MOV R0,#DATA+4
MOV R1,#DATA
MOV A,@R0
JNB ACC.7,END0
LP:MOV A,@R1
CPL A
MOV @R1,A
INC R1
DJNZ R7,LP
MOV A,@R0
SETB ACC.7
MOV @R0,A
MOV R1,#DATA
MOV A,@R1
ADD A,#1
ADDC A,#0
MOV @R1,A
DJNZ R6,LP1
END0:SJMP $
END
4-4. ORG 0000H
MAIN:MOV DPTR,#4000H MOV R7,#50
CLR A
LOOP:MOVX @DPTR,A INC DPTR
DJNZ R7,LOOP
END
4-5. ORG 0000H
CLR C
MOV R0,#DA TA0
MOV A,@R0
JZ MAIN0
JNB ACC.7,MAIN1
SUBB A,#5
SJMP MAIN0
MAIN1:ADD A,#5
MAIN0: MOV DA TA2,A END
4-6. ORG 0000H
MAIN:MOV R0,#55H MOV A,60H
CLR C
SUBB A,#30H
JC MAIN1
MOV A,60H
SUBB A,#3AH
MAIN1:MOV 62H,R0
END
4-7. ORG 0000H
STADA DATA 20H
SLANG DA TA 1FH CMCRQ:MOV R0,#STADA MOV B,#00H
CRLP1:MOVX A,@40
CJNE A,#0DH,CRNEXT
MOV SLANG,B
SJMP $
CRNEXT:INC B
INC R0
SJMP CRLP1
END
4-8. ORG 0000H
MAIN:MOV R0,#20H
LOOP:CJNE @40,#20H,NKG
INC R0
SJMP LOOP
NKG:MOV 95H,R0
END
4-9. ORG 0000H
DATA EQU 30H
MAIN:MOV A,DA TA
ADD A,DA TA
MOV R2,A
ADD A,#06H
MOVC A,@A+PC
XCH A,R2
ADD A,#03H
MOVC A,@A+PC
MOV R3,A
RET
4-10. ORG 0000H MAIN:MOV R0,#40H MOV A,@R0
ANL A,#0FH
MOV B,A
INC R0
MOV A,@R0
ANL A,#0FH
SWAP A
ORL A,B
INC R0
MOV @R0,A
END
4-11. ORG 1000H DATA1 EQU 40H
DATA2 EQU 2000H MAIN:MOV R1,#14H MOV R0,#DATA1 MOV DPTR,#DA TA2 NEXT:MOV A,@DPTR XCH A,@R0
MOVX @ DPTR ,A
INC R0
INC DPTR
DJNZ R1,NEXT
SJMP $
END
4-12. ORG 1000H DATA1 EQU 40H
DATA2 EQU 2000H MAIN:MOV R1,#32H MOV R0,#DATA1 MOV DPTR,#DA TA2 NEXT:MOV A,@R0
INC R0
INC DPTR
DJNZ R1,NEXT
SJMP $
END
4-13. 平⽅表的⼀个数据占2个字节
ORG 0000H
MAIN:ADD A,A
PUSS ACC
MOVC A,@A+DPTR
MOV R7,A
POP A
INC A,
MOVC A,@A+DPTR
MOV R6,A
SJMP $
TAB:DB 00,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)引脚输⼊,⾏驶⾥程为轮胎周长×运转圈数,设轮胎周长为2 m,试实时计算出租车⾏
驶⾥程(单位⽶),数据存32H、31H、30H。

编程如下:
ORG 0000H
LJMP STA T
ORG 0003H
LJMP INT
ORG 0100H
STA T:MOV SP,#60H
SETB IT0
MOV IP,#01H
MOV 31H,#0
MOV 32H,#0
LJMP MAIN ;转主程序,MAIN主程序可以处理循环显⽰等任务。

ORG 0200H ;中断服务⼦程序⾸地址
INT:PUSH Acc
PUSH PSW
MOV A,30H
ADD A,#2
MOV 30H,A
CLR A
ADDC A,31H
MOV 31H,A
CLR A
ADDC A,32H
MOV 32H,A
PUSH PSW
PUSH Acc
RETI
程序如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXTER
ORG 1000H
MAIN:SETB IT0
SETB EX0
SETB EA
LOOP:AJMP LOOP
ORG 1050H ;中断程序⼊⼝
EXTER:MOV R2,#0FFH
MOV A,#01H
FLASH:RR A
MOV R7,#0FFH;定时
LOOP2:NOP
NOP
DJNZ R6,LOOP2
DJNZ R7,LOOP1
MOV P1, A
DJNZ R2,FLASH
RETI
END
5-11. 思路:根据要求,四个故障相当四个中断源,可利⽤中断查询⽅法,将四个中断源归结为⼀个中断请求,同时四个故障信号引到P1⼝的四个输⼊端,然后在中断程序中查询P1⼝,确定是哪⼀个故障申请的中断。

电路如下图所⽰。

⼀旦发⽣故障,单⽚机必须响应中断,因此,该中断必须设置成最⾼级中断。

在中断程序中可以显⽰故障信息。

扩展4个外中断源电路如下图所⽰。

主程序和中断服务程序如下:
ORG 0000
AJMP ZCX1
NOP
ORG 0013H
AJMP INT1
NOP
ORG 0100H
ZCX1:MOV SP,#30H
MOV IP,#04H
CLR IT1
SETB EA
SETB EX1
ZCX2:其他处理程序
AJMP ZCX2
ORG 0200H
INT1:PUSH PSW
PUSH ACC
MOV A,P1
ANL A,#0FH
JNB ACC0,X1
ACALL XY1
X2JNB:ACC2,X3
ACALL XY3
X3:JNB CC3,X4
ACALL XY4
X4:POP ACC
POP PSW
RETI
XY1:OC处理⼦程序(略)
RET
5-12~5-17略。

第6章单⽚机串⾏通信及接⼝
6-1~6-3略。

6-4. 串⾏⼝的⽅式控制字SCON=50H,允许接收,T1⼯作⽅式控制字TMOD=20H;
f=11.0592 MHz,串⾏⼝⼯作于⽅式1,波特率为4800 bps,查表6-2若晶振频率
OSC
可得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:MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
SETB TR1
MOV SCON,#50H
RPT:MOV DPTR,#3400H
MOV R7,#00H
MOV R6,#00H
MOV SBUF,R7
LOOP1:JBC TI,L00P2
AJMP LOOP1
LOOP2:MOVX A,@DPTR
ADD A,R6
MOV R6,A
INC DPTR
LOOP4:JBC TI,LOOP3
AJMP LOOP4
LOOP3:DJNZ R7,LOOP2
MOV SBUF,R6
MOV R6,#00H
LOOP6:JBC TI,LOOP5
AJMP LOOP6
LOOP5:JBC RI,LOOP7
AJMP LOOP5
LOOP7:MOV A,SBUF
JZ LOOP8
AJMP RPT
LOOP8:RET
⼄机接收程序:
⾸先接收数据长度,然后接收数据,当接收256字节后,接收校验码,进⾏累加和校验,数据传送结束时,向甲机发送⼀个状态字节,表⽰传送正确或出错。

RSU:MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
SETB TR1
MOV SCON,#50H
DPT:MOV DPTR,#4400H
LOOP0:JBC RI,L00P1
AJMP LOOP0
LOOP1:MOV A,SBUF
MOV R7,A
MOV R6,#00H
WTD:JBC RI,LOOP2
AJMP WTD
LOOP2:MOV A,SBUF
MOVX @DPTR,A
INC DPTR
ADD A,R6
DJNZ R7,WTD
LOOP5:JBC RI,LOOP4
AJMP LOOP5
LOOP4:MOV A,SBUF
XRL A,R6
MOV R6,#00H
JZ LOOP6
MOV SBUF,#0FFH
LOOP8:JBC TI,LOOP7
AJMP LOOP8
LOOP7:AJMP DPT
LOOP6:MOV SBUF,#00H
LOOP9:JBC TI,LOOP3
AJMP LOOP9
LOOP3:RET
6-6. 电路图如下图所⽰,串⾏⼝处于⽅式0条件下发送数据。

程序如下:
ORG 2000H
MOV SCON,#00H
MOV A,#0FFH
MOV SBUF,A
LOOP:JNB TI,LOOP
CLR TI
ACALL DEL
CPL A
MOV SBUF,A
SJMP LOOP
DEL:MOV R5,#10
DEL0:MOV R6,#200
DEL1:MOV R7,#248
NOP
DEL2:DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,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_ADR EQU 7FFFH ;DA的地址
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#DA_ADR ;DA的地址CLR A
LOOP: MOVX @DPTR,A
INC A
CJNE A,#0FFH,LOOP
SJMP MAIN
END
2)程序2:
0.02S
DA_ADR EQU 7FFFH ;DA的地址
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#DA_ADR ;DA的地址
CLR A
LOOP: MOVX @DPTR,A
INC A
ACALL DEL
CJNE A,#0FFH,LOOP
L1: MOVX @DPTR,A
DEC A
ACALL DEL
CJNE A,#0,L0
SJMP MAIN
DEL:MOV R7,#5
DJNZ R7,$
RET
END
3)程序3:
图中Δt=0.1ms,ΔV=10,阶梯波级数为10级。

DA_ADR EQU 7FFFH ;DA的地址
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#DA_ADR ;DA的地址CLR A
MOV R7,#5
LOOP: MOVX @DPTR,A
ACALL DEL
ADD A,#51
DJNZ R7,LOOP
SJMP MAIN
DEL:MOV R6,#5
L1:MOV R5,#255
DJNZ R5,$
DJNZ R6,L1
RET
END
8-11. 答:在启动A/D转换指令“MOVX @DPTR,A”中,A中数据写到ADC0809的三态输出锁存缓冲器,A中的数据是什么都⽆所谓,因为这时数据输出允许信号⽆效,三态输出锁存缓冲器对外呈⾼阻状态。

DPTR中的地址包含了选中转换模拟量的模拟通道和START信号。

作⽤是使STAET信号有效从⽽启动A/D转换器进⾏转换,并同时使EOC信号为低电平表⽰转换开始。

读转换信号指令“MOVX A,@DPTR”中,DPTR中的地址包含了选中转换模拟量的模拟通道和OE信号。

作⽤是使OE信号有效从⽽使数据经过三态输出锁存缓冲器输出,数据出现在数据总线上。

8-12. 答:程序如下;
ORG 0000H
ORG 0003H
LJMP INT0
ORG 0030H ;主程序
MAIN:DATA EQU 30H
MOV R0,#DATA;设⽴数据存储区指针
MOV R2,#08H ;设置8路采样计数值
SETB IT0 ;设置外部中断0为边沿触发⽅式
SETB EA ;CPU开放中断
SETB EX0 ;允许外部中断0中断
MOV DPTR,# 0BFFFH ;送⼊⼝地址并指向INT0
LOOP: MOVX @DPTR,A ;启动A/D转换,A的值⽆意义
HERE:SJMP HERE ;等待中断IN0
ORG 0100H ;中断服务程序
INT0:MOVX A,@DPTR;读取转换后的数字量
MOV @R0,A ;存⼊⽚内RAM单元
DEC DPL ;指向下⼀模拟通道
INC R0 ;指向下⼀个数据存储单元
DJNZ R2,NEXT ;8路未转换完,则继续
CLR EA ;已转换完,则关中断
IN0 IN7
CLR EX0 ;禁⽌外部中断0中断
SJMP L1
NEXT :MOVX @DPTR ,A ;再次启动A/D 转换
L1:RETI ; 中断返回
END
第9章单⽚机系统的⼯程设计
9-1~9-4略
9-5.(1)单相四拍⽅式,步间软件延时10 ms ,连续正转。

ORG 0000H AJMP START ORG 0030H
START :MOV A ,#0EEH LOOP : MOV P1, A
ACALL DELAY RL A AJMP LOOP DELAY :MOV R6,#45 DL2: MOV R5,#54 DL1: DJNZ R5,DL1 DJNZ R6,DL2 RET END
(2)双相四拍⽅式,步间软件延时10 ms ,连续反转。

ORG 0000H AJMP START ORG 0030H。

相关文档
最新文档