微机原理习题.ppt_第1页
微机原理习题.ppt_第2页
微机原理习题.ppt_第3页
微机原理习题.ppt_第4页
微机原理习题.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理习题答案,第四章题四,SSS:MOVR0,#42HCLRASSL:XCHDA,R0SWAPAXCHA,R0DECR0CJNER0,#3FH,SSLSWAPAMOVR2,ARET,第四章题五,MOVC,P3.0ORLC,P3.4CPLCMOVF0,CMOVC,20HORLC,50HCPLCORLC,F0MOVP1.0,C,第四章题七(30H32H)+(33H35H)-30H32H,不考虑进位,PGADD:MOVR0,#32HMOVR1,#35HMOVR7,#3CLRCLOOP:MOVA,R0ADDCA,R1MOVR0,ADECR0DECR1DJNZR7,LOOP,第四章题八RAM中30H

2、32H的内容左移1位,PGRL:MOVR0,#32HMOVR6,#3CLRCLOOP:MOVA,R0RLCADECR0DJNZR6,LOOP,第四章题九数据移动1个单元子程序,MOVR0,#30HMOVR7,#16LOOP:XCHA,R0INCR0DJNZR7,LOOPRET,第四章题十30H32H中的压缩BCD码拆成6位单字节BCD码送33H38H,MOVR0,#30HMOVR1,#33HMOVR7,#3LOOP:MOVA,R0ANLA,#0F0HSWAPAMOVR1,AINCR1,MOVA,R0ANLA,#0FHMOVR1,AINCR0INCR1DJNZR7,LOOP,第四章题十一33H3

3、8H中的6位单字节BCD码压成压缩BCD码送30H32H,MOVR0,#33HMOVR1,#30HMOVR7,#3LOOP:MOVA,R0SWAPAINCR0,XCHDA,R0MOVR1,AINCR0INCR1DJNZR7,LOOP,第四章题十二,MOVR0,#30HMOVDPTR,#8000HMOVR7,#16LOOP:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR7,LOOP,第四章补充题,第四章补充题,1)XCHDA,R0;(ACC)=0A4H(R0)=7AH2)SUBBA,R3;(ACC)=43H(CY)=0(OV)=13)RET;(SP)=66H(SP)=34H

4、(PC)=8100H4)XRLA,42H;(ACC)=0E8H(P)=05)ANLC,24H;(24H)=0(CY)=06)ADDA,#65H;(ACC)=0FH(CY)=1(OV)=07)CJNEA,#0AH,05H(PC)=810AH(ACC)=0AAH8)MOVXA,R1;(ACC)=38H9)LCALL9100H(SP)=6AH(SP)=81H,第五章题三,DL:MOVR1,#100DL5:MOVR0,#250DL500:DJNZR0,DL500DJNZR1,DL5CPLP1.0SJMPDL,第五章题十二,MOVTMOD,#00H;T0工作在内部定时方式0MOVTH0,#63H;定时初

5、值A=8192-5000=3192=110001111000BMOVTL0,#18HSETBTR0;启动定时器T0,第五章题十三,ORG0000HLJMPMAINORG000BHLJMPPGT0MAIN:MOVTMOD,#01H;T0工作在方式1定时MOVTHO,#3CH;初值A=65536-50000=15536=3CB0HMOVTL0,#0B0HMOVR6,#10SETBEA,PGT0:MOVTHO,#3CH;进入定时中断服务程序后,先对T0重置初值,开始下一个50ms的定时MOVTL0,#0B0HDJNZR6,QUIT;若R6减至0,表明已定时10*50=500ms,半周期已到,P3.4

6、翻转;否则P3.4不变,退出中断CPLP3.4MOVR6,#10QUIT:RETI,第五章题十四,若fosc=6MHZ,则T0工作在方式0,1,2定时,最大定时为8192*2,65536*2,256*2微秒,第六章习题1/1.软件延时,P3.4输出周期为20MS的方波,fosc=12MHZ,MAIN:ACALLDL10;延时半周期10ms=10000个机器周期CPLP3.4SJMPMAINDL10:MOVR6,#20DL11:MOVR7,#250DJNZR7,$;内层循环2*250=500机器周期DJNZR6,DL11;外层循环(500+1+2)*20=10060机器周期RET;整个延时子程序

