关键词不能为空

当前您在: 主页 > 英语 >

单片机原理接口及应用李群芳版习题解答参考

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

-

2021年2月27日发(作者:basketball是什么意思)


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



习题解答



预备篇



计算机的基础知识



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


8082H


FF7EH


-928


83A0H


FC60H


0.4


机器数真值分别为


:



27,233,


< br>128,



8,14717,31467,



27824,



1247 8


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



1025


1025H


01000205H


0.7 ASCII


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


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


基础篇




1


章、


MCS-51


单片机结构



1.1



单片微型计算机


(

< br>即单片机


)


是包含


CPU


、存储器和


I/O


接口的大规模集成芯片


,


即它本身包含了除外部


设备以外构成微机 系统的各个部分


,


只需接外设即可构成独立的微机应用系统。微 机处理器仅为


CPU,CPU


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



1.2



参见 教材


1.1.1




1.3



参见教材第


6


页表格



1.4



参见教材表


1.4


1.5



参见教材表


1.1


和表


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


第< /p>


2


章、


51


系列 单片机的指令系统



2.1



参见教材


2.1




2.2



因为


A


累加器自带零标志


,


因此若判断某 内部


RAM


单元的内容是否为零


,


必须将其内容送到


A,JZ


指令

< p>
即可进行判断。



2.3




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)

< p>
执行结果将


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










MOV



B,A










RL



A










MOV



A,20H










MOV



20H,A










ANL



A,#0FCH











ANL



A,#03H










SJMP



$$


(3)


用 加法指令完成



ADD



A,ACC









MOV



R1,A





;R1=4A








MOV



R0,A



;R0=2A









MOV



A,B









MOV



A,#0









ADDC



A,B





;


进位×


2









ADDC



A,#0









MOV



B,A







;


存积高位










MOV



B,A





;B



2A


的 进位










MOV



A,R1






;


存积低位










MOV



A,R0









SJMP



$$









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























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



CLR C



MOV A,20H












RLC A













MOV 20H,A












MOV A,21H












RLC A












MOV 21H,A






MOV A,22H


3.1








R


LC



A







M


OV 22H,A







M


OV A,#0






RLC A







M


OV 23H,A







S


JMP



$$



3


章、


M SC-51


单片机汇编语言程序设计



因为是多个单元操作


,


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


DPTR


指示


,

只能用


MOVX


指令取数到


A,< /p>


片内地址用


R0



R1


指示


,


只能用

< br>MOV


指令操作


,


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



A




内部部数据存贮器。



ORG




0000H



INC



DPTR









MOV



DPTR,#1000H




INC



R0









MOV



R0,#20H































CJNE









R0,#71H,LOOP









LOOP:


MOVX A,@DPTR




SJMP



$$









MOV @R0,A



3.2




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


,


同时要考虑最高位的进位。

< br>


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







S


JMP $$












ADDC



A,R1


3.3



A


中放小于


14H(20)


的 数


,


平方表的一个数据占


2

< p>
个字节


,


可用


BCD


码或二进制数存放


.(


< br>A



放的是


BCD



,


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

< br>)










ORG




0





INC



A










MOV



DPTR,#TAB



MOVC A,@A+DPTR










ADD



A,ACC









;A*2






MOV



R6,A









PUSH



ACC







S


JMP



$$










MOVC A,@A+DPTR


TAB: DB 00,00,00,01,00,04, 00,09,00,16H,


……











MOV



R7,A




DB




………





04H,00










POP



ACC


3.4


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


,


在同号中判大小


,


异号中正数为大


.




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,



排好源地址和转换后数的地址指针


,


置好循环次数。< /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

< br>间址寄存器只能有


R0



R1< /p>


两个


,


而正数、负数和零共需

< p>
3


个寄存器指示地址


,


这 时可


用堆栈指针指示第三个地址


,POP



PUSH


在指令可自动修改地址。


R0


指正数存放地址和


R1


指负数


存放地址



,SP


指源数据存放的末地址


,POP


指令取源数据

< br>,


每取一个数地址减


1










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:


I


NC



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

< br>求补也可用模


(00H)


减该数的方法求补。

< p>





ORG



0000H





MOV



R7,#03H























AB:


INC



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



A


DDC



A,#0


MOV



R7,#0FH


MOV



B,A


MOV



R0,#BUF1


DJNZ R7,NEXT



MOV



B,#0



;


以上完成求和



MOV



A,@R0



MOV



R6,#04H


MOV



R2,A


MOV



BUF2,A


NEXT:


M


OV



A,R2




MOV



BUF2-1,#0



I


NC




R0




NEX:



CLR




C



A


DD



A,@R0


MOV



A,B



M


OV



R2,A


RRC



A



M


OV



A,B


MOV



B,A


MOV



A,BUF2


MOV



BUF2-1,A


RRC



A


DJNZ



R6,NEX


MOV



BUF2,A


SJMP



$$



MOV



A,BUF2-1


;


以上完成除十六运算


RRC



A


3.11


20H


单元的内容分解为高


4< /p>


位和低


4



,< /p>


根据是否大于


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


MOV



22H,A


MOV



A,20H


A30:


ANL




A,#0FH


ACALL



ASCII


3.12




要注意


,


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


C



ORG



0000H





















MOV



C,20H





















ANL



C,2FH












CPL



C





















ORL



C,/2FH











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


ADD



A,#37H


RET


ADD



A,30H


RET


CPL



C


ANL



C,53H


MOV



P1.0,C


SJMP



$$


END









3.14


设一字节乘数存放在


R1,


三字节的被乘数存放在


data


开始的内部


RAM


单元

,


且低字节存放


在低位地址单元


, R0


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


,


