单片机基础第三版课后答案_李广弟

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

分析:使用 P1.0 输出脉冲,可由定时器产生一个 250us 的定时,到了时间,就执行 CPL P1.0 就可以了。所以问题转化为产生定时。 解 :( 1) 计算定时器的初值:
(213-X)* T 机 = T 定时
代入数据得:X = 8067
由于方式 0 的特点(高 8 位,低 5 位),计算出 TH1,TL1
完毕。试编程实现。
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
MOV DPTR,#table MOV R6,#10
LOOP:MOVX A,@DPTR SETB E7H; E7H 就是累加器 A 的最高位(ACC.7), 也可 : SETB ACC.7 MOVX @DPTR,A INC DPTR DJNZ R6,LOOP
第五章
一、填空题
1. 各项任务
2. INT0
9. 110 89 -115 -50
二、单选:
DBCAB BBCB
第一章:
一、填空 1. PC PC 2. 反向器 晶振 两只电容 短 3. 加电 手动 0000H 07H 第 0 00H 4. 6 2 1 12 5. DPTR DPH DPL 6. 64KB
单选题 DCCAC AD
第二章:
07H
MOV TL1,#03H CPL P1.0 RETI
注意:定时器定时或计数,不会影响 CPU 的工作。
定时方式 1:与方式 0 没有大的区别,只有定时器是 16 位的。所以
定时=(2x –初值) T 机
方式 2:8 位初值自动赋值的定时/计数器 解法一样: (1)计算 T 的初始值 (2) TMOD =?
INC R0
INC R1
DJNZ R4,LL;沒传送完则循环
STOP: SJMP $
2、内部 RAM 从 list 单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。
(3AH 存放在运行程序时的最小的数)
ORG 0030H
MOV R0,#list
MOV A,@R0
高阻
3、 256
数据
4KB 程序
4、 16
P0
P2
5、 PSEN RD
WR ALE
6、 16KB 31FFH
7、 外存
8、 片选
9、 3 PSEN ALE
第六章
64KB 数据 64KB 程序 CE ALE 6
二、单选题 DADDC
ADA
填空题
1. 数据 ALE RD WR
2. 无条件传送 查询
中断
6、比较两个 ASCII 码字符串是否相等。字符串的长度在内部 RAM 41H 单元,第一个字符串的首地址为 42H,第二个字符串的首地址为 52H。如 果两个字符串相等,则置内部 RAM 40H 单元为 00H;否则置 40H 单元为 FF。
ORG 0030H MOV R0,#42H MOV R1,#52H MOV R7,41H ;字符串长度 LOOP: MOV A,@R0 MOV 30H,@R1
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 始的存储单元中去。
DJNZ R5,LOOP
5.编程实现运算式 c = a2+b2 假定 a、 b、 c 3 个数分别存放在内部 RAM 的 DA、DB、DC 单元中,别有平方运算子程序调用。
(内部 RAM 的 DA、DB、DC 单元设为 20H 21H 22H) ORG 0000H MOV A,20H PUSH ACC AJMP SQR POP ACC MOV 22H,A MOV A,21H PUSH ACC AJMP SQR POP ACC ADD A,22H MOV 22H,A 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







(三)其它类型题 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
LOOP: JBC TF1,LOOP1 AJMP LOOP
LOOP1: MOV TH1,#0FCH MOV TL1,#03H CPL P1.0
AJMP LOOP
方法二:使用中断的方法。需确定寄存器:TMOD = 00H IE =88H TCON =40H (或 SETB TR1)
T1 的中断向量=001BH 程序如下:
CJNE A,30H,LK INC R0 INC R1 DJNZ R7,LOOP MOV 40H ,#00H SJMP DD LK: MOV 40H,#0FFH DD: SJMP DD
7.外部 RAM 首址为 table 的数据表中,有 10 个字节的数据。编程将每个字节的最高位无条件地置“1”。 ORG 0030H
3. 缓冲 锁存
4. 12
11
5. 高 口方式定义 C 位置位/复位
6. 方式 1 输出
方式 1 输出 输出
7.
10100111
单选题 DACDBB
第七章
输入
************************
一、填空题
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
;取第一个正数
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
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
奇数:第 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
;取最小数
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
第三章:
一、填空题:
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
三、其它类型题
















5.将内部 RAM 中从 data 单元开始的 10 个无符号数相加,其和送 sum 单元多,假定相加结果小于 255。编写程序完成。 (设 data=30H, sun =50H)
ORG 0000H MOV R0,#2FH ; 指向前一个单元 MOV R5,#0AH ;循环 10 次 CLR A ;先加到 A 中
第四章:
一、填空题
1. 25H 40H 03H
2.2.914ms
3.略
4.( A) =((30H) (A) >(30H) (A) < (30H)
5. 32.87ms
编程题
1.把长度为 10H 的字符串从内部 RAM 的输入缓冲区 inbuf 向位物外部 RAM 的输出缓冲区 outbuf 传送,一直进行到遇见回车或整个字符串传送
得 TH1 = 0FCH
TL1 = 03H
(2) 计算出 TMOD 的初始值: TMOD =00H
(3) 编程实现: 方法一:使用查询法。程序不断地查询 TF1 的值。如定时器溢出(TF1=1),则 CPL P1.0
所以: MOV TMOD ,#00H MOV TH1,#0FCH MOV TL1,#03H MOV IE, #00H ;不用中断的方法,关掉 SETB TR1 ;开启定时器
(2)程序设计
方式三: T0:
――TL0 8 位,可作定时也可作计数,与方式 0,一样使用。 ――TH0:8 位,只能作定时,借作 TR1 TF1 T1:没法中断,只能产生不断的脉冲,--全波特率
可用方式 0,1,2。如要停止脉冲,要强制设方式 3
一、填空题
1、 8 16 13 2
2、 高电平 低电平
ORG 0030H MOV R0,#byte MOV DPTR,#buf MOV R5,#08H
MOV A,@R0 LOOP: RLC A
MOV R7,A JC LOOP1 MOV A,#30H SJMP LOOP2
LOOP1: MOV A,#31H LOOP2: MOVX @DPTR,A
MOV A,R7 INC DPTR
ORG 0000H AJMP MAIN ORG 001BH AJMP T1_TIMER MAIN:MOV TMOD,#00H
MOV TCON,#40H MOV IE,#88H MOV TCON ,#40H
MOV TH1,#0FCH MOV TL1,#03H Here :AJMP Here T1_TIMER: MOV TH1,#0FCH
T0 INT1 T1 串口
3. PC
PC
ROM
4. 中断源
查询状态
5. 1000000
1000000/65536 = 15.26
6. 100 ms
7. 111
101
8. T1 2 0FFH 001BH
二、单选题: DCAADCD
单片机基础 第五章 习题
课本 5。.1 设单片机的晶振频率为 6MHZ,使用定时器 1 以方式 0 产生 500us 的等宽正方波连续脉冲,并由 P1.0 输出。
相关文档
最新文档