7、延时1+10060+2=10063机器周期,可以了讨论:用指令延时,CPU资源完全被定时动作所占用。,1/2.定时器溢出标志查询产生定时,MAIN:MOVTMOD,#01HMOVTH0,#D8HMOVTL0,#0F0HSETBTR0LOOP:JBCTF0,OUT;若TF0=0,则表明定时器T0定时计时已满,可对p3.4取反,由于TF0此处仅作软件标志,故需在程序中清零;:若T0产生定时中断,则TF0由硬件清零,无须此句,切记切记!SJMPLOOP,OUT:CPLP3.4;MOVTH0,#D8H;重置T0初值MOVTL0,#0F0HSJMPLOOP讨论:T0产生定时,CPU可处理其他动作(可在J

8、BC与SJMPLOOP语句中加入),只要在每个循环中查询标志TF0即可,当然若循环中指令过多,将影响定时精度。,1/3.定时器中断产生定时,ORG0000HLJMPMAINORG000BHLJMPPGT0MAIN:MOVTMOD,#01HMOVTH0,#D8HMOVTL0,#0F0HSETBEASETBET0SETBTR0,SJMP$:PGT0:MOVTH0,#D8HMOVTL0,#0F0HCPLP3.4RETI讨论:T0产生定时中断,CPU可处理其他动作(此处以SJMP$表示),且指令的多少不影响精度,2.将30H开始的n个单元中内容右移m位子程序,RRM:MOVR7,#mLOOP1:MOV

9、R0,#30HMOVR6,#nCLRCLOOP:MOVA,R0RRCAMOVR0,AINCR0DJNZR6,LOOP,MOVA,R2RRCAMOVR2,ADJNZR7,LOOP1RET,3.提示:在开始执行该子程序时,堆栈中已放入待转换的BCD码;子程序返回后,堆栈中的相同位置放入了七段显示码,SUB:MOVR0,SPDECR0DECR0XCHA,R0ADDA,#2MOVCA.A+PCXCHA,R0RETDB3FH,06H,6BH,4FH,66HDB6DH,7DH,07H,7FH,6FH,举例:将30H单元中的BCD码转换位七段显示码MAIN:PUSH30HACALLSUBPOP30H,题四,

10、SUB:POPDPHPOPDPLMOVP2,#0MOVR0,#80HNEXT:CLRAMOVCA,A+DPTRINCDPTRJZQUITMOVXR0,AINCR0,SJMPNEXTQUIT:JMPA+DPTRMAIN:LCALLSUBDBMCS-51CONTROLLER,0其它指令,5.对(30H31H)取补,SUB:MOVA,30HJNBACC.7,QUITXRL30H,#7FHXRL31H,#0FFHMOVA,31HADDA,#1MOV31H,AMOVA,30H,ADDCA,#0MOV30H,AQUIT:RET,6.(30H31H32H)+(33H34H35H)-(30H31H32H),S

11、UB:MOVR0,#32HMOVR1,#35HMOVR7,#3CLRCLOOP:MOVA,R0ADDCA,R1MOVR0,ADECR0,DECR1DJNZR7,LOOPRET,6.(30H31H32H)+(33H34H35H)-(30H31H32H),NMUL:MOV30H,#00HMOV31H,#00HMOV32H,R4MOV33H,R5MOVR1,#16CLRCNMLP:MOVR0,#30HMOVR6,#4NMP1:MOVA,R0RRCAMOVR0,A,INCR0DJNZR6,NMP1JNCNMLNMOVA,31HADDA,R3MOV31H,AMOVA,30HADDCA,R2MOV30H,

12、ANMLN:DJNZR1,NMLPMOVR0,#30H,NMLT:MOVA,R0RRCAMOVR0,AINCR0CJNZR0,#34H,NMLTRET,8.提示:入口地址PGMA,PGMB,CDER,分别是一些标号,故可将其视为双字节数据,SUB:CJNEA,#41H,$+3JCERRCDCJNEA,#46H,$+3JNCERRCDSUBBA,#41HMOVR2,AADDA,#14MOVCA,A+PCMOVDPH,A;2BMOVA,R2;1B,ADDA,#9;2B,查取低字节内容时偏移量多加1MOVCA,A+PC;1BMOVDPL,A;2BSJMPQUIT;2BERRCD:MOVDPTR,#C

