关键词不能为空

当前您在: 主页 > 英语 >

《单片机原理接口及应用》_李群芳版参考答案

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-27 19:55
tags:

-

2021年2月27日发(作者:百叶)


单片机原理、接口及应用——嵌入式系统技术基础



习题解答





预备篇





计算机的基础知识



0.1



40H,62H,50H,64H,7DH ,FFH


0.2



812 ,104, 213, 256, 2936, 941


0.3



十进制数



原码



补码



十进制数



原码



补码



28


1CH


1CH


250


FAH


FAH


-28


9CH


E4H


-347


815BH


FEA5H


100


64H


64H


928


03A0H


03A0H


-130


8082


FF7EH


-928


83A0H


FC60H


H


0.4


机器数真值分别为


:



27,233,



128,



8,14717,31467,



2 7824,



12478


0.5


(1) 33H+5AH



8DH, OV=1, CY=0



(2) -29H-5DH



7AH, OV=0, CY=1




(3) 65H-3EH



27H, OV=0, CY=1



(4) 4CH-68H



E4H, OV=0, CY=0




0.6


十进制数



压缩


BCD







BCD


ASCII






38


38H


0308H


3338H


255


255H


020505H


323535H


483


483H


040803H


343833H


764


764H


070604H


373634H


1000


1000H


01000000H


31303030


H


1025


1025H


01000205H


31303235


H


0.7 ASCII


码表示的十六进制数分别为


: 105H, 7CAH, 2000H,8A50H




基础篇






1


章、


MC S-51


单片机结构



1.1



单片微型计算机


(

< br>即单片机


)


是包含


CPU



存储器和


I/O


接 口的大规模集成芯片


,


即它本身包含了除外部设备以外构成微机 系统的各个部分


,


只需接外设即可构成


独立的微机应用系统。微机处理器仅为


CPU,CPU


是构不成 独立的微机系统的。



1.2



参见教材


1.1.1




1


1.3



参见教材第


6


页表格



1.4



参见教材表


1.4


1.5



参见教材表


1.1

< br>和表


1.2


1.6




PSW=10H



表明选中的为第二组通用寄器




R0~R7


的地址为


10H~17H


1.7



程序存储器和数据存储器尽 管地址相同


,


但在数据操作时


,


所使用的指令不



,


选通信号也不同


,


因此不会发生错误。



1.8



内部数据





程序




外部数据




程序



1.9



振荡周期


=0.1667

< p>
μ


s



机器周期


=2


μ


s



指令周期


=2~8


μ


s


1.10



A=0,PSW=0,SP=07,P0~P3=FFH





2


章、< /p>


51


系列单片机的指令系统



2.1



参见教材

< br>2.1




2.2



因为


A


累加 器自带零标志


,


因此若判断某内部


RA M


单元的内容是否为零


,


必须


将其内容送到


A,JZ


指令即可进行判断。



2.3



当< /p>


A=0



,


两条 指令的地址虽然相同


,


但操作码不同


, MOVC


是寻址程序存储



,MOVX


是寻址外部数据存储器


,


送入


A


的是两个不同存储空间的内容。



2.4









目的操作数
















源操作数














寄存器




















直接














SP


间接寻址















直接














直接






















直接














直接






















立即















寄存器间址
















直接














寄存器




















变址














寄存器间址
















寄存器



2.5



Cy=1, OV=0, A=94H


2.6













×


















×













×






×






























×


















×






×













×






×













×


















×






×













×






×













×






×



2.7



A=25H



(50H)=0



(51H)=25H




(52H)=70H


2.8











SP=(61H)


(SP)=(24H)


SP=(62H)



(SP)=(10H)


SP=(61H)



DPL =(10H)


SP=(60H)



DPH=(24H)



2


执行结果 将


0


送外部数据存储器的


2410


单元



2.9



程序运行后内部


RAM(20H)=B4H,A=90H


2.10











机器码
























源程序


















7401



















LA:


MOV A,#01H

















F590



















LB:


MOV P1,A

















23

























RL





A

















B40AFA




















CJNE,#10,LB

















80F6























SJMP LA


2.11



ANL



A,#0FH









SWAP



A








ANL



P1,#0FH








ORL



P1,A









SJMP $$


2.12



MOV



A,R0








XCH



A,R1








MOV



R0,A








SJMP



$$


2.13



(1)


利用乘法指令











MOV



B,#04H










