完整版单片机原理与应用技术江力版第三四六章答案.docx

上传人:b****3 文档编号:24751119 上传时间:2023-06-01 格式:DOCX 页数:17 大小:22.34KB
下载 相关 举报
完整版单片机原理与应用技术江力版第三四六章答案.docx_第1页
第1页 / 共17页
完整版单片机原理与应用技术江力版第三四六章答案.docx_第2页
第2页 / 共17页
完整版单片机原理与应用技术江力版第三四六章答案.docx_第3页
第3页 / 共17页
完整版单片机原理与应用技术江力版第三四六章答案.docx_第4页
第4页 / 共17页
完整版单片机原理与应用技术江力版第三四六章答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

完整版单片机原理与应用技术江力版第三四六章答案.docx

《完整版单片机原理与应用技术江力版第三四六章答案.docx》由会员分享,可在线阅读,更多相关《完整版单片机原理与应用技术江力版第三四六章答案.docx(17页珍藏版)》请在冰豆网上搜索。

完整版单片机原理与应用技术江力版第三四六章答案.docx

完整版单片机原理与应用技术江力版第三四六章答案

第三章作业参考答案

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)=34H

3-12.1设(R0)=32H,(A)=48H,片内RAM中(32H)=60H,(40H)=61H。

请指出在执行下列程序段后上述各单元内容的变化。

MOVA,@R0;(A)=(32H)=60H

MOV@R0,40H;(32H)=61H

MOV40H,A;(40H)=(A)=60H

MOVR0,#40H;(R0)=40H

即:

执行完程序段后,(R0)=40H,(A)=60H,片内RAM中,(32H)=61H,(40H)=60H

3-13已知(A)=83H,(R0)=47H,(47H)=34H。

请写出执行完下列程序段后A的内容。

ANLA,47H;(A)=83H∧34H=00H

ORL47H,A;(47H)=34H∨00H=34H

00H?

34H=34H;(A)=XRLA,@R0

SWAPA;(A)=43H

答:

执行完程序段后,(A)=43H

3-1414.说明下段程序执行过程中,SP的内容及堆栈中内容的改变过程。

MOVSP,#30H;(SP)=30H

MOV30H,#55H

MOV40H,#66H

PUSH30H;(SP)=31H,堆栈区中(31H)=55H

PUSH40H;(SP)=32H,堆栈区中(32H)=66H

POP30H;先将堆栈区中32H单元的内容送入30H单元,使(30H)=66H,再使

;SP值减1,即:

(SP)=31H

POP40H;先将堆栈区中31H单元的内容送入40H单元,使(40H)=55H,再使

;SP值减1,即:

(SP)=30H

最终,(SP)=30H,内部RAM中,(30H)=66H,(40H)=55H.

3-15编程实现两个16位二进制数的减法。

设被减数放在40H、41H单元中,减数放在50H、51H

单元,差仍存于被减数地址单元中,减数、被减数都是低地址单元存放低8位。

解:

CLCC

MOVA,40H

SUBBA,50H

MOV40H,A

MOVA,41H

SUBBA,51H

MOV41H,A

3-16.编写一BCD码拼字程序,将存放在40H、41H单元的两个一位十进制数的BCD码合并构成一个字节的压缩BCD码,并将结果保存在42H单元中(高地址单元的BCD码放在高4位)。

分析:

设(40H)=XYH,(41H)=WZH,则,合并结果为(42H)=ZYH,X,Y,W,Z取值0~9.

解:

MOVA,40H

ANLA,#0FH

MOVB,A

MOVA,41H

ANLA,#0FH

A

SWAP

ORLA,B

MOV42H,A

3-17.把片外数据存储器4020H单元中的数据读到累加器中,应用哪几条指令?

解:

方法1:

MOVDPTR,#4020H方法2:

MOVP2,#40H

MOVXA,@DPTRMOVR0,#20H

MOVXA,@R0

