单片机基础(第三版)课后答案李广弟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机基础课后答案
第三版(就是它了)
第一章
一、填空题
1.1110 0EH 10011100 01100100
2. 4
3. 255 -51
4. 输入设备
5. 84
6. 630 * 8 * 1024
7. 位字节字bit btype word
8. 1111 1111 00100100 11011011
9. 110 89 -115 -50
二、单选:
DBCAB BBCB
第二章
一、填空
1.PC PC
2.反向器晶振两只电容短
3.加电手动0000H 07H 第0 00H 07H
4. 6 2 1 12
5.DPTR DPH DPL
6.64KB
单选题
DCCAC AD
第三章
一、填空题:
1.1031
2.34H 1 1 1
3.略
4.1100H
5. 2
6.30H 71H
0A5H
0A5H
75H
0A7H
0AAH 0 1
IFH 1 1
0AAH 0 1
20H 1 0
0D5H 1 1
49H 0 0
二、单选题
CCBDCA
三、其它类型题
错错对
错错错
对错错
错错对
对对对
错对对
错对错
错对
(三)其它类型题
3.编写程序将RAM20H-23H 单元的高4 位写1,低4 位写0。
分析:就是把这四个单元写入F0H。用一个DJNZ 的循环。
ORG 0000H
MOV R0,#1FH ;R0 指向20H 单元
MOV R5,#04H; 四个数
LOOP: INC R0
MOV @R0,#0F0H ; 写入
DJNZ R5,LOOP ; 循环4 次
END
4.把m 和m+1 单元存有两个BCD 数,将它们合并到m 单元中,编写程序完成。
(设m=30H, 高位在30H,低数在31H)
ORG 0000H
MOV A,30H
ANL A,#0FH ;把它的高四位清零
SWAP A
MOV 30H ,A ;高低四位调一下,放回原处
MOV A,31H
ANL A,#0FH
ORL A,30H ;合并起来
MOV 30H,A
END
5.将内部RAM 中从data 单元开始的10 个无符号数相加,其和送sum 单元多,假定相加结果小于255。编写程序完成。
(设data=30H, sun =50H)
ORG 0000H
MOV R0,#2FH ; 指向前一个单元
MOV R5,#0AH ;循环10 次
CLR A ;先加到A 中
LOOP: INC R0
ADD A,@R0
DJNZ R5,LOOP
MOV 50H,A
END
6.假定8 位二进制带符号数丰于R0 中,要求编写一个求补程序,所得补码入入R1 中。
ORG 0000H
MOV A,R0
CPL A ;按位取反
ADD A,#01H ;+1
MOV R1,A
END
第四章
一、填空题
1. 25H 40H 03H
2.2.914ms
3.略
4.(A )=((30H) (A) >(30H) (A) < (30H)
5. 32.87ms
编程题
1.把长度为10H 的字符串从内部RAM 的输入缓冲区inbuf 向位物外部RAM 的输出缓冲区outbuf 传送,一直进行到遇见回车或整个字符串传送
完毕。试编程实现。
ORG 0030H
MOV R0,#inbuf
MOV R1,#outbuf
MOV R4,#10H
LOOP:MOV A,@R0 ; 从内部RAM取数
CJNE A,#0DH,LL ;是否为回车符CR
SJMP STOP ;是转停止传送
LL: MOVX @R1,A ;不是则传送到外部RAM
INC R0
INC R1
DJNZ R4,LL;沒传送完则循环
STOP: SJMP $
2、内部RAM从list 单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。
(3AH存放在运行程序时的最小的数)
ORG 0030H
MOV R0,#list
MOV A,@R0 ;取第一个正数
LOOP: INC R0 ;指向下一个正数
MOV 3AH,@R0
CJNE A,3AH,CHK ;前一个数与后一个数比较
CHK: JC LOOP1 ;前一个数小,则转
MOV A,@R0 ;前一个数大,取后一个数
LOOP1: XCH A,3AH
CJNE A,#0FFH,LOOP
XCH A,3AH ;取最小数
MOV 3BH,A
SJMP $
3.内部RAM的X,Y 单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z 单元中。
若X 为正奇数,Z =X+Y;
若X 为正偶数,Z =X∨Y;
若X 为负奇数,Z =X∧Y;
若X 为负偶数,Z =X⊕Y。
分析:负数:第7位为1,正数:第7 位为0
奇数:第0位为1,偶数:第0 位为0
ORG 0000H
MOV A,20H
CLR C
RL A
JC FS ;移到负数处处理
RR A
RR A ;第0 位移到C 再判定一下是不是1
JC ZJS ;到正奇数处
MOV A,20H
ORL A,21H
MOV 22H,A
SJMP OK
ZJS: MOV A,20H
ADD A,21H
MOV 22H,A
SJMP OK
FS: MOV A,20H
CLR C
RR A
JC FJS ;第0位是1,移到正奇数处理
MOV A,20H
XRL A,21H
MOV 22H,A
SJMP OK
FJS: MOV A,20H
ANL A,21H
MOV 22H,A
OK: END
4、把一个8 位二进制数的各位用ASCII 码表示之(亦即为“0”的位用30H 表示,为“1”的位用31H 表示)。该数存放在内部RAM 中byte
单元中。变换后得到的8 个ASCII 码存放在外部RAM以buf 始的存储单元中去。