MUL AB










SJMP $$




(2)


利用位移指令



RL



A















RL



A















MOV



20H,A
















ANL



A,#03H







(3)


用加法指令完成




ADD



A,ACC













MOV



R0,A



;R0=2A














MOV



A,#0









ADDC



A,#0














MOV



B,A





;B< /p>



2A


的进位















MOV



A,R0














ADD



A,ACC







2.14



XRL



40H,#3CH











SJMP



$$


2.15




MOV



A,20H




ADD



A,21H





DA



A




MOV



22H,A






;


存和低字节





MOV



A,#0




ADDC



A,#0





MOV



23H,A







;


存进位





SJMP



$$


2.16






MOV A,R0






MOV



B,A




MOV



A,20H




ANL



A,#0FCH





SJMP



$$


MOV



R1,A





;R1=4A


MOV



A,B


ADDC



A,B





;


进位×


2


MOV



B,A







;


存积高位



MOV



A,R1






;


存积低位


SJMP



$$


3










































JZ




ZE





















MOV



R1,#0FFH






















SJMP



$$


















ZE: MOV



R1,#0






















SJMP



$$


2.17




MOV



A,50H























MOV



B,51H























MUL



AB
























MOV



53H,B























MOV



52H,A























SJMP



$$


2.18






MOV



R7,#0AH





WOP:


XRL



P1,#03H











DJNZ



R7,WOP











SJMP



$$


2.19




单片机的移位指令只对


A,


且只有循环移位指令


,


为了使本单元的最高位移


进下一单元的最低位


,


必须用大循环移位指令移位


4


次。




ORG 0





MOV A,22H



CLR C







RLC



A



MOV A,20H







MOV 22H,A












RLC A








MOV A,#0












MOV 20H,A





RLC A












MOV A,21H







MOV 23H,A












RLC A







SJMP



$$












MOV 21H,A








3


章、< /p>


MSC-51


单片机汇编语言程序设计



3.1



因为是多个单元操作


,


为方便修改地址使用间址操作。片外地址用


D PTR


指示


,


只能用

< br>MOVX


指令取数到


A,


片内地 址用


R0



R1


指示


,


只能用


MOV


指令操作


,


因此循环操作外部数据存贮器



A




内部部数据存贮器。




ORG




0000H



INC



DPTR









MOV



DPTR,#1000H




INC



R0









MOV



R0,#20H






















CJNE










R0,#71H,LOOP
















LOOP:


M


OVX A,@DPTR




SJMP



$$









MOV @R0,A



3.2




要注意两高字节相加应加低字节相 加时产生的进位


,


同时要考虑最高位的进


位。




ORG



0





MOV



51H,A












MOV



A,R0





MOV



A,#0












ADD



A,R6






ADDC



A,ACC












MOV



50H,A





MOV



52H,A












MOV



A,R7







SJMP $$












ADDC



A,R1



4


3.3



A


中放小于


14H(20)


的数


,


平方表的一个数据占


2


个字节


,


可用


BCD


码或二进制


数存放


.(



A< /p>


中放的是


BCD



,


则要先化成二进制数再查表。


)










ORG




0





INC



A










MOV



DPTR,#TAB



MOVC A,@A+DPTR










ADD







MOV



R6,A


A,ACC









;A*2







SJMP



$$









PUSH



ACC


TAB:


DB


00,00,00,01,00,04,










MOVC A,@A+DPTR


00,09,00,16H,


……











MOV



R7,A




DB




………





04H,00











POP



ACC


3.4


先用异或指令判两数是否同号


,


在同号中判大小


,


异号中正数为大< /p>


.




ORG



0





BG:



MOV



22H,21H





MOV



A,20H








SJMP



$$






XRL



A,21H





CMP: MOV



A,20H








ANL



A,#80H








CJNE



A,21H,GR





JZ



CMP





GR:



JNC



AG









JB



20H.7,BG



MOV



22H,21H



AG: MOV



22H,20H



SJMP



$$












SJMP



$$


3.5



fosc=6MHZ



机器周期数





DELAY:


MOV



R1,#0F8H







1




LOOP:



MOV



R3,#0FAH





1












DJNZ



R3,$$










2












DJNZ



R1,LOOP






2












RET

















2


(1+(1+2*0xFA+2)*0xF8+2)*12/6MHz


=


(1+(1+2*250+2)*248+2)*2us


=