3-18.试编写程序将外部RAM5000H单元内容传送至外部RAM6030H单元。

解:

MOVDPTR,#5000H

MOVXA,@DPTR

MOVDPTR,#6030H

MOVX@DPTR,A

3-20.试编写一段程序,将累加器A的高4位由P1口的高4位输出,P1口低4位保持不变。

分析:

设(A)=XYH,(P1)=WZH,则执行结果为:

(P1)=XZH,

解:

ANLA,#0F0H;(A)=X0H

ANLP1,#0FH;(P1)=0ZH

ORLP1,A;(P1)=XZH

21.试编写一段程序,将P1口的高5位置位,低3位不变。

ORLP1,#11111000B

或ORLP1,#0F8H

25.使用位操作指令实现下列逻辑关系。

(1)P1.0=(10H∨Pl.1)∧(ACC.0∨CY)

(2)P1.3=(ACC.2∧P1.0)⊕(ACC.1∨P1.1)

解:

(1)ORLC,ACC.0

MOVF0,C;令F0=ACC.0∨CY

MOVC,10H;注意此处的10H是一个位地址而非字节地址

ORLC,P1.1;令CY=(10H)∨Pl.1

ANLC,F0;令CY=(10H)∨Pl.1)∧(ACC.0∨CY)

MOVP1.0,C

(2)MOVC,ACC.2

ANLC,P1.0

MOV20H,C;令20H=(ACC.2∧P1.0)

MOVC,ACC.1

ORLC,P1.1;令CY=(ACC.1∨P1.1)

但可利用“X?

Y?

XY?

XY”来形成异或运算,指令,只能用;位指令中没有XRL

MOV21H,C;令21H=(ACC.1∨P1.1)

ANLC,/20H

MOVF0,C

MOVC,20H

ANLC,/21H

ORLC,F0;令C=(ACC.2∧P1.0)⊕(ACC.1∨P1.1)

MOVP1.3,C

26.试编程将内部RAM30H~3FH单元中的内容全部清0(利用循环转移指令)。

解:

MOVR0,#30H

MOVR7,#10H;30H~3FH共10H个数据

LOOP:

MOV@R0,#00H

INCR0

DJNZR7,LOOP

27.在程序存储器中有一个常数表,从2040H单元开始分别存放表格的第0项、第1项……第n项,项的内容。

m试编程查出表格第

DPTR,#2040H

解:

MOV

MOVA,#m

A,@A+DPTR

MOVC

作业参考答案第4章31H单元内,请编程求它们21H单元和30H、5.有两个4位十六进制数分别存放在片内RAM20H、41H单元。

的和,并将和存放到片内RAM40H、单元内,请编程求它的补码,并将它存放、61H16位二进制负数的原码存放在片内RAM60H6.有一个71H单元。

到片内RAM70H、A,61H6.MOV

存放高字节设20H、30H解:

5.ACPL

A,#1ADDMOVA,21H

1低字节取反加71H,A;MOVA,31H

ADD

A,60HMOV41H,A

MOV

ACPLA,20H

MOV高字节取反加上进位位;ADDCA,#00HA,30H

ADDC1

高字节的符号位一定为;SETBACC.740H,A

MOVMOV70H,AENDEND

