单片机原理与应用技术江力版第三四六章答案_第1页
单片机原理与应用技术江力版第三四六章答案_第2页
单片机原理与应用技术江力版第三四六章答案_第3页
单片机原理与应用技术江力版第三四六章答案_第4页
单片机原理与应用技术江力版第三四六章答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 作业参考答案3-10.己知(A)=7AH,(R0)=34H(34H)=A5H,请写出分别执行下面各条指令后累加器A的内容。(1)MOVA, R0;(A)=34H(2)MOVA, R0;(A)=A5H(3)MOVA, 34H;(A)=A5H(4)MOVA, #34H;(A)=34H3-12.1 设(R0)=32H,(A)=48H,片内RAM中(32H)=60H, (40H)=61H。请指出在执行下列程序段后上述各单元内容的变化。MOVA,R0; (A)=(32H)=60HMOVR0,40H; (32H) =61HMOV40H,A; (40H)=(A)=60HMOVR0,#40H; (R0

2、)=40H即:执行完程序段后,(R0)=40H, (A)=60H,片内 RAM 中,(32H) =61H, (40H)=60H3-13已知(A)=83H, (R0)=47H, (47H)=34H。请写出执行完下列程序段后A的内容。ANL A,47H;(A)=83HA34H=00HORL 47H,A;(47H)=34HV00H=34HXRL A,R0;(A)=00H 34H=34HSWAP A;(A)=43H答:执行完程序段后,( A) =43H3-14 14.说明下段程序执行过程中,SP的内容及堆栈中内容的改变过程。MOVSP,#30H;(SP)=30HMOV30H,#55HMOV40H,#6

3、6HPUSH30H;(SP)=31H,堆栈区中(31H) =55HPUSH40H;(SP)=32H,堆栈区中(32H) =66HPOP30H;先将堆栈区中32H单元的内容送入30H单元,使(30H) =66H,再使 ;SP 值减 1,即:(SP)=31HPOP40H;先将堆栈区中31H单元的内容送入40H单元,使(40H) =55H,再使;SP 值减 1,即:(SP)=30H 最终,(SP)=30H,内部 RAM 中,(30H)=66H, (40H)=55H.3-15编程实现两个16位二进制数的减法。设被减数放在40H、41H单元中,减数放在50H、51H 单元,差仍存于被减数地址单元中,减数

4、、被减数都是低地址单元存放低 8 位。解: CLC CMOV A, 40HSUBB A, 50HMOV 40H, AMOV A, 41HSUBB A, 51HMOV 41H,A3-16.编写一 BCD码拼字程序,将存放在40H、41H单元的两个一位十进制数的BCD码合并构成一 个字节的压缩BCD码,并将结果保存在42H单元中(高地址单元的BCD码放在高4位)。分析:设(40H)=XYH, (41H)=WZH,贝V,合并结果为(42H) =ZYH, X,Y,W,Z取值 09.解:MOV A, 40HANL A,#0FHMOV B, AMOV A,41HANL A, #0FHSWAP AORL A

5、, BMOV 42H, A3-17.把片外数据存储器4020H单元中的数据读到累加器中,应用哪几条指令?解:方法 1: MOV DPTR, #4020H方法 2: MOV P2, #40HMOVX A, DPTR MOV R0, #20HMOVX A, R03-18.试编写程序将外部RAM 5000H单元内容传送至外部RAM 6030H单元。解:MOV解:MOVDPTR, #5000HMOVXA, DPTRMOVDPTR, #6030HMOVXDPTR, A3-20.试编写一段程序,将累加器A的高4位由P1 口的高4位输出,P1 口低4位保持不变。分析:设(A)=XYH, (P1)=WZH,则