249.494ms


3.6 < /p>


将待转换的数分离出高半字节并移到低


4





30H;


再将待转换的数分离出低


半字节并


30H,

< br>安排好源地址和转换后数的地址指针


,


置好循环次数。< /p>




ORG




0000H























MOV



A,@R0









MOV



R7,#05H






















ANL



A, #0FH









MOV



R0,#20H






















ADD



A,#30H









MOV



R1,#25H






















MOV



@R1,A




NET: MOV



A,@R0























INC



R0









ANL



A,#0F0H























INC



R1









SWAP



A


























DJNZ



R7,NE








ADD



A,#30H






















SJMP



$$









MOV



@R1,A























END









INC



R1


3.7

片内


RAM


间址寄存器只能有


R0



R1


两个


,


而正数、负数和零共需


3


个寄存器


指示地址


,


这时可用堆栈指针指示第三个地 址


,POP



PUSH


在指令可自动修改地址。


R0


指正数存放地址和


R1


指负数存放地址



,SP


指源数据存放的末地址


,POP


指令取


源数据


,


每取一个数地址减< /p>


1





5








ORG



0000H












MOV



R7,#10H












MOV



A,#0





















MOV



@R0,A












MOV



R4,A





















INC



R0























MOV



R5,A





















AJMP



DJ












MOV



R6,A

















NE:


INC




R5












MOV



R0,#40H


















MOV



@R1,A












MOV



R1,#50H


















INC




R1












MOV



SP,#3FH



















AJMP



DJ





NEXT:


POP



ACC


















ZER0:


INC



R6












JZ



ZER0




















DJ:



DJNZ



R7,NEXT












JB



ACC.7,NE



















SJMP



$$












INC



R4
























END


3.8



可直接用


P


标志判断


(JB



P ,ret)





ORG



0000H











MOV



A,40H











JB



P,EN













;


奇数个


1


转移












ORL A,#80H










;


偶数个


1


最高位加


“1”






EN:



SJMP



$$


3.9


取补不同于求补码


,


求补码应区别正、负数分别处理


,


而取补不分正、负


,


因正、

负数均有相对于模的补数。


用取反加


1

求补也可用模


(00H)


减该数的方法求补。






ORG



0000H





MOV



R7,#03H























A


B:


I


NC



R0





MOV



R0,#DAT A























MOV



A,@R0





MOV



A,@R0




























CPL



A





CPL



A



































ADDC



A,#0





ADD



A,#01































DJNZ



R7,AB





MOV



@R0,A






























SJMP



$$


3.10



16


个单字节累加应用


ADD


指令而不能用


ADDC


指令


,


和的低位存


A,


当和超过


一个字节


,


和的高字节存于


B,


并要加进低位相 加时产生的进位


,16


个单字节加完



,


采用右移


4


次进行除十六求平均值的运算


,


商在


B UF2


单元


,


余数在

< br>BUF2-1


单元。


ORG 0000H


DJNZ R7,NEXT



MOV



R7,#0FH


;


以上完成求和



MOV



R0,#BUF1



MOV



B,#0



MOV



R6,#04H


MOV



A,@R0



MOV



BUF2,A


MOV



R2,A


MOV



BUF2-1,#0


NEXT:


MOV



A,R2






NEX:


CLR




C



I


NC




R0


MOV



A,B



A


DD



A,@R0


RRC



A



M


OV



R2,A


MOV



B,A



M


OV



A,B


MOV



A,BUF2



A


DDC



A,#0


RRC



A


MOV



B,A


MOV



BUF2,A



6


MOV



A,BUF2-1


SJMP



$$



RRC



A


;


以上完成除十六运算



MOV



BUF2-1,A


DJNZ



R6,NEX


3.11



20H

< br>单元的内容分解为高


4


位和低


4



,


根据是否大于

9


分别作加


37H



30H


处理。



ORG



0000H


MOV



21H,A


MOV



A,20H


SJMP



$$


ANL



A,#0F0H


ASCII: CJNE



A,#0AH,NE


SWAP



A


NE:




JC



A30


ACALL



ASCII


ADD



A,#37H


MOV



22H,A


RET


MOV



A,20H


A30:




ADD



A,30H


ANL




A,#0FH


RET


ACALL



ASCII


3.12




要注意


,


位的逻辑运算其中一个操作数必须在


C




ORG



0000H












CPL



C












MOV



C,20H












ANL



