您好,欢迎访问三七文档
1单片机原理与接口技术试题班级姓名学号第1页2005~2006学年二学期期末考试试题(A卷)题目一二三四五六七八总分数分数评卷人一、基本概念题(55分)1.(4分)(写出转换过程)0E75H=(0000111001110101)B;1110011010B=(922)D1001110001110.1011B=(138E.B)H;13FH=(319)D(1)0E75H=0000111001110101B(2)1110011010B=1×29+1×28+1×27+0×26+0×25+1×24+1×23+0×22+1×21+0×20=922D(3)1001110001110.1011B=0001001110001110.1011B=138E.BH(4)13FH=1×162+3×161+15×160=319D2.(8分)写出下列程序段执行后,相关寄存器或存储单元的内容。MOVR0,#30HMOV30H,#40HMOVA,@R0MOV60H,ASJMP$A=40H,R0=30H,(30H)=40H,(60H)=40H3.(6分)若fosc=6MHz,编写一个能延时200毫秒的子程序。DELAY:MOVR7,#200D1:MOVR6,#250D2:DJNZR6,D2DJNZR7,D1RET24.(15分)下列程序存放在64KB的EPROM中ORG0000H0000H020200HLJMPMAIN;跳转到MAINORG0200H0200HE530HMAIN:MOVA,30H;将30H内容送A0202H30E706HJNBACC.7,ABD;ACC.7=0跳转ABD0205HF4HCPLA;A取反0206H04HINCA;A加10207HF531HMOV31H,A;A送31H单元0209H8002HSJMPABC;跳转到ABC020BHF532HABD:MOV32H,A;A送32H单元020DH80FEHABC:SJMP$;原地踏步无限循环020FH试分析该程序,并回答以下问题:①手工汇编该程序(写出机器码),并写出每条指令的首地址(写在程序左边);见卷面。②该程序段占用多少个存储单元;答:15个存储单元。③在CPU取回指令SJMP$,并执行该指令时PC值为多少,执行后PC为多少;答:执行SJMP$指令时PC值为020FH,执行后PC值仍为020DH。④分析该程序段,并在指令后作注释。答:该程序段的主要功能是检测片内RAM30H单元的内容,若其最高位为“0”,则直接转存到片内RAM31H单元,否则将其内容取反再加“1”后送到片内RAM31H单元。实际上该程序段的功能是将RAM30H单元中的“补码”转换为“二进制数”的绝对值后存到RAM31H单元。5.(12分)T0用于定时,fOSC=12MHz,试为T0编写初始化程序,定时时间50ms。答:因为一个机器周期=12÷12MHz=1μs所以50ms内T0需要计数的机器周期脉冲个数为N=50ms÷1μs=50000个由此可知必须使用T0方式1的16位计数器才能满足要求T0的初值设为X,则X=M-N=65536-50000=15536=3CB0H=0011110010110000B故T0的初值为:TH0=3CH,TL0=B0H,TMOD初始化成:TMOD=00010001B=11H还要开放中断,即初始化IE,使EA=1;定时器T0中断允许ET0=1。要使T0启动工作,还必须初始化TCON,即使TR0=1初始化程序清单如下:ORG0000H;复位入口AJMPSTARTORG000BH;T0中断入口AJMPTOINTORG0030H3START:MOVSP,#60H;MOVTH0,#3CH;T0MOVTL0,#0B0HMOVTMOD,#11H;赋T0方式字,令T0定时,工作于方式1SETBTR0;启动T0SETBET0;开T0SETBEA;4单片机原理与接口技术试题班级姓名学号第2页6.(10分)分析下图2片6264(8KB)存储器芯片的地址范围。答:74LS138为3-8译码器。由图接线可知,P2.7P2.6P2.5=110时Y3有效,P2.7P2.6P2.5=001时Y4有效,故6264(1)的地址范围为:0010000000000000~0011111111111111=2000H~3FFFH6264(2)的地址范围为:1100000000000000~1101111111111111=C000H~DFFFH二、应用扩展题(45分)1.(15分)根据下图所示电路编程(图中仅给出与编程有关的部分),采用定时器T0定时中断,使LED0~LED7间隔60毫秒逐个循环点亮。(设fosc=6MHz)74LS138P2.5P2.6P2.7CBY3AY4G1G2AG2BVCC8P2.0~P2.4P0ALEMCS-51RDWR锁存器GVCCVCCCE1A0~A12WE6264(1)CE2I/O0~I/O7OECE1A0~A12WE6264(2)CE2I/O0~I/O7OE85558858031P1.0..P1.7LED7LED0+5V答:因为一个机器周期=12÷6MHz=2μs所以50ms内T0需要计数的机器周期脉冲个数为N=60ms÷2μs=30000个由此可知必须使用T0方式1的16位计数器才能满足要求T0的初值设为X,则X=M-N=65536-30000=35536=8AD0H故T0的初值为:TH0=8AH,TL0=D0H,TMOD初始化成:TMOD=00010001B=11H还要开放中断,即初始化IE,使EA=1;定时器T0中断允许ET0=1。要使T0启动工作,还必须初始化TCON,即使TR0=1初始化程序清单如下:ORG0000H;复位入口AJMPSTARTORG000BH;T0中断入口AJMPTOINTORG0030HSTART:MOVP1,#0FFH;先使所有LED熄灭MOVSP,#60H;MOVTH0,#8AH;T0MOVTL0,#D0HMOVTMOD,#11H;赋T0方式字,令T0定时,工作于方式1SETBET0;开T0SETBEA;SETBTR0;启动T0MOVP1,#0FEH;使第一个LED亮MAIN:AJMPMAINTOINT:RLAMOVP1,AMOVTH0,#8AH;再赋T0MOVTL0,#D0H6RETIEND2.(15分)解释下面一段程序,并回答串行口工作于什么方式下,波特率为多少,(数据块存放于50H—5FH中)。TRT:MOVSCON,#80H;设置串口为方式2即9位UARTMOVPCON,#80H;波特率加倍即为fosc/32MOVR0,#50H;数据块首地址送50H单元MOVR7,10H;数据个数送R7LOOP:MOVA,@R0;送数据给AMOVC,PSW.0;将奇偶位送CMOVTB8,C;再将奇偶位送TB8作为第九位发送MOVSBUF,A;数据发送WAIT:JBCTI,CONT;发送完则转CONT继续发送SJMPWAIT;否则转WAIT等待CONT:INCR0;数据地址指针加1DJNZR7,LOOP;数据没发送完则转LOOP继续RET;数据发送完则退出3.(15分)设计电路图并写出在运算放大器输出端输出一个锯齿波电压(脉冲周期要求为200ms)的程序。7START:MOVA,#20H;开始输出电压为0,故A=0MOVDPTR,#7FFFH;0832的地址送DPTR(P2.7=0)MOVR1,#20;每个锯齿波含20台阶每台阶1msLP:MOVX@DPTR,A;送数据至0832CALLDELAY;调用延时1ms的子程序DELAYDJNZR1,NEXT;不到20台阶转移到NEXTSJMPSTART;到10则重复,产生下一个周期波NEXT:ADDA,#10;每次数字量增10以产生台阶最后形成锯齿波SJMPLP;DELAY:MOV20H,#249;延时1ms的子程序DELAYAGAIN:NOPNOPDJNZ20H,AGAINRET
本文标题:单片微机原理
链接地址:https://www.777doc.com/doc-2594023 .html