单片机原理与应用技术江力版第三四六章答案
更新时间:2024-01-29 11:52:01 阅读量: 教育文库 文档下载
第三章 作业参考答案
3-10. 己知(A)=7AH,(R0)=34H,(34H)=A5H,请写出分别执行下面各条指令后累加器A的内容。 (1) MOV A,R0 ;(A)=34H (2) MOV A,@R0 ;(A)=A5H (3) MOV A,34H ;(A)=A5H (4) MOV A,#34H ;(A)=34H
3-12. 1设(R0)=32H,(A)=48H,片内RAM中(32H)=60H,(40H)=61H。请指出在执行下列程序段后上述各单元内容的变化。 MOV A,@R0 ; (A)=(32H)=60H MOV @R0,40H ; (32H)=61H MOV 40H,A ; (40H)=(A)=60H MOV R0,#40H ; (R0)=40H
即:执行完程序段后,(R0)=40H, (A)=60H, 片内RAM中,(32H)=61H, (40H)=60H 3-13 已知(A)=83H,(R0)=47H,(47H)=34H。请写出执行完下列程序段后A的内容。 ANL A,47H ;(A)=83H∧34H=00H ORL 47H,A ;(47H)=34H∨00H=34H XRL A,@R0 ;(A)=00H?34H=34H SWAP A ;(A)=43H 答:执行完程序段后,(A)=43H
3-14 14. 说明下段程序执行过程中,SP的内容及堆栈中内容的改变过程。 MOV SP,#30H ;(SP)=30H MOV 30H,#55H MOV 40H,#66H
PUSH 30H ;(SP)=31H, 堆栈区中(31H)=55H PUSH 40H ;(SP)=32H, 堆栈区中(32H)=66H POP 30H ;先将堆栈区中32H单元的内容送入30H单元,使(30H)=66H, 再使 ;SP值减1,即: (SP)=31H POP 40H ;先将堆栈区中31H单元的内容送入40H单元,使(40H)=55H, 再使 ;SP值减1,即: (SP)=30H
最终,(SP)=30H, 内部RAM中,(30H)=66H, (40H)=55H.
3-15 编程实现两个16位二进制数的减法。设被减数放在40H、41H单元中,减数放在50H、51H 单元,差仍存于被减数地址单元中,减数、被减数都是低地址单元存放低8位。 解: CLC C MOV A, 40H SUBB A, 50H MOV 40H, A MOV A, 41H SUBB A, 51H MOV 41H,A
3-16. 编写一BCD码拼字程序,将存放在40H、41H单元的两个一位十进制数的BCD码合并构成一个字节的压缩BCD码,并将结果保存在42H单元中(高地址单元的BCD码放在高4位)。 分析:设(40H)=XYH, (41H)=WZH, 则,合并结果为(42H)=ZYH, X,Y,W,Z取值0~9. 解: MOV A, 40H ANL A,#0FH MOV B, A MOV A,41H
ANL A, #0FH SWAP A ORL A, B MOV 42H, A
3-17. 把片外数据存储器4020H单元中的数据读到累加器中,应用哪几条指令? 解:方法1: MOV DPTR, #4020H 方法2: MOV P2, #40H MOVX A, @DPTR MOV R0, #20H MOVX A, @R0 3-18. 试编写程序将外部RAM 5000H单元内容传送至外部RAM 6030H单元。 解: MOV DPTR, #5000H MOVX A, @DPTR MOV DPTR, #6030H MOVX @DPTR, A
3-20. 试编写一段程序,将累加器A的高4位由P1口的高4位输出,P1口低4位保持不变。 分析: 设(A)=XYH, (P1)=WZH, 则执行结果为: (P1)=XZH, 解: ANL A, #0F0H ;(A)=X0H ANL P1,#0FH ;(P1)=0ZH ORL P1, A ;(P1)=XZH
21. 试编写一段程序,将P1口的高5位置位,低3位不变。 ORL P1, #11111000B 或 ORL P1, #0F8H
25. 使用位操作指令实现下列逻辑关系。 (1) P1.0=(10H∨Pl.1)∧(ACC.0∨CY) (2) P1.3=(ACC.2∧P1.0)⊕(ACC.1∨P1.1) 解:(1) ORL C, ACC.0 MOV F0, C ;令 F0=ACC.0∨CY MOV C, 10H ;注意 此处的10H是一个位地址而非字节地址 ORL C, P1.1 ;令 CY=(10H) ∨Pl.1 ANL C, F0 ;令CY=(10H) ∨Pl.1)∧(ACC.0∨CY) MOV P1.0, C (2) MOV C, ACC.2 ANL C, P1.0 MOV 20H, C ;令20H=(ACC.2∧P1.0) MOV C, ACC.1 ORL C, P1.1 ;令 CY=(ACC.1∨P1.1) ;位指令中没有XRL 指令,只能用但可利用“X?Y?XY?XY”来形成异或运算, MOV 21H, C ;令21H= (ACC.1∨P1.1) ANL C, /20H MOV F0,C MOV C,20H ANL C, /21H
ORL C, F0 ; 令C=(ACC.2∧P1.0)⊕(ACC.1∨P1.1) MOV P1.3, C
26. 试编程将内部RAM 30H~3FH单元中的内容全部清0(利用循环转移指令)。 解: MOV R0,#30H MOV R7,#10H ; 30H~3FH共10H个数据 LOOP: MOV @R0, #00H
INC R0 DJNZ R7, LOOP
27. 在程序存储器中有一个常数表,从2040H单元开始分别存放表格的第0项、第1项……第n项,试编程查出表格第m项的内容。 解: MOV DPTR,#2040H MOV A, #m MOVC A, @A+DPTR
第4章 作业参考答案
5. 有两个4位十六进制数分别存放在片内RAM 20H、21H单元和30H、31H单元内,请编程求它们 的和,并将和存放到片内RAM 40H、41H单元。 6. 有一个16位二进制负数的原码存放在片内RAM 60H、61H单元内,请编程求它的补码,并将它存放到片内RAM 70H、71H单元。 6. MOV A,61H 解:5. 设20H、30H存放高字节 CPL A MOV A,21H ADD A,#1
MOV 71H,A ;低字节取反加1 ADD A,31H
MOV A,60H MOV 41H,A
CPL A MOV A,20H
ADDC A,#00H ;高字节取反加上进位位
ADDC A,30H
SETB ACC.7 ;高字节的符号位一定为1
MOV 40H,A
MOV 70H,A
END END
7. 片内RAM中存放有20个数据,首地址为40H,请编程将数据块传送到片外RAM以50H为首地址的存储单元中。
解: (编程1) (编程2) MOV R7,#20 MOV R7,#20 MOV R0,#40H MOV R0,#40H MOV R1,#50H MOV DPTR,#0050H MOV P2,#00H LOOP: MOV A,@R0 LOOP: MOV A,@R0 MOVX @DPTR,A MOVX @R1,A INC R0 INC R0 INC DPTR INC R1 DJNZ R7,LOOP DJNZ R7,LOOP END END
8. 片外RAM中存放有20个数据,首地址为40H,请编程将数据块传送到片外RAM以5000H为首地址的存储单元中,同时将片外RAM以40H为首地址的20个存储单元中的内容全清零。 解:
MOV R7,#20 MOV P2,#00H MOV R0,#40H MOV DPTR,#5000H
LOOP: MOVX A,@R0 ;从源区取数据 MOVX @DPTR,A ; 送入目的区 CLR A MOVX @R0,A ;将源区当前单元内容清0
INC R0 INC DPTR ;修改源区和目的区的地址 DJNZ R7,LOOP END
10. 请分别编写延时1 min、1 h的子程序,晶振频率12MHz。
解:设1min 延时子程序、1h延时子程序的名字分别为DELAY1, DELAY2 DELAY1:MOV R7,#250 DL1: MOV R6, #250 需要较精确延时,则可修改DELAY1 DL2: MOV R5,#240 DELAY1: MOV R7,#250 DL3: NOP DL1: MOV R6,#250 NOP DL2: MOV R5,#239 DJNZ R5,DL3 NOP DJNZ R6,DL2 DL3: NOP DJNZ R7,DL1 NOP RET DJNZ R5, DL3 ; 延时时间=[250×250*(1+1+2)*240]*1μs=1min DJNZ R6, DL2 DELAY2: MOV R1,#60 DJNZ R7, DL1 LOOP: ACALL DELAY1 RET DJNZ R1,LOOP ;精确延时时间计算为 RET [1+(1+(1+1+4*239+2) *250+2)*250+2]*1us ;通过调用1min 延时子程序60次,达到1h 延时。
11. 自变量X为一无符号数,存放在片内RAM区30H单元,函数Y存放在31H单元。请编写满足如下关系的程序:X≤95时,Y=1;95<X<105时,Y=2;X≥105时,Y=3。 解: MOV A, 30H CJNE A,#96,NEXT1
NEXT1: JNC NEXT2 ;X>95,则转至NEXT2 MOV 31H,#1 ;X≤95,则令Y=1 SJMP DONE
NEXT2: CJNE A,#105,NEXT3
NEXT3: JNC NEXT4 ;X≥105, 则转至NEXT4 MOV 31H,#2 ; 95<X<105时,则令Y=2 SJMP DONE
NEXT4: MOV 31H,#3 ; X≥105时,令Y=3 DONE: SJMP $ END
13. 编写双字节无符号数加法子程序。
解: 设子程序的入口参数为: (R0)=被加数低字节地址指针, (R1)=加数低字节地址指针 出口参数为: (R0)=和的高字节地址指针 参考程序如下: ADD_SUB: MOV A,@R0 ADD A,@R1 MOV @R0, A INC R0 INC R1 MOV A,@R0 ADDC A,@R1
MOV @R0,A
INC R0 CLR A ADDC A, #0 MOV @R0, A RET
第六章 作业参考答案
1.(略)
3. 当定时器/计数器工作于方式0时,晶振频率为12MHz,请计算最小定时时间、最大定时时间、最小计数值和最大计数值。
答: 当fosc=12MHz时,T机=1μs,对于方式0,最小定时时间为1μs,最大定时时间为8192μs, 最小计数值为1,最大计数值为8192。
(补充说明,如果工作于方式1,则相应的最小定时时间、最大定时时间、最小计数值和最大计数值分别为1μs,65536μs, 1, 65536。) 4.(略)
7. 用方式0设计两个不同频率的方波,P1.0输出频率为200Hz,P1.1输出频率为 100Hz,晶振频率12MHz。
分析:该题编程可以有很多方案,比如可以设计两个定时器,让T0作2.5ms定时器,T1作5ms定时器,定时时间一到,分别对P1.0口和P1.1口电平改变一次;也可以只设计一个2.5ms的定时器,让P1.1口每次定时时间到改变电平一次,P1.0口每两次定时时间到改变电平一次。又如,定时器既可以用中断方式工作,也可以用查询方式工作。大家可自定方案。
参考方案1:设计两个定时器,让T0作2.5ms定时器,T1作5ms定时器,定时时间一到,分别对P1.0口和P1.1口电平改变一次。参考方案2:只用T0作2.5ms定时器,定时时间到,P1.0电平改变1次,每定时2次,P1.1电平改变1次。
;参考方案1(中断方式) ;参考方案 1(查询方式) ;参考方案2(查询方式) ORG 0000H ORG 0000H ORG 0000H AJMP MAIN AJMP MAIN AJMP MAIN ORG 000BH
ORG 0100H ORG 0100H
AJMP TIMER0
MAIN: SETB P1.0 MAIN: SETB P1.0
ORG 001BH
SETB P1.1 SETB P1.1 AJMP TIMER1
MOV TMOD,#00H MOV R7,#2 ORG 0100H
MOV TH0,#0B1H MOV TMOD,#00H MAIN: SETB P1.0
SETB P1.1 MOV TL0,#1CH MOV TH0,#0B1H MOV TMOD,#00H MOV TH1,#63H MOV TL0,#1CH MOV TH0,#0B1H MOV TL1,#18H SETB TR0 MOV TL0,#1CH
SETB TR0 LP1: JBC TF0,LP2
MOV TH1,#63H
SETB TR1 SJMP LP1
MOV TL1,#18H
CHECK: JBC TF0,TIMER0 LP2: MOV TH0,#0B1H
SETB EA
JBC TF1,TIMER1 MOV TL0,#1CH SETB ET0
SJMP CHECK CPL P1.0 SETB ET1
DJNZ R7, EXIT SETB TR0
SETB TR1 TIMER0: MOV TH0,#0B1H MOV R7,#2
MOV TL0,#1CH CPL P1.1
CPL P1.0 EXIT: SJMP LP1
END SJMP CHECK
TIMER1: MOV TH1,#63H
SJMP $
TIMER0:MOV TH0,#0B1H
MOV TL0,#1CH CPL P1.0 RETI
TIMER1: MOV TH1,#63H
MOV TL1,#18H CPL P1.1 RETI END
8. P1.0输出脉冲宽度调制(PWM)信号,即脉冲频率为2KHz、占空比为7:10的矩形波,晶振频率为12MHz。
解:对P1.1取反时,由于高、低电平的时间不同,可选时间基准为0.05ms,高电平的软件计数为7,低电平的软件计数为3。若采用定时器1工作于方式2,则定时初值X=256-50/1=CEH。 ; 参考程序1(中断方式)
; 参考程序2 (查询方式)
ORG 0000H
ORG 0000H LJMP MAIN
MAIN: SETB P1.0 ORG 001BH
MOV R7,#7 LJMP TIMER1
MOV TMOD,#20H MAIN: SETB P1.0
MOV TH1,#0CEH MOV R7,#7
MOV TL1,#0CEH MOV TMOD,#20H
SETB TR1 MOV TH1,#0CEH
TIMER1: JBC TF1,LP2 MOV TL1,#0CEH
SJMP TIMER1 SETB EA
LP2: DJNZ R7, TIMER1 SETB ET1
CPL P1.0 SETB TR1
JNB P1.0, L1 SJMP $
MOV R7,#7 TIMER1: DJNZ R7, EXIT
SJMP TIMER1 CPL P1.0
L1: MOV R7,#3 JNB P1.0, L1
SJMP TIMER1 MOV R7,#7
END SJMP EXIT
L1: MOV R7,#3
EXIT: RETI END
;参考程序3( 查询方式,T1工作于方式1)
ORG 0000H
MAIN: SETB P1.0 MOV R7,#7 MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#0CEH SETB TR1 TIMER1: JBC TF1,LP2 SJMP TIMER1 LP2: MOV TH1,#0FFH MOV TL1,#0CEH
DJNZ R7, TIMER1
CPL P1.0 JNB P1.0, L1
MOV R7,#7 SJMP TIMER1 L1: MOV R7,#3 SJMP TIMER1 END
9. 两只开关分别接入P3.0、P3.1,在开关信号4种不同的组合逻辑状态,使P1.0分别输出频率0.5kHz、1kHz、2kHz、4kHz的方波,晶振频率为12MHz。 解:仍有多种设计方案。其中一种为:
P3.1 P3.0 P1.0输出方波频率 要求P1.0分别输出频率0.5kHz、1kHz、2kHz、
0 0 0.5KHz 4kHz的方波,需要的定时时间分别为:
0 1 1kHz 1ms、0.5ms、0.25ms、0.125ms。可设计一个
1 0 2kHz 0.125ms的定时器,作为基准时间,再加上软
1 1 4kHz 件计数器8、4、2、1即可。设定时器T0工作于方式1,查询方式工作,参考程序如下。
; 参考程序1
; 参考程序2 ORG 0000H
ORG 0000H MAIN: SETB P1.0
MAIN: SETB P1.0 CHECK: JB P3.1,NEXT
CHECK: MOV P3,#0FFH JB P3.0,KHZ_1
MOV A, P3 SJMP HZ_500
ANL A,#03H NEXT: JNB P3.0,KHZ_2
TEST0: CJNE A,#00H, TEST1 SJMP KHZ_4
SJMP HZ_500 HZ_500: MOV R7,#8
TEST1: CJNE A,#01H,TEST2 SJMP TO_DLY
SJMP KHZ_1 KHZ_1: MOV R7,#4
TEST2: CJNE A,#02H, TEST3 SJMP TO_DLY
SJMP KHZ_2 KHZ_2: MOV R7,#2
TEST3: SJMP KHZ_4 SJMP TO_DLY
HZ_500: MOV R7,#8 KHZ_4: MOV R7,#1
SJMP TO_DLY TO_DELAY: ACALL DELAY
KHZ_1: MOV R7,#4 CPL P1.0
SJMP TO_DLY SJMP CHECK
KHZ_2: MOV R7,#2 DELAY: MOV TMOD,#01H
SJMP TO_DLY MOV TH0,#0FFH
KHZ_4: MOV R7,#1 MOV TL0,#83H
TO_DELAY: ACALL DELAY SETB TR0
CPL P1.0 LP: JBC TF0,LP1
SJMP CHECK SJMP LP
DELAY: MOV TMOD,#01H LP1: DJNZ R7,LP2
MOV TH0,#0FFH SJMP EXIT
MOV TL0,#83H LP2: MOV TH0,#0FFH
SETB TR0
LP: JBC TF0,LP1 SJMP LP LP1: DJNZ R7,LP2
MOV TL0,#83H SJMP LP EXIT: RET END
; 参考程序3 ORG 0000H
MAIN: SETB P1.0
CHECK: JB P3.1,NEXT JB P3.0,KHZ_1 SJMP HZ_500 NEXT: JNB P3.0,KHZ_2 SJMP KHZ_4 HZ_500: MOV R7,#8 D1: ACALL DELAY DJNZ R7, D1 CPL P1.0 SJMP CHECK KHZ_1: MOV R7,#4 D2: ACALL DELAY DJNZ R7, D2 CPL P1.0 SJMP CHECK KHZ_2: MOV R7,#2 D3: ACALL DELAY DJNZ R7, D3 CPL P1.0 SJMP CHECK KHZ_4: MOV R7,#1 D4: ACALL DELAY DJNZ R7, D4 CPL P1.0 SJMP CHECK DELAY: MOV TMOD,#01H MOV TH0,#0FFH MOV TL0,#83H SETB TR0
LP1: JBC TF0,LP2 SJMP LP1
LP2: MOV TH0,#0FFH MOV TL0,#83H
EXIT: RET END
正在阅读:
单片机原理与应用技术江力版第三四六章答案01-29
9.慰问信、道歉信01-11
三月,春来作文600字07-02
2017-2018学年初中教务处工作计划07-11
马克思主义政治经济学原理试题一11-17
工程造价咨询招标评分细则04-14
考研线性代数讲义03-07
用友财务流《业务解决方案》终稿12-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 单片机
- 应用技术
- 原理
- 答案
- 江力版
- 三四六
- 同济考博英语真题辅导班的英语词汇资料
- 转变观念 创新形式 积极推进理论大众化
- 化工原理(第二版)上册课后习题答案完整版柴诚敬主编
- 黑马王子量柱群指标图及跟庄等操盘系统公式
- 初中数学竞赛专题选讲-线段、角的相等关系
- 中国人民解放军电子工程学院2012年硕士研究生招生专业目录
- 09年小学生春季运动会活动方案
- 江苏省宿迁市2014届高三第一次调研测试语文试题 学生版
- C语言选择题
- 《财务管理》(祝锡萍)课后习题以及参考答案
- 安川伺服驱动器参数表和功能表
- 开嗓的方法
- STM32的SYSTICK详解
- 2011届中考化学专题复习教案15
- 行政管理--社会保障制度课程--判断题1
- 杭州市萧山区教育局文件
- 关于RRU的RSSI值过高的解决方法
- 第七章 芳烃
- 大连东软信息学院计算机组成原理期中考试试卷及答案
- 2013届高三生物二轮高考冲刺专题复习训练 第8课时(Word版,含解析)