6、执行结果为:(P1)=XZH, 解:ANLA, #0F0H;(A)=X0HANLP1,#0FH;(P1)=0ZHORLP1, A;(P1)=XZH21.试编写一段程序,将P1 口的高5位置位,低3位不变。ORL P1, #11111000B 或 ORL P1, #0F8H25. 使用位操作指令实现下列逻辑关系。(1)P1.0=(10Hv PI.1)人(ACC.0v CY)(2)P1.3=(ACC.2人 P1.0)(ACC.1v P1.1)解: (1)ORLC, ACC.0MOVF0, C;令 F0=ACC.0v CYMOVC, 10H;注意此处的10H是一个位地址而非字节地址ORLC, P1.

7、1;令 CY=(10H)vPI.1ANLC, F0冷 CY=(10H) v PI.1)人(ACC.0v CY)MOVP1.0, C(2)MOVC, ACC.2ANLC, P1.0MOV20H, C令 20H=(ACC.2a P1.0)MOVC, ACC.1ORLC, P1.1;令 CY=(ACC.1vP1.1)位指令中没有XRL指令,只能用但可利用“XY二XY + XY”来形成异或运算,MOV21H, C;令 21H=(ACC.1v P1.1)ANLC, /20HMOVF0,CMOVC,20HANLC, /21HORLC, F0;令 C=(ACC.2a P1.0)(ACC.1 v P1.1)M

8、OVP1.3, C26.试编程将内部RAM 30H3FH单元中的内容全部清0(利用循环转移指令)。解:MOVR0,#30HMOVR7,#10H;30H3FH共10H个数据LOOP: MOVR0, #00HINCR0DJNZR7, LOOP27.在程序存储器中有一个常数表,从2040H单元开始分别存放表格的第0项、第1项第n项,试编程查出表格第m项的内容。解:MOV DPTR,#2040H解:MOV A, #mMOVC A, A+DPTR第4章作业参考答案有两个4位十六进制数分别存放在片内RAM 20H、21H单元和30H、31H单元内,请编程求它们 的和,并将和存放到片内RAM 40H、41H

9、单元。有一个16位二进制负数的原码存放在片内RAM60H、61H单元内,请编程求它的补码,并将它存放到片内RAM 70H、71H单元。6. MOVA,61H解:5.设 20H、30H存放咼字节CPLAMOVA,21HADDA,#1ADDA,31HMOV71H,A;低字节取反加1MOV41H,AMOVA,60HMOVA,20HCPLAADDCA,30HADDCA,#00H;高字节取反加上进位位MU UkyA,30HSETBACC.7;高字节的符号位一定为1MOV40H,AMOV 70H,AENDEND7.片内RAM中存放有20个数据,首地址为40H,请编程将数据块传送到片外RAM以50H为首地址