C,53H












ANL



C,2FH












MOV



P1.0,C



CPL



C












SJMP



$$












ORL



C,/2FH












END


3.13





ORG




0000H










MOV



C,ACC.3










ANL



C,P1.4










ANL



C,/ACC.5










MOV



20H,C










MOV



C,B.4












CPL



C












ANL



C,/P1.5












ORL



C,20H












MOV



P1.2,C












SJMP



$$












END



7


3.14


设一字节乘数存放在


R1,


三字节的被乘数存放在


data


开始的 内部


RAM


单元


,

且低字节存放在低位地址单元


,R0


作为被乘数和积的地址 指针


,



MUL


指令


完成一字节乘一字节


,


每一次部 分积的低位加上一次部分积的高位


,


其和的进

< br>位加在本次部分积的高位上


,


并暂存

,


三字节乘一字节共需这样三次乘、加、


存操作

< p>
,



R7


作循环三次的计 数寄存器。










ORG




0000H







MOV



R7,#03H






















MOV



A,#0







MOV



R0,#data






















ADDC



A,B







MOV



R2,#0

























MOV




R2,A




NEXT:


MOV



A,@R0























INC




R0







MOV



B,R1

























DJNZ



R7,NEXT







MUL



AB



























MOV



@R0,B







ADD



A,R2

























SJMP



$$








MOV



@R0,A























END





4


章、并 行接口


P0-P3


和单片机的中断系统



4.1



4.3



参考教材


4


.1




4.4


P1.7


监测按键开关


,


P1.0


引脚输出正脉冲


,

< br>正脉冲的产生只需要将


P1.0



零、置


1


、延时、再置零即可。


P1 .0


接一示波器可观察波形。如果再接一发光二


极管

< p>
,


可观察到发光二极管的闪烁。电


路设计可参考图


4.4



汇编语言程序





ORG



0000H






ABC


:


CLR



P1.0









SETB



P1.7






JB



P1.7,$$







;


未按键等待

















J


NB



P1.7,$$





;


键未弹 起等

















SETB



P1.0
















MOV



R2,#0





DAY:


NOP













NOP













DJNZ



R2,DAY










4.4













SJMP



ABC


4.5




电路见图


4.5


,

< br>初始值送


0FH



P1,


再和


0FFH


异或从


P1


口输出


,


或使用


SWAP A


指令


,


然后从< /p>


P1


口输出


,


循 环运行


,


要注意输出后要延时。



汇编语言程序




ORG 0000H










MOV A


,


#0FH




ABC


:


MOV P1


,


A
















ACALL D05
















SWAP A



8
















SJMP ABC




D05


:


MOV R6


,


250




DY


:




M


OV R7


,


250






DAY: NOP















4.5




NOP









DJNZ R7,DAY








DJNZ R6,DY








RET









END


4.6


如使用共阴极数码管


,


阴极接地


,


阳极


a~ g


分别接


P0



P3


的某个口的


7



,



0


F


的段码列成表


,


表的内容顺次从 该口输出。如数码管接


P3


口。



汇编语言程序





ORG 0000H













NOP












MOV DPTR


,


#TAB












DJNZ R7,DAY






AGAIN:


MOV R0


,


#0












INC R0




NEXT: MOV A


,


R0












CJNE R0,#10H,NEXT












MOVC A


,


@A+DPTR












SJMP



AGAIN





MOV P3,A






TAB:



DB


3FH,06H…






;


段码












MOV R7,#0



(



)






DAY:


NOP












END



4 .7


电路设计见图


4.7


,

< p>
编程如下


:






ORG



0000H









MOV



A


,


#08H








MOV



DPTR


,


#TAB










MOVC



A


,


@A+DPTR




MOV



P1,A




MOV



R2,#08H



AGAIN:


MOV



A,#01



NEXT:


MOV



P3,A






ACALL



DAY




RL



A




CJNE



A,#10H,NEXT




DJNZ



R2,AGAIN




SJMP



$$




TAB:



DB 3FH,06H·


·


·















4.7




END


4.8 P1


口的八根线接行 线


,


输出行扫描信


< br>,


P3


口的八根线接列线


,< /p>


输入回馈信






9


见图


4.8




4.9



4.12

参见


4.2




4.13


电路设计见图


4.13


汇编语言程序





ORG 0000H









AJMP



MAIN










ORG



0003H









RL



A









;


中断服务