13、DER;3BQUIT:RET;1BDWPGMA,PGMB,PGMCDWPGMD,PGME,PGMF,9.将ACC中的数据转换成ASCII码送ACC,B中;即若(ACC)=5AH,则运行后(ACC)=35H,(B)=40H,SUB:MOVR2,AANLA,#0FHADDA,#10MOVCA.A+PCMOVB,A;2BMOVA,R2;1BANLA,#0F0H;2BSWAPA;1B,ADDA,#1;2BMOVCA,A+PC;1BRET;1BDB0123456789ABCDEF,10.(30H,31H)压缩BCD码-二进制数R2R3,MOV52H,AMOVA,31HANLA,#0FHMOV53H,AL

14、CALLIDTBMOVA,R3MOVR2,AMOVA,R4MOVR3,ARET,MOVA,30HANLA,#0F0HSWAPAMOV50H,AMOVA,30HANLA,#0FHMOV51H,AMOVA,31HANLA,#0F0HSWAPA,11.(R2R3)二进制数-BCD码30H31H32H,RLCAMOVR2,AMOVA,32HADDCA,32HDAAMOV32H,AMOVA,31HADDCA,31HDAAMOV31H,A,IBTD:CLRAMOV30H,AMOV31H,AMOV32H,AMOVR7,#16BTD1:CLRCMOVA,R3RLCAMOVR3,AMOVA,R2,MOVA,30

15、HADDCA,30HDAAMOV30H,ADJNZR7,BTD1RET,12.试设计一报警程序,ORG0LJMPMAINORG0BHLJMPPGTOMAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0BOHMOVR6,#10SETBEA,SETBET0MOVR7,#10CLRP3.4SETBF0;标志F0初始置位SETBTR0;启动T0计时SJMP$PGT0:DJNZR6,QUITMOVTH0,#3CH;重置初值,MOVTL0,#0BOHMOVR6,#10JNBP3.4,CMPL;若P3.4=0,取反JBCF0,NEXT;若P3.4=1,判断标志F0,若F0=1,则为扬声

16、器停的第一个0.5秒,不必取反,同时清除F0,为下一个0.5秒准备;,若该条件不满足(F0=0),表明扬声器已停满1秒,可取反。CMPL:CPLP3.4;P3.4取反后,需将F0置位。SETBF0NEXT:DJNZR7,QUIT;若R7未减至0,则10次报警未满CLRTR0;若R7减至0,则10次报警已满,停止T0计数QUIT:RETI,12.试设计一报警程序,13.数据送移位寄存器,MOVR1,#8LOOP:CLRP1.6RLCAMOVP1.1,CSETBP1.6NOPNOPDJNZR1,LOOPRET,补充习题:在外部数据存储器8000H开始的存储单元内存放了10个用补码表示有符号数,请分

17、别编制实现下列功能的程序:,将这十个数送到内部数据存储器40H到4AH的单元里,传送过程中判断是零则停止传送,MOVDPTR,#8000HMOVR0,#40HMOVR2,#10LOOP:MOVXA,DPTRJZENDMOVR0,AINCR0INCDPTR,DJNZR2,LOOPNOPEND:SJMPEND,补充习题:在外部数据存储器8000H开始的存储单元内存放了10个用补码表示有符号数,请分别编制实现下列功能的程序:,将这十个数送到外部数据存储器900AH到9000H的单元里。,MOVDPTR,#8000HMOVP2,#90HMOVR0,#0AHMOVR2,#10LOOP:MOVXA,DPT

18、RMOVXR0,AINCDPTR,DECR0DJNZR2,LOOPNOPEND:SJMPEND,将这十个数送到外部数据存储器900AH到9000H的单元里。,找出这十个数中的最大值,将最大值送寄存器R4,MOVDPTR,#8000HMOVR2,#9MOVXA,DPTRMOVR4,AINCDPTRLOOP:MOVXA,DPTRMOVR3,ACLRCSUBBA,R4JBOV,OVER,JBACC.7,SMALLBIG:MOVA,R3XCHA,R4SJMPSMALLOVER:MOVA,R3JNBACC.7,BIGSMALL:INCDPTRDJNZR2,LOOPNOPEND:SJMPEND,找出这十个数中的最大值,将最大值送寄存器R4,统计这十个数中是负数的个数,将结果送寄存器R7,MOVDPTR,#8000HMOVR2

温馨提示

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

评论

0/150

提交评论