单片机原理接口及应用李群芳版习题解答参考 联系客服

发布时间 : 星期四 文章单片机原理接口及应用李群芳版习题解答参考更新完毕开始阅读aae8879485868762caaedd3383c4bb4cf7ecb7ff

单片机原理、接口及应用——嵌入式系统技术基础

习题解答

预备篇

计算机的基础知识

0.1 40H,62H,50H,64H,7DH ,FFH 0.2 812 ,104, 213, 256, 2936, 941 0.3

十进制数 原码 补码 十进制数 原码 补码 28 1CH 1CH 250 FAH FAH -28 9CH E4H -347 815BH FEA5H 100 64H 64H 928 03A0H 03A0H -130 8082H FF7EH -928 83A0H FC60H 0.4 机器数真值分别为: 27,233,-128,-8,14717,31467,-27824,-12478 0.5 (1) 33H+5AH=8DH, OV=1, CY=0。 (2) -29H-5DH=7AH, OV=0, CY=1。 (3) 65H-3EH=27H, OV=0, CY=1。 (4) 4CH-68H=E4H, OV=0, CY=0。 0.6

十进制数 压缩BCD数 非压缩BCD数 ASCII码 38 38H 0308H 3338H 255 255H 020505H 323535H 483 483H 040803H 343833H 764 764H 070604H 373634H 1000 1000H 01000000H 31303030H 1025 1025H 01000205H 31303235H 0.7 ASCII码表示的十六进制数分别为: 105H, 7CAH, 2000H,8A50H 基础篇

第1章、MCS-51单片机结构

1.1 单片微型计算机(即单片机)是包含CPU、存储器和I/O接口的大规模集成芯片,即它本身包含了

除外部设备以外构成微机系统的各个部分,只需接外设即可构成独立的微机应用系统。微机处理器仅为CPU,CPU是构不成独立的微机系统的。 1.2 参见教材1.1.1节 1.3 参见教材第6页表格 1.4 参见教材表1.4

1.5 参见教材表1.1和表1.2

1.6 当PSW=10H 表明选中的为第二组通用寄器 R0~R7的地址为10H~17H

1.7 程序存储器和数据存储器尽管地址相同,但在数据操作时,所使用的指令不同,选通信号也不同,因此不会发生错误。

1.8 内部数据 程序 外部数据 程序

1.9 振荡周期=0.1667μs 机器周期=2μs 指令周期=2~8μs

1

1.10 A=0,PSW=0,SP=07,P0~P3=FFH

第2章、51系列单片机的指令系统

2.1 参见教材2.1节

2.2 因为A累加器自带零标志,因此若判断某内部RAM单元的内容是否为零,必须将其内容送到

A,JZ指令即可进行判断。

2.3 当A=0时,两条指令的地址虽然相同,但操作码不同,MOVC是寻址程序存储器,MOVX是寻址外

部数据存储器,送入A的是两个不同存储空间的内容。 2.4 目的操作数 源操作数 寄存器 直接 SP间接寻址 直接 直接 直接 直接 立即 寄存器间址 直接 寄存器 变址 寄存器间址 寄存器 2.5 Cy=1, OV=0, A=94H 2.6 √ × √ × × × √ √ × √ × × × × × √ × × × × × ×

2.7 A=25H (50H)=0 (51H)=25H (52H)=70H 2.8 SP=(61H) (SP)=(24H)

SP=(62H) (SP)=(10H) SP=(61H) DPL =(10H) SP=(60H) DPH=(24H)

执行结果将0送外部数据存储器的2410单元

2.9 程序运行后内部RAM(20H)=B4H,A=90H

2.10 机器码 源程序

7401 LA: MOV A,#01H F590 LB: MOV P1,A 23 RL A B40AFA CJNE,#10,LB 80F6 SJMP LA 2.11 ANL A,#0FH SWAP A

ANL P1,#0FH ORL P1,A SJMP $

2.12 MOV A,R0 XCH A,R1 MOV R0,A SJMP $ 2.13 (1)利用乘法指令

2

MOV B,#04H MUL AB SJMP $

(2) 利用位移指令

RL A MOV B,A

