单片机原理接口及应用李群芳版习题解答参考_第1页
单片机原理接口及应用李群芳版习题解答参考_第2页
单片机原理接口及应用李群芳版习题解答参考_第3页
单片机原理接口及应用李群芳版习题解答参考_第4页
单片机原理接口及应用李群芳版习题解答参考_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理、接口及应用——嵌入式系统技术基础基础知识0.3十进制数原码281CH-289CH4H补码E4H64H十进制数50-347928原码FAH815BH03A0H补码FAHFEA5H03A0H-1308082HFF7EH-92883A0HFC60H0.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.60308H020505H040803H070604H01000000H01000205H255H483H764H十进制数554833338H323535H343833H373634H0.7ASCII码表示的十六进制数分别为:105H,7CAH,2000H,8A50H1.1单片微型计算机(即单片机)是包含CPU、存储器和I/O接口的大规模集成芯片,即它本身包含了除外部设备以外构成微机系统的各个部分,只需接外设即可构成独立的微机应用系统。微机处理器仅为CPU,CPU是构不成独立的微机系统的。材第6页表格1.7程序存储器和数据存储器尽管地址相同,但在数据操作时,所使用的指令不同,选通信号也不同,因此不会发生错误。1.8内部数据程序外部数据程序ARAM否为零,必须将其内容送到A,JZ指令即可进行判断。2.3当A=0时,两条指令的地址虽然相同,但操作码不同,MOVC是寻址程序存储器,MOVX是寻址外部数据存储器,送入A的是两个不同存储空间的内容。2.4目的操作数源操作数寄存器直接SP间接寻址直接直接直接直接立即寄存器间址直接寄存器变址寄存器间址寄存器Cy=1,OV=0,A=94H√×2.7A=25H(50H)=0(51H)=25H(52H)=70H2.9程序运行后内部RAM(20H)=B4H,A=90H2.10机器码源程序7401LA:MOVA,#01HF590LB:MOVP1,A23RLAB40AFACJNE,#10,LBFSJMPLA2.11ANLA,#0FHSWAPAANLP1,#0FHORLP1,A2.12MOVA,R0XCHA,R1MOVR0,ASJMP$2.13(1)利用乘法指令MOVB,#04HMULAB(2)利用位移指令RLAMOVB,ARLAMOVA,20HMOV20H,AANLA,#0FCHANLA,#03HSJMP$(3)用加法指令完成ADDA,ACCMOVR1,A;R1=4AMOVR0,A;R0=2AMOVA,BMOVA,#0ADDCA,B;进位×2ADDCA,#0MOVB,A;存积高位MOVB,A;B存2A的进位MOVA,R1;存积低位MOVA,R0SJMP$ADDA,ACC2.14XRL40H,#3CH2.15MOVA,20HADDA,21HDAAMOV22H,A;存和低字节MOVA,#0ADDCA,#0MOV23H,A;存进位SJMP$2.16MOVA,R0JZZEMOVR1,#0FFHSJMP$ZE:MOVR1,#0SJMP$2.17MOVA,50HMOVB,51HMULABMOV53H,BMOV52H,ASJMP$2.18MOVR7,#0AHOPXRLPHRWOP2.19单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进下一单元的最低位,必须用大循环移位指令移位4次。ORGCLRCMOVA,20HRLCARLCAMOV22H,AMOV20H,AMOVA,#0MOVA,21HRLCARLCAMOV23H,AMOV21H,ASJMP$MOVA,22H3.1因为是多个单元操作,为方便修改地址使用间址操作。片外地址用DPTR指示,只能用MOVX→A→内部部数据存贮器。ORG0000HINCDPTRMOVDPTR,#1000HINCR0MOVR0,#20HCJNER0,#71H,LOOPLOOP:MOVXA,@DPTRSJMP$MOV@R0,A3.2要注意两高字节相加应加低字节相加时产生的进位,同时要考虑最高位的进位。ORG0MOV51H,AMOVA,R0MOVA,#0ADDA,R6ADDCA,ACCMOV50H,AMOV52H,AMOVA,R7SJMP$ADDCA,R13.3A中放小于14H(20)的数,平方表的一个数据占2个字节,可用BCD码或二进制数存放.(如A中ORG0INCAMOVDPTR,#TABMOVCA,@A+DPTRADDA,ACC;A*2MOVR6,APUSHACCSJMP$MOVR7,ADB………04H,00OPACC3.4先用异或指令判两数是否同号,在同号中判大小,异号中正数为大.ORG0BG:MOV22H,21HMOVA,20HSJMP$XRLA,21HCMP:MOVA,20HANLA,#80HCJNEA,21H,GRJZCMPGR:JNCAGJB20H.7,BGMOV22H,21HAG:MOV22H,20HSJMP$SJMP$机器周期数DELAY:MOVR1,#0F8H1LOOP:MOVR3,#0FAH1DJNZR3,$2PRET2(1+(1+2*0xFA+2)*0xF8+2)*12/6MHz=(1+(1+2*250+2)*248+2)*2us3.6将待转换的数分离出高半字节并移到低4位加30H;再将待转换的数分离出低半字节并30H,安排好源地址和转换后数的地址指针,置好循环次数。ORG0000HMOVA,@R0MOVR7,#05HANLA,#0FHMOVR0,#20HADDA,#30HMOVR1,#25HMOV@R1,ANET:MOVA,@R0INCR0ANLA,#0F0HINCR1SWAPADJNZR7,NEADDA,#30HSJMP$MOV@R1,AENDINCR1存放地址,SP指源数据存放的末地址,POP指令取源数据,每取一个数地址减1。ORGHMOVR7,#10HMOVA,#0MOV@R0,AMOVR4,AINCR0MOVR5,AAJMPDJMOVR6,ANE:INCR5MOVR0,#40HMOV@R1,AMOVR1,#50HINCR1MOVSP,#3FHAJMPDJNEXT:POPACCZER0:INCR6JZZER0DJ:DJNZR7,NEXTJBACC.7,NESJMP$INCR4ENDPJBP,ret)ORGHMOVA,40HJBP,EN;奇数个1转移ORLA,#80H;偶数个1最高位加“1”EN:SJMP$3.9取补不同于求补码,求补码应区别正、负数分别处理,而取补不分正、负,因正、负数均有相对于模的补数。用取反加1求补也可用模(00H)减该数的方法求补。ORGHMOVR7,#03HAB:INCR0MOVR0,#DATAMOVA,@R0MOVA,@R0CPLACPLAADDCA,#0ADDA,#01DJNZR7,ABMOV@R0,ASJMP$16个单字节累加应用ADD指令而不能用ADDC指令,和的低位存A,当和超过一个字节,和的高字节存于B,并要加进低位相加时产生的进位,16个单字节加完后,采用右移4次进行除十六求平MOVMOVMOVMOVMOVNEXT:MOVINCADDMOVMOVA,BADDCA,#0MOVB,A;以上完成求和MOVMOVMOVNEX:CLRMOVMOVBUF2,ACA,BAB,AMOVA,BUF2MOVBUF2-1,AADJNZR6,NEXMOVBUF2,ASJMP$MOVA;以上完成除十六运算ORG0000HMOV21H,AMOVA,20HSJMP$ANLA,#0F0HASCII:CJNEA,#0AH,NESWAPANE:JCA30ACALLASCIIADDA,#37HMOV22H,ARETMOVA,20HA30:ADDA,30HANLA,#0FHRETACALLASCII3.12要注意,位的逻辑运算其中一个操作数必须在C。ORG0000HCPLCMOVC,20HANLC,53HANLC,2FHMOVP1.0,CCPLCSJMP$ORLC,/2FHENDMOVC,ACC.3ANLC,P1.4ANLC,/ACC.5MOV20H,CMOVC,B.4CPLCANLC,/P1.5ORLC,20HMOVP1.2,CSJMP$NDR的被乘数存放在data开始的内部RAM单元,且低字节存放在低位地址单元,R0作为被乘数和积的地址指针,用MUL指令完成一字节乘一字节,每一次部分积的低位加上一次部分积的高位,其和的进位加在本次部分积的高位上,并暂存,三字节乘一字节共需这样三次乘、加、存操作,以R7作循环三次的计数寄存器。MOVMOVMOVADDCA,BMOVMOVNEXT:MOVINCMOVMULABMOVADD$MOVND第4章、并行接口P0-P3和单片机的中断系统4.1~4.3参考教材4.1节时、再置零即可。P1.0接一示波器可观察波形。如果再接一发光二极管,可观察到发光二极管的闪烁。电路设计可参考图4.4汇编语言程序ORG00HABCCLRP1.0JBP1.7,$;未按键等待JNBP;键未弹起等待MOVR2,#0DAY:NOPDJNZRDAY图4.4SJMPABCP出,循环运行,要注意输出后要延时。汇编语言程序MOVA,#0FHABC:MOVP1,AACALLD05DY:MOVR7,250DAY:NOPDJNZR7,DAYMOVMOVDPTR,#TABMOVCA,@A+DPTRMOVP1,AMOVR2,#08HAGAIN:MOVA,#01ND4.6如使用共阴极数码管,阴极接地,阳极a~g分别接P0~P3的某个口的7位,将0~F的段码列成表,表的内容顺次从该口输出。如数码管接P3口。汇编语言程序HNOPMOVDPTR,#TABDJNZR7,DAYAGAIN:MOVR0,#0INCR0NEXT:MOVA,R0CJNER0,#10H,NEXTMOVCA,@A+DPTRSJMPAGAINMOVP3,ATAB:DB3FH,06H…;段码表(略)MOVR7,#0ENDDAY:NOPORG00HMOVA,#08HNEXT:MOVP3,AACALLDAYRLACJNEA,#10H,NEXTDJNZR2,AGAINSJMP$ND4.8P1口的八根线接行线,输出行扫描信号,4.8P1口的八根线接行线,输出行扫描信号,P3口的八根线接列线,输入回馈信号。4.9~4.12参见4.2节4.13电路设计见图4.13汇编语言程序AJMPMAINORGHRLA;中断服务MAIN:MOVA,#0FEH汇编语言中只有一个中断源,不存在占用别的中断源汇编语言中只有一个中断源,不存在占用别的中断源向量地址问题,程序顺序排下,应注意程序的执行过程。C语言无循环移位指令移位后,后面补零,因此MOVMOVEAXIT0$4.14略4.15ORGHAJMPMAINORG0003H;中断服务XRLP1,#0FFHRGHMAIN:SETBEASETBEX0SETBIT0DJNZR0,NEMOVP1,#0FFHCLREAMOVR0,#0AHNE:RETISJMP$;等待中断因一亮一灭为一次,所以共十次。4.16两个数码管阳极经驱动器接P1口,阴极分别接P3.0、P3.1。aaEQUH;存储高四位的段码bbEQU09H;存储第四位的段码iEQU0AH;存储计数值Tab:DB3FH,06H……;段码表略ORGHAJMPMAINORGHAJMPINTRMAIN:MOVDPTR,#TabCLRAMOVCA,@A+DPTRMOVaa,AMOVMOVEAXIT0;开中断;显示低位ACALLDelayCLRP3.0MOVP1,aa;显示高位ACALLDelay;延时INTR:CLREX0INCi;i加一MOVA,iANLA,#0FH;取i的低位MOVDPTR,#TabMOVCA,@A+DPTRMOVbb,A;查表b=Tab[i的低位]MOVA,iANLA,#0F0HSWAPA;取i的高位MOVCA,@A+DPTRMOVaa,A;查表a=Tab[i的高位]SETBEX0ETIND4.17提示:将X至X分别接至一个三输入或非门的三个输入端,同时还分别接至单片机的三个13IO口,或非门的输出端接至单片机的外部中断引脚。中断服务程序中检查三个IO口的值,便可知道具体的故障源。程序略。第五章、单片机的定时/计数器与串行接口5.1~5.3请参考教材CH-0AH=F6H查询方式:ORG0000HABC:JNBTF0,$MOVTMOD,#06HCLRTF0MOVTH0,#0F6HCPLP1.0MOVTL0,#0F6HSJMPABCSETBTR0中断方式:ORG0000HMOVTH0,#0F6HAJMPMAINSETBEAORG0000BHSETBET0CPLP1.0SETBTR0RETISJMP$;等待中断MAIN:MOVTMOD,#06H5.7f=6MHzMC=2μs方式2的最大定时为512μs合乎题目的要求。50μs时,计数初值为汇编语言程序ORG0000HSJMPAB1MOVTMOD,#02HEXT:SETBP1.2NEXT:MOVTH0,#51HMOVTH0,#0E7HMOVTL0,#51HCLRP1.2MOVTL0,#0E7HAB2:JBCTF0,NEXTSETBTR0SJMPAB2AB1:JBCTF0,EXT上述的计数初值没有考虑指令的执行时间,因此误差较大,查每条指令的机器周期,扣除这些时汇编语言程序ORG0000HNE:JNBTF0,$MOVTMOD,#02HCLRTF0MOVTH0,#06HCPLP1.1MOVTL0,#06HDJNZR0,NESETBTR0CPLP1.0MOVR0,#04HAJMPNEORG0000HCLRTF0MAIN:MOVTMOD,#15HLOOP:LCALLCounterTimer:MOVTH1,#0F9HLCALLTimerMOVTL1,#30HSJMPLOOPSETBTR1Counter:MOVTH0,#0FDHCLRTR0MOVTL0,#18HJBTF1,$SETBTR0CLRTF1CLRTR1RETJNBTF0,$END5.13T1的方式2模式不需要重装时间常数(计数初值),不影响CPU执行通信程序.依据公式f=2somd/32*(f/12(256-x))求得x=256-((2SMOD/32)*(f/f))bautoscoscbautf=(1/32)*(f/(12(256-0))=61bautoscf=(2/32)*f/(12(256-1))=31250bautosc发送ORG00HMOVTMOD,#20HNEXT:MOVSBUF,ATES:JBCT1,ADD1MOVTH1,#0B2HSJMPTESMOVTL1,#0B2HADD1:INCASETBTR1CJNEA,#20H,NEXTMOVSCON,#40HSJMP$MOVA,#0END接收ORGHMOVTMOD,#20HMOVTH1,#0B2HMOVTL1,#0B2HTEC:JBCRI,RECMOVRSBUFINCR0SETBTR1CJNER0,#40H,TECMOVSCON,#50HSJMP$MOVR0,#20HEND5.16略5.17利用串行通信方式2(波特率固定),采用奇校验方式,将校验位放在TB8中,乙机检验校验位,如正确,则存于片外4400H开始的RAM中,如错误,通知对方重发,R6存放数据块长度汇编语言程序如下:发方MOVMOVMOVMOVSBUF,R6L2:JBCT1,L3L3:MOV1,@DPTRJBP,L4SETBTB8L4:MOVSBUF,AL5:JBCT1,L6AJMPL5ORG00HMOVDPTR,#4400HMOVSCON,#90HL1:JBCRI,L2AJMPL1L2:MOVA,SBUFMOVR6,AL3:JBCRI,L4AJMPL3L4:MOVA,SBUFJBP,L5JNBRB8,L8SJMP$ORGHMOVR5,#03HCLRAMOVSCON,ALOOP:SETBP3.3CLRAMOVR7,AL6:JBCRI,L7AJMPL6L7:MOVA,SBUFEAFFHLAJMPL3L8:INCDPLDJNZR6,L4SJMP$L5:JBJB8,L8L6:MOVX@DPTR,AINCDPLINCDPHDJNZR6,L3SJMP$L8:MOVA,#0FFHMOVSBUF,AL9:JBCTI,L3AJMPL9SJMP$NDFCLRP3.3LCALLtimertimer:MOVA,#64HFOR:JZENDDMOVTMOD,#01HDEF:MOVA,R5;循环4次MOVDPTR,#tabPTRAtabRMOVSBUF,ADECR5JNBT1,$CLRT1MOVR5,#07HMOVTH0,#0D9HMOVTL0,#0F0HSETBTR0JNBTF0,$CLRTF0DECARETtab:DB0c0H,0f9H,0a4H……;略NDABC:INCR7入端最低位经过一个上拉电阻接至MOVDPTR,#0CFFBHMOVA,#0A2HMOVX@DPTR,A7.4电路与上题类似,程序较简单,ORGHMOVDPTR,#7FFHMOVA,#80HMOVX@DPTR,AMOVDPTR,#7CFFHMOVA,#0MOVX@DPTR,AAGAIN:MOVR0,#0MOVR1,#01NEXT:MOVDPTR,#7EFFHMOVA,R1MOVX@DPTR,AMOVA,R0MOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#7CFFHMOVX@DPTR,AACALLDAYINCR0MOVA,R1RLA;指向控制口;A口B口均采用基本输出方式;清显示;R0存字形表偏移量;R1置数码表位选代码;置字形表头地址;查字形码表;指向下一位字形;指向下一位MOVSJMPAGAINDAY:MOVR6,#50;延时子程序DL2:MOVR7,#7DHDL1:NOPDJNZR7,DL1DJNZR6,DL2TAB1:DB6FH,3FH,3FH,5EH;“g00d”(9ood)的字形码7.7根据电路连线I/O口:A口:FDF8H,B口:FDF9H,C口:FDFAH,命令/状态口:FDFBH.定时器TIMEL:FDFCHTIMEH:FDFDH存贮器RAM:FC00H~FCFFH3C对应的数字量:5V/3V=255/XC=15=99H。①三角波MOVDPTR,#OF7FFHNEXT1:MOVA,#0NEXT:MOVX@DPTR,AINCACJNEA,#9AH,NEXTNEXTA:DECAMOVX@DPTR,ACJNEA,#0,NEXTASJMPNEXT1ND②方波V数字量为CCHMOVDPTR,#0F7FFHMOVA,#0NEXT:MOVX@DPTR,AACALLD2MSXRLA,#0CCHSJMPNEXT③阶梯波MOVDPTR,#0F7FFHNEC:MOVA,#0NEXT:MOVX@DPTR,AACALLD1MSADDA,#33HCJNEA,#0FFH,NEXTANEXTA:MOVX@DPTR,AACALLD5MS8.2电路参考教材中图8.8,增加一个地址,使用两条输出指令才能输出一个数据,其他同上。ORGHMOVDPTR,#7FFFHMOVR0,#20HMOVA,@R0NEXT:MOVX@DPTR,AACALLD1MSINCR0ND$8.2,不同的是延时方式:EOC悬空;查询方式:EOC经非门接单片机P1.0端口线;MOV

温馨提示

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

评论

0/150

提交评论