MOV



P1,A









RETI












4.8




MAIN:


MOV



A,#0FEH










MOV



P1,A




;


第一灯亮











SETB



EA






SETB



EX0










SETB



IT0










SJMP



$$

汇编语言中只有一个中断源


,


不存在占用别


的中断源向量地址问题


,


程序顺序排下


,



注意程序的执行过程。


C


语言无循环移位指


令移位后


,


后面补零


,


因此和


01


相或。



4.14




4.15
















4.13




ORG



0000H




MAIN:


SETB



EA












AJMP



MAIN




SETB



EX0








ORG



0003H ;


中断服务










SETB



IT0








XRL



P1,#0FFH










MOV P1,#0FFH








DJNZ



R0,NE



MOV



R0,#0AH



CLR



EA





SJMP



$$



;


等待中断




NE: RETI





ORG



0030H



因一亮一灭为一次


,


所以共十次。



4.16


两个数码管阳极经驱动器接


P1



,


阴极分别接


P3.0



P3.1






aa EQU 08H


;


存储高四位的段




CLR



A






MOVC



A,@A+DPTR




bb EQU 09H


;









MOV



aa,A


的段码





MOV



bb,A




i EQU 0AH


;


存储计数值




;a=b=Tab[0]


Tab:



DB



3FH,06H


……




;


段码




CLR



P3.0


表略





CLR



P3.1




ORG



0000H




SETB



EA




AJMP



MAIN




SETB



EX0




ORG



0013H




SETB



IT0


;


开中断





AJMP



INTR


LOOP:


SETB



P3.0


MAIN:


MOV



DPTR,#Tab




CLR



P3.1



10




MOV



P1,bb



;






MOVC



A,@A+DPTR






MOV



bb,A


;


查表


b=Tab[i




ACALL



Delay


延时



的低位


]




CLR



P3.0




MOV



A,i




SETB



P3.1




ANL



A,#0F0H




MOV



P1,aa



;







SWAP



A


;


取< /p>


i


的高位







MOVC



A,@A+DPTR




ACALL



Delay ;


延时





MOV



aa,A


;


查表


a=Tab[i


的高< /p>




SJMP



LOOP



]


INTR:


CLR



EX0




SETB



EX0




INC



i




;i


加一





RETI




MOV



A,i


Delay:


;






ANL



A,#0FH



;

< br>取


i


的低




END






MOV



DPTR,#Tab


4.17


提示


:



X


1



X


3


分别接至一 个三输入或非门的三个输入端,同时还分别


接至单片机的三个


I O


口,或非门的输出端接至单片机的外部中断引脚。中断服


务程 序中检查三个


IO


口的值,便可知道具体的故障源。程序略。< /p>





第五章、 单片机的定时


/


计数器与串行接口



5.1



5.3



请参考教材



5.4



方式


0:




16.38ms




方式


1:




131ms




方式


2:




512μs



5.5



使用方式


2



计数初值


C=100H-0AH=F6H


查询方式


:






ORG



0000H





ABC:



JNB



TF0,$$





MOV



TMOD,#06H















CLR



TF0












MOV



TH0,#0F6H















CPL



P1.0















MOV



TL0,#0F6H















SJMP



ABC















SETB



TR0


中断方式


:





ORG



0000H
















MOV



TH0, #0F6H















AJMP



MAIN















SETB



EA















ORG



0000BH















SETB



ET0















CPL



P1.0















SETB



TR0















RETI





SJMP



$$






;


等待中断



MAIN: MOV TMOD,#06H


5.6



10 00HZ


的周期为


1ms,


即要求每< /p>


500μsP


1.0


变反一次

< p>
,


使用方式


T1


方式


1,MC=12


/


fosc=1


μs


,














C=2


16


-500


μs



/1


μs



= FE0CH,



TMOD=10H


,< /p>


TH0=FEH


,


TL0=0CH



,



程序与


5.5


题相同


,


注意 每次要重置


TH0



TL0


5.7



f=6MHz



MC=2μs


方式


2


的最大定时为



512μs


合乎题目的要求。


50μs


时,


计数初值为


C1=256-25=E7H


,< /p>


350μs


时计数初值为


C2=256- 175=51H









汇编语言程序

















11

-


-


-


-


-


-


-


-



本文更新与2021-02-27 19:55,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/675661.html

《单片机原理接口及应用》_李群芳版参考答案的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文