RL A MOV A,20H MOV 20H,A ANL A,#0FCH ANL A,#03H SJMP $

(3)用加法指令完成 ADD A,ACC MOV R1,A ;R1=4A

MOV R0,A ;R0=2A MOV A,B MOV A,#0 ADDC A,B ;进位×2 ADDC A,#0 MOV B,A ;存积高位 MOV B,A ;B存2A的进位 MOV A,R1 ;存积低位 MOV A,R0 SJMP $ ADD A,ACC 2.14 XRL 40H,#3CH SJMP $

2.15 MOV A,20H

ADD A,21H DA A

MOV 22H,A ;存和低字节 MOV A,#0 ADDC A,#0

MOV 23H,A ;存进位 SJMP $ 2.16 MOV A,R0

JZ ZE

MOV R1,#0FFH SJMP $

ZE: MOV R1,#0 SJMP $

2.17 MOV A,50H

MOV B,51H MUL AB MOV 53H,B MOV 52H,A SJMP $

2.18 MOV R7,#0AH WOP: XRL P1,#03H DJNZ R7,WOP SJMP $

2.19 单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进下一单元的最低位,

必须用大循环移位指令移位4次。

ORG 0 MOV A,22H CLR C RLC A MOV A,20H MOV 22H,A

RLC A MOV A,#0 MOV 20H,A RLC A MOV A,21H MOV 23H,A RLC A SJMP $ MOV 21H,A

3

第3章、MSC-51单片机汇编语言程序设计

3.1

因为是多个单元操作,为方便修改地址使用间址操作。片外地址用DPTR指示,只能用MOVX指令取数到A,片内地址用R0或R1指示,只能用MOV指令操作,因此循环操作外部数据存贮器→A→ 内部部数据存贮器。

ORG 0000H INC DPTR

MOV DPTR,#1000H INC R0 MOV R0,#20H CJNE R0,#71H,LOOP LOOP: MOVX A,@DPTR SJMP $ MOV @R0,A

3.2 要注意两高字节相加应加低字节相加时产生的进位,同时要考虑最高位的进位。

ORG 0 MOV 51H,A

MOV A,R0 MOV A,#0 ADD A,R6 ADDC A,ACC MOV 50H,A MOV 52H,A MOV A,R7 SJMP $ ADDC A,R1

3.3 A中放小于14H(20)的数,平方表的一个数据占2个字节,可用BCD码或二进制数存放.(如A中

放的是BCD码,则要先化成二进制数再查表。) ORG 0 INC A MOV DPTR,#TAB MOVC A,@A+DPTR ADD A,ACC ;A*2 MOV R6,A PUSH ACC SJMP $ MOVC A,@A+DPTR TAB: DB 00,00,00,01,00,04, 00,09,00,16H,…… MOV R7,A DB ……… 04H,00 POP ACC

3.4 先用异或指令判两数是否同号,在同号中判大小,异号中正数为大. ORG 0 BG: MOV 22H,21H MOV A,20H SJMP $ XRL A,21H CMP: MOV A,20H ANL A,#80H CJNE A,21H,GR JZ CMP GR: JNC AG JB 20H.7,BG MOV 22H,21H AG: MOV 22H,20H SJMP $ SJMP $ 3.5 fosc=6MHZ

机器周期数

DELAY: MOV R1,#0F8H 1 LOOP: MOV R3,#0FAH 1 DJNZ R3,$ 2 DJNZ R1,LOOP 2 RET 2

(1+(1+2*0xFA+2)*0xF8+2)*12/6MHz = (1+(1+2*250+2)*248+2)*2us = 249.494ms

3.6 将待转换的数分离出高半字节并移到低4位 加30H;再将待转换的数分离出低半字节并30H,安排好源地址和转换后数的地址指针,置好循环次数。

ORG 0000H MOV A,@R0

MOV R7,#05H ANL A, #0FH MOV R0,#20H ADD A,#30H MOV R1,#25H MOV @R1,A NET: MOV A,@R0 INC R0 ANL A,#0F0H INC R1 SWAP A DJNZ R7,NE ADD A,#30H SJMP $

4