单片机原理接口及应用李群芳版习题解答参考 下载本文

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

习题解答

预备篇

计算机的基础知识

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 1025 1025H 01000205H 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.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)利用乘法指令 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 CLR C

MOV A,20H

RLC A MOV 20H,A MOV A,21H RLC A MOV 21H,A MOV A,22H 3.1

RLC A MOV 22H,A MOV A,#0 RLC A

MOV 23H,A SJMP $

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

因为是多个单元操作,为方便修改地址使用间址操作。片外地址用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