10、的 存储单元中。解: (编程D(编程2)MOVR7,#20MOVR7,#20MOVR0,#40HMOVR0,#40HMOVR1,#50HMOVDPTR,#0050HMOVP2,#00HLOOP: MOVA,R0LOOP: MOVA,R0MOVXDPTR,AMOVXR1,AINCR0INCR0INCDPTRINCR1DJNZR7,LOOPDJNZR7,LOOPENDEND&片外RAM中存放有20个数据,首地址为40H,请编程将数据块传送到片外RAM以5000H为首地址 的存储单元中,同时将片外RAM以40H为首地址的20个存储单元中的内容全清零。解:MOV R7,#20MOV P2,#00HMO

11、V R0,#40HMOV DPTR,#5000HLOOP: MOVX A,R0;从源区取数据MOVX DPTR,A ; 送入目的区CLR AMOVX R0,A;将源区当前单元内容清0INC R0INC DPTR;修改源区和目的区的地址DJNZ R7,LOOPEND10.请分别编写延时1 min、1 h的子程序,晶振频率12MHz。解:设1min延时子程序、1h延时子程序的名字分别为DELAY1, DELAY2DELAY1:MOV R7,#250DL1:MOV R6,#250DL2:MOV R5,#239NOPDL3:NOPNOPDJNZ R5, DL3DJNZ R6, DL2DJNZ R7,

12、DL1RET需要较精确延时,则可修改DELAY1DELAY1: MOV R7,#250;需要较精确延时,则可修改DELAY1DELAY1: MOV R7,#250;精确延时时间计算为1+(1+(1+1+4*239+2) *250+2)*250+2*1usDL2: MOV R5,#240DL3: NOPNOPDJNZ R5,DL3DJNZ R6,DL2DJNZ R7,DL1RET;延时时间=250X250* (1+1+2) *240*lus=lminDELAY2: MOV R1,#60LOOP: ACALL DELAY1DJNZ R1,LOOPRET;通过调用1min延时子程序60次,达到1h延

13、时。11.自变量X为一无符号数,存放在片内RAM区30H单元,函数Y存放在31H单元。请编写满足如下关系的程序:XW95 时寸,Y=1; 95VXV105 时,Y=2; X2105 时,Y=3。解:MOVA, 30HCJNEA,#96,NEXT1NEXT1:JNCNEXT2;X95,贝9转至 NEXT2MOV31H,#1;X105,则转至 NEXT4MOV31H,#2; 95VXV105 时,则令 Y=2SJMPDONENEXT4:MOV31H,#3; X105 时,令 Y=3DONE:SJMPEND$13. 编写双字节无符号数加法子程序。解:设子程序的入口参数为:(R0)二被加数低字节地址指

14、针,(R1)二加数低字节地址指针出口参数为: (R0)二和的高字节地址指针参考程序如下:ADD_SUB:MOVA,R0ADDA,R1MOVR0, AINCR0INCR1MOVA,R0ADDCA,R1MOVR0,AINCR0CLRAADDCA, #0MOVR0, ARET第六章 作业参考答案1(略)3.当定时器/计数器工作于方式0时,晶振频率为12MHz,请计算最小定时时间、最大定时时间、最 小计数值和最大计数值。答:当fosc=12MHz时,T机=lys,对于方式0,最小定时时间为lys,最大定时时间为8192ys, 最小计数值为1,最大计数值为8192。(补充说明,如果工作于方式1,则相应的

15、最小定时时间、最大定时时间、最小计数值和最大计数值 分别为 lys,65536ys, 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

16、:设计两个定时器,让T0作2.5ms定时器,T1作5ms定时器,定时时间一到,分别对P1.0 口和P1.1 口电平改变一次。参考方案2:只用T0作2.5ms定时器,定时时间到,P1.0电平改变1 次, 每定时2次,P1.1电平改变1次。;参考方案 1(中断方式;参考方案 1(中断方式)ORG0000HAJMPMAINORG000BHAJMPTIMER0ORG001BHAJMPTIMER1ORG0100HMAIN: SETBP1.0SETBP1.1MOVTMOD,#00HMOVTH0,#0B1HMOVTL0,#1CHMOVTH1,#63HMOVTL1,#18HSETBEASETBET0SETBE

17、T1SETBTR0SETBTR1SJMP$TIMER0:MOVTH0,#0B1HMOVTL0,#1CHCPLP1.0RETITIMER1: MOVTH1,#63HMOVTL1,#18HCPLP1.1RETIEND;参考方案1 (査询方式)ORG0000HAJMPMAINORG0100HMAIN: SETBP1.0SETBP1.1MOVTMOD,#00HMOVTH0,#0B1HMOVTL0,#1CHMOVTH1,#63HMOVTL1,#18HSETBTR0SETBTR1CHECK: JBCTF0,TIMER0JBCTF1,TIMER1SJMPCHECKTIMER0:MOVTH0,#0B1HMOV

18、TL0,#1CHCPLP1.0SJMPCHECKTIMER1: MOVTH1,#63HMOVTL1,#18HCPLP1.1SJMPCHECKEND;参考方案2 (査询方式)ORG0000HAJMPMAINORG0100HMAIN:SETBP1.0SETBP1.1MOVR7,#2MOVTMOD,#00HMOVTH0,#0B1HMOVTL0,#1CHSETBTR0LP1:JBCTF0,LP2SJMPLP1LP2:MOVTH0,#0B1HMOVTL0,#1CHCPLP1.0DJNZR7, EXITMOVR7,#2CPLP1.1EXIT:SJMPENDLP18. P1.0输出脉冲宽度调制(PWM)信号

19、,即脉冲频率为2KHz、占空比为7:10的矩形波,晶振频率为 12MHz。解:对P1.1取反时,由于高、低电平的时间不同,可选时间基准为0.05ms,高电平的软件计数为7, 低电平的软件计数为3。若采用定时器1工作于方式2,则定时初值X=256-50/1=CEH。; 参考程序 1(中断方式);参考程序2 (查询方式)ORG0000HLJMPMAINORG0000HORG001BHMAIN:SETBP1.0LJMPTIMER1MOVR7,#7MAIN:SETBP1.0MOVTMOD,#20HMOVR7,#7MOVTH1,#0CEHMOVTMOD,#20HMOVTL1,#0CEHMOVTH1,#0

20、CEHSETBTR1MOVTL1,#0CEHTIMER1:JBCTF1,LP2SETBEASJMPTIMER1SETBET1LP2:DJNZR7, TIMER1SETBTR1CPLP1.0SJMP$JNBP1.0, L1TIMER1:DJNZR7, EXITMOVR7,#7CPLP1.0SJMPTIMER1JNBP1.0, L1L1:MOVR7,#3MOVR7,#7SJMPTIMER1SJMPEXITENDL1:MOVR7,#3EXIT:RETIEND;参考程序3( 查询方式, T1 工作于方式1)ORG 0000HMAIN:SETBP1.0MOVR7,#7MOVTMOD,#10HMOVTH1

21、,#0FFHMOVTL1,#0CEHSETBTR1TIMER1:JBCTF1,LP2SJMPTIMER1LP2:MOVTH1,#0FFHMOVTL1,#0CEHDJNZR7, TIMER1CPLP1.0JNBP1.0, L1MOVR7,#7SJMPTIMER1L1:MOVR7,#3SJMPTIMER1END9.两只开关分别接入P3.0、P3.1,在开关信号4种不同的组合逻辑状态,使P1.0分别输出频率0.5kHz、1kHz、2kHz、4kHz的方波,晶振频率为12MHz。解:仍有多种设计方案。其中一种为:要求P1.0分别输出频率0.5kHz、1kHz、2kHz、 4kHz 的方波,需要的定时时

22、间分别为:P3.1P3.0P1.0输出方波频率000.5KHz011kHz102kHz114kHz1ms、0.5ms、0.25ms、0.125msP3.1P3.0P1.0输出方波频率000.5KHz011kHz102kHz114kHz; 参考程序 1ORG0000HMAIN:SETBP1.0CHECK:JBP3.1,NEXTJBP3.0,KHZ_1SJMPHZ_500NEXT:JNBP3.0,KHZ_2SJMPKHZ_4HZ_500:MOVR7,#8SJMPTO_DLYKHZ_1:MOVR7,#4SJMPTO_DLYKHZ_2:MOVR7,#2SJMPTO_DLYKHZ_4:MOVR7,#1TO_DELAY: ACALL DELAYCPLSJMPP1.0CHECKDELAY:MOVTMOD,#01HMOVTH0,#0FFHMOVTL0,#83HSETBTR0LP:JBCTF0,LP1SJMPLPLP1:DJNZR7,LP2SJMPEXITLP2:MOVTH0,#0FFHMOVTL0,#83HSJMPLPEXIT:RETEND; 参考程序 2ORG0000HMAIN:SETBP1.0CHECK:MOVP3,#0FFHMOVA, P3ANLA,#03HTEST0:CJNEA,#00H, TEST1SJMPHZ_50

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论