为首地址的50H,请编程将数据块传送到片外RAM以RAM中存放有20个数据,首地址为40H7.片内存储单元中。

)(编程1解:

)(编程2

R7,#20MOVR7,#20MOV

R0,#40HMOVR0,#40HMOV

R1,#50HMOVDPTR,#0050HMOV

P2,#00HMOVA,@R0LOOP:

MOV

A,@R0LOOP:

MOV@DPTR,AMOVX

R1,A@MOVXR0INC

R0INCDPTRINC

R1INCR7,LOOPDJNZ

R7,LOOPDJNZEND

END

为首地址5000HRAM以个数据,首地址为RAM中存放有2040H,请编程将数据块传送到片外8.片外个存储单元中的内容全清零。

为首地址的20的存储单元中,同时将片外RAM以40H解:

R7,#20MOV

P2,#00HMOV

R0,#40HMOV

DPTR,#5000H

MOV

;从源区取数据LOOP:

MOVXA,@R0

送入目的区DPTR,A;MOVX@

ACLR

0;将源区当前单元内容清@R0,AMOVX

R0INC

修改源区和目的区的地址;INCDPTR

R7,LOOPDJNZ

END

的子程序,晶振频率1min、1h12MHz请分别编写延时10.

DELAY2

,DELAY1延时子程序的名字分别为1h延时子程序、1min解:

DELAY1:

MOVR7,#250

R6,#250MOVDL1:

DELAY1需要较精确延时,则可修改R5,#240MOVDL2:

DELAY1:

MOVR7,#250NOPDL3:

MOVR6,#250DL1:

NOPMOVR5,#239DL2:

R5,DL3DJNZNOPR6,DL2DJNZNOPDL3:

R7,DL1DJNZNOPRETDJNZR5,DL3=1min*240]*1μs(1+1+2);延时时间=[250×250*DJNZR6,DL2

R1,#60DELAY2:

MOVDJNZR7,DL1DELAY1LOOP:

ACALLRET

R1,LOOPDJNZ;精确延时时间计算为RET[1+(1+(1+1+4*239+2)*250+2)*250+2]*1us延时。

60次,达到1h;通过调用1min延时子程序单元。

请编写满足如下31H单元,函数Y存放在X为一无符号数,存放在片内RAM区30H11.自变量。

时,Y=3Y=2;X≥10595时,Y=1;95<X<105时,关系的程序:

X≤A,30HMOV解:

NEXT1

96A,#CJNE

NEXT2则转至;X>95,NEXT2NEXT1:

JNC

Y=1;X≤95,则令31H,#1MOV

DONESJMP

A,#105,NEXT3NEXT2:

CJNE

NEXT4;X≥105,则转至NEXT3:

JNCNEXT4

Y=2105时,则令<X<MOV31H,#2;95

DONE

SJMP

;X≥105时,令Y=331H,#3NEXT4:

MOV

$SJMPDONE:

END

编写双字节无符号数加法子程序。

13.

加数低字节地址指针)==被加数低字节地址指针,(R1解:

设子程序的入口参数为:

(R0)和的高字节地址指针)=出口参数为:

(R0参考程序如下:

A,@R0MOVADD_SUB:

A,@R1ADD

@R0,AMOV

R0INC

R1INC

A,@R0MOV

A,@R1ADDC

@R0,AMOV

R0INC

ACLR

A,#0ADDC

@R0,AMOV

RET

作业参考答案第六章

(略)1.,请计算最小定时时间、最大定时时间、最12MHz计数器工作于方式0时,晶振频率为3.当定时器/小计数值和最大计数值。

,,最大定时时间为8192μsT=1μs,对于方式0,最小定时时间为1μs答:

当fosc=12MHz时,机。

1,最大计数值为8192最小计数值为,则相应的最小定时时间、最大定时时间、最小计数值和最大计数值1(补充说明,如果工作于方式)μs,1,65536。

分别为1μs,65536(略)4.,晶振频率100HzP1.1输出频率为0设计两个不同频率的方波,P1.0输出频率为200Hz,7.用方式12MHz。

定时T1作5ms分析:

该题编程可以有很多方案,比如可以设计两个定时器,让T0作2.5ms定时器,的定时器,让P1.1口电平改变一次;也可以只设计一个2.5ms器,定时时间一到,分别对P1.0口和口每两次定时时间到改变电平一次。

又如,定时器既可以P1.1口每次定时时间到改变电平一次,P1.0用中断方式工作,也可以用查询方式工作。

大家可自定方案。

P1.0定时器,定时时间一到,分别对2.5ms定时器,T1作5ms作参考方案1:

设计两个定时器,让T0次,P1.0电平改变1:

只用T0作2.5ms定时器,定时时间到,口和P1.1口电平改变一次。

参考方案2电平改变次。

1每定时2次,P1.1;参考方案1(中断方式);参考方案(查询方式)参考方案21(查询方式);0000HORG0000HORGORG0000HMAINAJMPMAINAJMPAJMPMAIN000BH

ORG0100H

0100HORGORGTIMER0

AJMPP1.0

SETBSETBP1.0MAIN:

MAIN:

001BH

ORGP1.1SETBSETBP1.1TIMER1

AJMPR7,#2MOVMOVTMOD,#00H0100H

ORG

TMOD,#00HMOVMOVTH0,#0B1HP1.0

SETBMAIN:

P1.1SETBTH0,#0B1HMOVTL0,#1CHMOV

TMOD,#00HMOVTL0,#1CHMOVMOVTH1,#63H

TH0,#0B1HMOVTR0SETBTL1,#18HMOVTL0,#1CH

MOVTF0,LP2

JBCLP1:

SETBTR0TH1,#63H

MOVLP1

SETBTR1SJMPTL1,#18H

MOVTH0,#0B1HMOVLP2:

CHECK:

JBCTF0,TIMER0EA

SETBTL0,#1CHJBCTF1,TIMER1MOVET0

SETB

P1.0CPLCHECKSJMPET1

SETB

R7,EXITDJNZTR0

SETB

TR1SETBTIMER0:

MOVTH0,#0B1HMOVR7,#2

SJMP$MOVTL0,#1CHCPLP1.1TIMER0:

MOVTH0,#0B1HCPLP1.0EXIT:

SJMPLP1

MOVTL0,#1CH

SJMPCHECKEND

CPLP1.0

TIMER1:

MOVTH1,#63H

RETIMOVTL1,#18HTIMER1:

MOVTH1,#63H

CPLP1.1MOVTL1,#18H

SJMPCHECKCPLP1.1

RETIEND

END

的矩形波,晶振频率为、占空比为7:

10输出脉冲宽度调制(PWM)信号,即脉冲频率为2KHz8.P1.012MHz。

,,高电平的软件计数为7P1.1取反时,由于高、低电平的时间不同,可选时间基准为0.05ms解:

对X=256-50/1=CEH。

工作于方式2,则定时初值低电平的软件计数为3。

若采用定时器11(中断方式);参考程序)

