您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机程序分析试题与答案
六、设计题1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。答:图(5分)构思(3分)MOVA,#80H(1分)UP:MOVP1,A(1分)RRA(2分)SJMPUP(1分)2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。答:图(5分)构思(3分)程序(4分)ORG0000HLJMPMAINORG0003HLJMPAINT0ORG0013HLJMPBINT1MAIN:MOVIE,#83HSETBIT0SETBIT1MOVR0,#00HMOVDPTR,#TABUP:MOVA,R0MOVCA,@A+DPTRMOVP1,ASJMPUPAINT0:INCR0CJNER0,#10,AINT01MOVR0,#0AINT01:RETIBINT1:DECR0CJNER0,#0FFH,BINT11MOVR0,#9BINT11:RETI1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。1.SQR:1NCAMOVCA,@A+PCRETTAB:DB0,1,4,9,16DB25,36,49,64,812.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨CY)2.ORLC,11HMOV12H,CMOVC,P1.0ORLC,/10HANLC,12HMOVBIT,CRET3.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。Y=100100xxx3.MOVA,VARCJNEA,#0,COMPSJMPRES;x=0,Y=0COMP:JNCPOSI;x0,Y=1MOVA,#0FFH;x0,Y=-1SJMPRESPOSI:MOVA,#01HRES:MOVFUNC,ARET4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。4.MOVR0,#SUMMOVA,R2ANLA,#OFHMOV@R0,A;存低字节BCDMOVA,R2ANLA,#0F0HSWAPA1NCR0MOV@R0,A;存高字节BCDRET5.将存于外部RAM8000H开始的50H数据传送0010H的区域,请编程实现。5.MOVDPTR,#8000HMOVR0,#10HMOVR2,#50HLOOP:MOVXA,@DPTR;取数MOVX@R0,A;存数1NCDPTR1NCR0DJNZR2,LOOPRET1.已知如图,8155的PA口用于输出,PB口用于输入,PC口用于输出,请:(1)写出8155的各I/O口的口地址和存储器的地址范围。1.(1)(2)编写出8155初始化程序。B155命令字格式:(2)初始化程序:MOVDPTR,#0100HMOVA,#0DHMOVX@DPTR,A2.已知如图并给出下列程序,请在读图并理解程序后回答下列问题:(1)程序功能为_巡回采集8个通道的数据__。(2)ADC0809的口地址为___ADC0809口地址为7FF0H~7FF7H(或7FF8~7FFFH)__。(3)EOC的作用是_EOC为A/D转换结束信号,用来引起中断或查询,以便读取A/D的转换结果_。(4)程序运行结果存于__外部RAM的A0H~A7H。_。ADC:MOVDPTR,#7FFOHMOVR0,#0A0HMOVR2,#8MOVA,#0LOOP:MOVX@DPTR,AJBP3.3,$MOVXA,@DPTRMOVX@R0,A1NCDPTR1NCR0DJNZR2,LOOPAJMPADC说明MCS—51单片机的下列各条指令中源操作数的寻址方式(可直接在每条指令后面书写)1.ANLA,20H直接寻址2.ADDCA,#20H立即寻址3.JZrel相对寻址4.CLRC位寻址5.RRA寄存器寻址六、使用简单指令序列完成以下操作(12分)1.请将片外RAM20H—25H单元清零MoVR0,#20HMOVR7,#06HCLRALOOP:MOVX@R0,AINCR0DJNZR7,LOOP2.请将ROM3000H单元内容送R7MOVDPTR,#3000HCLRAMOVCA,@A+DPTRMOVR7,A1有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。要求将该字符串中每一个字符加偶校验位。(以调用子程序的方法来实现。)源程序如下:ORG1000HMOVR0,#40HMOVR7,#10NEXT:MOVA,①@R0ACALLSEPAMOV@R0,AINCR0DJNZ②R7,NEXTSJMP$SEPA:ADDA,#00H③JNBPSW.0,SRETORLA,④#80HSRET:⑤RET2.从内部RAM30H单元开始,有10个单字节数据。试编一个程序,把其中的正数、负数分别送40H和50H开始的内部RAM单元。(10分)答:MOVR0,#30HMOVR1,#40HMOVA,#50HMOVR7,#10LOOP:MOV20H,@R0JB20H.7,FSHUZSHU:MOV@R1,20HINCR1SJMPNEXTFSHU:XCHA,R1MOV@R1,AXCHA,R1INCANEXT:DJNZR7,LOOPSJMP$七:将内部RAM20H为首的16个单元的8位无符号数排序写出程序,并作适当注释SORT:MOVR0,#20HMOVR7,#07HCLRTR0;交换标志位复位LOOP:MOVA,@R0MOV2BH,AINCR0MOV2AH,@R0CLRCSUBBA,@R0;比较前后两个数JCNEXT;MOV@R0,2BHDECR0MOV@R0,2AHINCR0SETBTR0;置交换标志位有效NEXT:DJNZR7,LOOPJBTR0,SORT;若交换标志位有效,继续进行HERE:SJMP$八、读图题(20分)阅读下列硬件图,补齐连接线(5分),并回答问题(各5分):2764:容量为8KB的程序存储器(EPROM)用来存储程序6264:容量为8KB的数据存储器(RAM)用来存储数据8031:不含程序存储器的8位单片机芯片,是不带I/O设备的微型计算机。(3、2764、6264的地址范围(P2.5取”0”)1.数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。ORG1000HMOVR7,#20HMOVR0,#30HMOVR1,#60HLOOP:MOVA,@R0MOVR1,AINCR0(1、ALE、PSEN、WR、RD的功能ALE作地址锁存的选通信号,以实现低八位地址的锁存,PSEN信号作扩展程序存储器的读选通信号WR、RD作为扩展数据存储器和I/O端口的读写选通信号。(2、图中各芯片的功能74LS373:地址锁存器,用来锁存P0口发送的地址低8位INCR1DJNZR7,LOOPSJMP$END2.将4个单字节数放片内30H~~33H,它们求和结果放在片内40H,41H单元。ORG1000HMOVR7,#04HMOVR0,30HCLRAMOV41H,ALOOP:ADDA,@R0JNCNEXTINC41HNEXT:INCR0DJNZR7,LOOPMOV40H,ASJMP$END3.RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R2中。ORG2200HMOVA,40HMOVB,#64HDIVABMOVR2,AMOVA,#0AHXCHA,BDIVABSWAPAORLA,BSJMP$END4.编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。ORG1000HMOVR7,#07HMOVR0,#40HLOOP:MOVA,@R0ANLA,#0FHMOV@R0,AINCR0DJNZR7,LOOPSJMP$END
本文标题:单片机程序分析试题与答案
链接地址:https://www.777doc.com/doc-2606609 .html