用< /p>


MUL


指令完成一字节乘一字节


,


每一次部


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


,


其和的进位加在本次部分积的高位上


,


并暂存


,


三字节乘


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


,



R7


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










ORG




0000H





































MOV



R7,#03H






















MOV



R0,#data






















MOV



R2,#0
























MOV



B,R1

























MUL



AB



























ADD



A,R2


























MOV



@R0,A
























MOV



A,#0


ADDC



A,B


MOV




R2,A


INC




R0


DJNZ



R7,NEXT


MOV



@R0,B


SJMP



$$



END




NEXT: MOV



A,@R0
























4


章、并 行接口


P0-P3


和单片机的中断系统



4.1



4.3



参考教材


4


.1




4.4


P1.7


监测按键开关


,


P1.0


引脚输出正脉冲


,

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


P1.0


置零、置


1


、延


时、再置零即可。


P1 .0


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


,


可观察到发光二极管


的闪烁。电路设计可参考图


4.4



汇编语言程序





ORG



0000H






ABC


:


CLR



P1.0









SETB



P1.7






JB



P1.7,$$







;


未按键等待



SETB



P1.0



MOV



R2,#0


NOP


DJNZ



R2,DAY


SJMP



ABC










4.4
















JNB



P1.7,$$





;


键未弹起等待




































































DAY: NOP


4.5




电路见图


4.5


,

< br>初始值送


0FH



P1,


再和


0FFH


异或从


P1


口输出


,


或使用


SWAP


A


指令


,


然后



P1


口输出


,


循环运行


,


要注 意输出后要延时。



汇编语言程序



ORG 0000H










MOV A


,


#0FH




ABC


:


MOV P1


,


A
















ACALL D05
















SWAP A
















SJMP ABC




D05


:


MOV R6


,


250




DY


:




MOV R7


,


250



DAY:











NOP



DJNZ R7,DAY


NOP








4.5


























DJNZ R6,DY


RET



END


4.6


如使用共阴极数码管< /p>


,


阴极接地


,


阳 极


a~g


分别接


P0

< br>~


P3


的某个口的


7

< p>


,



0



F


的段码列


成表

< p>
,


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


P3


口。



汇编语言程序
















NEXT:





























DAY:



ORG 0000H



MOV DPTR


,


#TAB


MOV A


,


R0


MOVC A


,


@A+DPTR


MOV P3,A


MOV R7,#0


NOP
























































TAB:













NOP


DJNZ R7,DAY


INC R0


CJNE R0,#10H,NEXT


SJMP



AGAIN


DB 3FH,06H…






;


段码表


(



)


END






AGAIN:


MOV R0


,


#0


4.7

< br>电路设计见图


4.7


,


编程如下


:






ORG



0000H



MOV



A


,


#08H


MOV



DPTR


,


#TAB


MOV



P1,A


MOV



R2,#08H

























MOVC



A


,


@A+DPTR



AGAIN: MOV



A,#01



NEXT:


MOV



P3,A
















ACALL



DAY


RL



A


CJNE



A,#10H,NEXT


DJNZ



R2,AGAIN


SJMP



$$









4.7


END




TAB:



DB 3FH,06H·


·


·







4.8



P1


口的八根线接行线


,


输出行扫描信号


,


P3


口的八根线接列线


,


输入回馈信号。



见图


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



$$


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


,


不存在占用别的中断源


向量地址问题


,


程序顺序排下

< br>,


应注意程序的执行过


程。


C< /p>


语言无循环移位指令移位后


,


后面补零< /p>


,


因此



01< /p>


相或。



4.14




4.15






























































4.13


ORG



0000H


AJMP



MAIN


ORG



0003H ;


中断服务



XRL



P1,#0FFH



DJNZ



R0,NE


CLR



EA





ORG



0030H




SETB



EX0









SETB



IT0









MOV P1,#0FFH



MOV



R0,#0AH


SJMP



$$



;


等待中断




MAIN: SETB



EA






NE:


RETI



因一亮一灭为一次


,


所以共十次。





















aa EQU 08H


;


存储高四位的段码



bb EQU 09H


;


存储第四位的段码



i EQU 0AH


ORG



0000H


AJMP



MAIN


ORG



0013H


AJMP



INTR


MOV



DPTR,#Tab


CLR



A


MOVC



A,@A+DPTR


MOV



aa,A


MOV



bb,A



CLR



P3.0


CLR



P3.1


SETB



EA


SETB



EX0


SETB



IT0


SETB



P3.0


CLR



P3.1


MOV



P1,bb



ACALL



Delay


;


显示低位



;


延时




;


开中断



;a=b=Tab[0]


;


存储计数值



;


段码表略



DB



3FH,06H


……




4.16


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


P1



,


阴极分别接


P3.0



P3.1










































CLR



P3.0


SETB



P3.1


MOV



P1,aa



ACALL



Delay


SJMP



LOOP


CLR



EX0


INC



i



MOV



A,i


ANL



A,#0FH


< br>;



i


的低位

< br>


MOV



DPTR,#Tab


MOVC



A,@A+DPTR


MOV



bb,A


;


查表

b=Tab[i


的低位


]


MOV



A,i


ANL



A,#0F0H


SWAP



A


;


取< /p>


i


的高位



MOVC



A,@A+DPTR


MOV



aa,A


;


查表


a=Tab[i


的高位


]


SETB



EX0


RETI


;




END



;i


加一



;


显示高位



;


延时



Tab:


INTR:


MAIN:


LOOP:


Delay:

-


-


-


-


-


-


-


-



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

单片机原理接口及应用李群芳版习题解答参考的相关文章

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

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

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

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

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

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

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

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

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

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

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

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

    小学作文