2(查询方式;参考程序0000H

ORG0000HORGMAIN

LJMPP1.0SETBMAIN:

001BH

ORGR7,#7MOVTIMER1

LJMPTMOD,#20HMOVP1.0

SETBMAIN:

TH1,#0CEHMOVR7,#7

MOVTL1,#0CEHMOVTMOD,#20H

MOVTR1SETBTH1,#0CEH

MOVTF1,LP2TIMER1:

JBCTL1,#0CEH

MOVTIMER1SJMPEA

SETBR7,TIMER1DJNZLP2:

ET1

SETBP1.0CPLTR1

SETBP1.0,L1JNB$

SJMPR7,#7MOVR7,EXIT

TIMER1:

DJNZTIMER1SJMPP1.0

CPLR7,#3MOVL1:

P1.0,L1

JNBTIMER1SJMPR7,#7

MOVENDEXIT

SJMPR7,#3

MOVL1:

RETIEXIT:

END

)工作于方式13参考程序(查询方式,T1;0000H

ORG

P1.0SETBMAIN:

R7,#7MOV

TMOD,#10HMOV

TH1,#0FFHMOV

TL1,#0CEHMOV

TR1SETB

TF1,LP2JBCTIMER1:

TIMER1SJMP

TH1,#0FFHMOVLP2:

TL1,#0CEH

MOV

R7,TIMER1

DJNZ

P1.0CPL

P1.0,L1JNB

R7,#7MOV

TIMER1SJMP

R7,#3L1:

MOV

TIMER1SJMP

END

、0.5kHz分别输出频率P1.0使种不同的组合逻辑状态,4在开关信号,P3.1、P3.0两只开关分别接入9.

1kHz、2kHz、4kHz的方波,晶振频率为12MHz。

解:

仍有多种设计方案。

其中一种为:

输出方波频率P3.1P3.0P1.0、2kHz、1kHz、要求P1.0分别输出频率0.5kHz000.5KHz

4kHz的方波,需要的定时时间分别为:

011kHz

可设计一个、0.125ms1ms、0.5ms、0.25ms102kHz

的定时器,作为基准时间,再加上软0.125ms1

14kHz工作T0、2、1即可。

设定时器件计数器8、4,查询方式工作,参考程序如下。

于方式11

参考程序;;参考程序20000H

ORGORG0000HP1.0

MAIN:

SETBMAIN:

SETBP1.0P3.1,NEXT

CHECK:

JBCHECK:

MOVP3,#0FFHP3.0,KHZ_1

JBMOVA,P3HZ_500

SJMPANLA,#03HP3.0,KHZ_2

NEXT:

JNBTEST0:

CJNEA,#00H,TEST1KHZ_4

SJMPSJMPHZ_500R7,#8

HZ_500:

MOVTEST1:

CJNEA,#01H,TEST2Y

SJMPTO_DLSJMPKHZ_1R7,#4

KHZ_1:

MOVTEST2:

CJNEA,#02H,TEST3Y

SJMPTO_DLSJMPKHZ_2R7,#2

KHZ_2:

MOVTEST3:

SJMPKHZ_4Y

SJMPTO_DLHZ_500:

MOVR7,#8R7,#1

KHZ_4:

MOVSJMPTO_DLYDELAY

TO_DELAY:

ACALLKHZ_1:

MOVR7,#4P1.0

CPLSJMPTO_DLYCHECK

SJMPKHZ_2:

MOVR7,#2TMOD,#01H

DELAY:

MOVSJMPTO_DLYTH0,#0FFH

MOVKHZ_4:

MOVR7,#1TL0,#83H

MOVTO_DELAY:

ACALLDELAYTR0

SETBCPLP1.0TF0,LP1

LP:

JBCSJMPCHECKLP

SJMPDELAY:

MOVTMOD,#01HR7,LP2

LP1:

DJNZMOVTH0,#0FFHEXIT

SJMPMOVTL0,#83HTH0,#0FFH

MOVLP2:

SETBTR0TL0,#83H

MOVLP:

JBCTF0,LP1LP

SJMPSJMPLPRETEXIT:

LP1:

DJNZR7,LP2ENDSJMPEXITLP2:

MOVTH0,#0FFHMOVTL0,#83HSJMPLPEXIT:

RETEND3

;参考程序0000H

ORG

P1.0

SETBAIN:

M

CHECK:

JBP3.1,NEXT

JBP3.0,KHZ_1

SJMPHZ_500

NEXT:

JNBP3.0,KHZ_2

SJMPKHZ_4

HZ_500:

MOVR7,#8

D1:

ACALLDELAY

DJNZR7,D1

CPLP1.0

SJMPCHECK

KHZ_1:

MOVR7,#4

D2:

ACALLDELAY

DJNZR7,D2

CPLP1.0

SJMPCHECK

KHZ_2:

MOVR7,#2

D3:

ACALLDELAY

DJNZR7,D3

CPLP1.0

SJMPCHECK

KHZ_4:

MOVR7,#1

D4:

ACALLDELAY

DJNZR7,D4

CPLP1.0

SJMPCHECK

DELAY:

MOVTMOD,#01H

MOVTH0,#0FFH

MOVTL0,#83H

SETBTR0

LP1:

JBCTF0,LP2

SJMPLP1

LP2:

MOVTH0,#0FFH

MOVTL0,#83H

EXIT:

RET

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1