您好,欢迎访问三七文档
2-3MCS-51单片机引脚\EA的作用。\EA访问程序存储器控制信号当\EA=0时,单片机只执行片外程序存储器的程序,起始点从片外ROM的0000H开始。当\EA=1时,单片机先执行片内的ROM,当ROM的地址超过0FFFH(51子系列单片机超过7FFH时),接着执行片外的ROM程序。2.4指令周期=1、2、4个机器周期2微秒2.6P1-P3口输出驱动管是单管方式。当输出高电平时,由于输出级的上拉电阻很大,输出的高电平拉负载能力很小,仅为几十微安,并不是完全的双向I/O接口。2.81BH2.9字节地址24H的D3位(表2-3)。2-7内部RAM低128单元划分为哪三个主要部分?说明各部分的功能和使用。工作寄存器区:用于寄存器使用,常用于存放操作数及中间结果;位寻址区:既可以作为RAM单元使用,进行字节操作,也可对单元的每一位进行操作,用于按位寻址,是MSC-51位处理器的数据存储空间;通用RAM区:用于一般的RAM数据存储和操作,供用户使用。此外还有堆栈操作区,用于堆栈存储数据。2.14系统复位后,SP的内容为07H。MCS-51是向上生长型,进栈操作:先SP加1,后写入数据,但为了避免与第一工作寄存器冲突,所以不用工作寄存器的区域;3-10假设外部数据存储器2000H单元的内容为80H,执行下列命令后,累加器A中的内容为:MOVP2,#20HMOVR0,#00HMOVXA,@R0分析:MOVXA,@R0指令寻址方式为寄存器间接寻址。R0作为低8位,P2作为高8位。在数据存储器扩展时,P2口作为地址的高8位。3-11假设累加器A的内容为30H,执行命令:1000H:MOVCA,@A+PC后,把程序存储器单元的内容送累加器中。分析:本条指令是PC作为基址的编址寻址方式,关键是找到基址和变址的数值。本条指令的地址是1000H,执行完本条指令后PC加一(单字节指令),即1001H。变址为(A)=30H,即寻址的程序存储器单元(1001H+30H)的内容。3-12假设DPTR的内容为8100H,累加器A的内容为40H,执行下列指令:MOVCA,@A+DPTR后,送入A的是程序存储器单元的内容。分析:本条指令是DPTR作为基址的编址寻址方式,关键是找到基址和变址的数值。基址(DPTR)=8100H,变址(A)=40H,即寻址到程序存储器8100H+40H=8140H内容设内部RAM中的30H单元的内容为70H,试分析执行下面程序后各有关单元的内容:MOV60H,#30HMOVR0,#60HMOVA,@R0MOVR1,AMOV40H,@R1(40H)=;(R1)=。3-13假设(SP)=60H,(ACC)=30H,(B)=70H,执行下列命令PUSHACCPUSHB后,SP的内容为,61H单元的内容为,62H单元的内容为。分析:进栈指令:PUSHdirect;(SP)-(SP)+1,((SP))-(direct)3-14假设(SP)=62H,(61H)=30H,(62H)=70H,执行下列命令:POPDPHPOPDPL后,DPTR的内容为,SP的内容为。分析:出栈指令:POPdirect;(direct)-((SP)),(SP)-(SP)-1执行完指令后,PSW的变化已知(A)=08H,(R4)=7FHADDA,R4(A)=87H,CY=0,AC=1,OV=13.1略3.2访问SFR采用方式:直接寻址方式和位寻址方式。访问片外RAM的方式:寄存器间接寻址方式。3.3访问片外ROM的方式:变址寻址3.4寄存器间接寻址方式3.5(A)=08H,(50H)=6FH,(R1)=7FH,(30H)=6FH,(40H)=08H3.6(1)MOVA,@R0(A)=2CH(2)ANL40H,#0FH(40H)=0CH(3)ADDA,R4(A)=22H,CY=1,AC=1,OV=0(4)SWAPA(A)=8EH(5)DEC@R1(20H)=0EH或者((R1))=0EH(6)XCHDA,@R1(A)=0EFH,(20H)=08H第三次作业3.6,3.9,3.10,3.11,3.12,3.15。10月26日交。3.9试编写程序,将片外RAM的2000H、2001H两个单元的内容分别存入片内RAM的20H单元和寄存器R7中。MOVDPTR,#2000HMOVXA,@DPTRMOV20H,AINCDPTRMOVXA,@DPTRMOVR7,A3.10试编写程序,完成两个16位数的减法:FF4DH-CB4EH,结果存入片内RAM的70H和71H单元,71H单元存差的高8位,70H单元存差的低8位。CLRCMOVA,#4DHSUBBA,#4EHMOV70H,AMOVA,#0FFHSUBBA,#0CBHMOV71H,A3.11试编写程序,将R5中的低4位数与R6中的高位合并成一个8位数,并将其存放回R5中。第一种方法第二种方法MOVA,R5MOVA,R5ANLA,#0FHMOV@R0,AMOVR5,AMOVA,R6MOVA,R6XCHDA,@R0ANLA,#0F0HMOVR5,AORLA,R5MOVR5,A3.12试编写程序,将片内RAM的50H、51H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。MOVA,50HMOVB,51HMULABMOVR2,BMOVR3,A3.15设被加数存放在片内RAM的20H(低位)、21H(高位)单元,加数存放在22H(低位)、23H(高位)单元,若要求和存放在24H、25H单元(不考虑16位进位),试编写出16位数相加的程序。MOVA,20HADDA,22HMOV24H,AMOVA,21HADDCA,23HMOV25H,A第四次作业3.16、3.17、3.18、3.19写成子程序的形式(如3.5.4节)11月9日交3.16编写一段程序,把片外RAM中1000H-1030H的内容传送到片内RAM的30H-60H中。方法一:TRSL:MOVDPTR,#1000HMOVR1,#30HMOVR0,#31HLOOP:MOVXA,@DPTRMOV@R1,AINCDPTRINCR1CJNZR0,LOOPRET方法二:TRSL:MOVDPTR,#1000HMOVR1,#30HLOOP:MOVXA,@DPTRMOV@R1,AINCDPTRINCR1CJNER1,#61H,LOOPRET3.17编写程序,实现两个4位BCD码数加法运算,被加数存放在片内RAM的30H、31H单元,加数存放在32H、33H单元,要求和存放在34H、35H单元,36H存放进位。(31H)(30H)+(33H)(32H)=(36H)(35H)(34H)PBCD:MOVA,30HADDA,32HDAAMOV34H,AMOVA,31HADDCA,33HDAAMOV35H,ACLRAADDCA,#00HMOV36H,ARETCLRAMOVACC.0,CMOV36H,ACLRARLCAMOV36H,A3.18编写程序,把累加器中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在片内RAM的50H、51H、52H。方法一:/100;/10;注意商和余数方法二:仿照码型转换程序第二个例子方法三:减一计数法TBCD:MOVB,#100;#64HDIVABMOV50H,AMOVA,#10;#0AHXCHA,BDIVABMOV51H,AMOV52H,BRETTBCD:MOVR0,AMOVR1,#00HMOVR2,#00HMOVR3,#08HLOOP:CLRCMOVA,R0RLCAMOVR0,AMOVA,R1ADDCA,R1DAAMOVR1,AMOVA,R2ADDCA,R2DAAMOVR2,ADJNZR3,LOOPMOVA,R1ANLA,#0FHMOV52H,AMOVA,R1ANLA,#0F0HSWAPAMOV51H,AMOVA,R2ANLA,#0FHMOV50H,ARET(R0)(R1,R2)3.19编写子程序,将R1中的两个十六进制数转换为ASCII码后存放在R3和R4中。TSAN:MOVA,R1LCALLASCIMOVR4,AMOVA,R1SWAPALCALLASCIMOVR3,ARETASCI:ANLA,#0FHPUSHACCCLRCSUBBA,#0AHPOPACCJCLOOPADDA,#07HLOOP:ADDA,#30HRET4.14.34.54.74.84.911月23日交
本文标题:单片机作业与习题
链接地址:https://www.777doc.com/doc-2594188 .html