《单片机原理与应用》试题及答案(共两卷).docx
《《单片机原理与应用》试题及答案(共两卷).docx》由会员分享,可在线阅读,更多相关《《单片机原理与应用》试题及答案(共两卷).docx(23页珍藏版)》请在三一文库上搜索。
1、XX大学202X-202X学年X学期单片机原理及应用课程试卷(八)得分阅卷人ORGOOOOHLJMPMAINORGOOlBHLJMPINT_T1ORGOlOOH得分阅卷人T1_END:RETIEND得分阅卷人得分阅卷人得分阅卷人题号二三四五六七八九十总分阅卷人得分一、试将下面的8051单片机的汇编语言程序转换为实现同样功能的C语言程序。(15分)MAIN:MOVSP,#70HMOVTMOD,#1OHMOVTL1,#58HMOVTH1,#9EHMOVA,#30SETBETlSETBEA;SETBTRlSJMP$INT_T1:MOVTL1,#58HMOVTH1,#9EHDECACJNEA,#15,
2、NOT15MOVP2,#15HLJMPT1_ENDNOT15:CJNEA,#10,NOTlOMOVP2,#10HLJMPT1_ENDNOTlO:CJNEA,#5,NOT5MOVP2,#05HLJMPT1_ENDNOT5:CJNEA,#O,T1_ENDMOVP2,#00HMOVA,#30二、利用中断技术设计一个故障检测系统。当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿;当出现故障3时,线路3上出现上升沿。没有故障时,线路1和线路3为低电平,线路2为高电平,对应故障源的故障指示灯全熄灭。出现故障时,对应故障源的故障指示灯闪烁(闪烁周期定为1秒钟,亮0.5秒,灭0.5秒)。
3、故障消失后,指示灯熄灭。试用STC8A8K64S4A12单片机和必要的数字逻辑电路实现该故障检测功能,画出电路原理图,并写出相应程序。(假设单片机外接11.0592MHZ的晶体)。(20分)三、飞机夜间飞行时,机翼上安装有一个信号灯闪烁,有两种闪烁方式,用一个方式设置开关进行设置,一种是指示灯亮0.1秒,灭0.4秒;另外一种方式是亮0.2秒,灭0.8秒。试用单片机实现,画出电路图,并编写相应的程序(假设晶振频率为11.0592MHZ)(20分)四、利用STC8A8K64S4A12单片机设计应答方式的通信程序。通讯参数:晶振为11.0592MHz,9600,n,8,Io通讯过程如下:主机将内存单
4、元中的10个数据发送给从机,并将数据块校验值(将各个数据进行异或,取最后的异或值作为校验值)发给从机。从机接收数据并进行数据块的校验,若校验正确,则从机发送OOH给主机,否则发送OFFH给主机,主机重新发送数据。(在适当的地方加程序注释)。(20分)五、利用STC8A8K64S4A12的A/D构成数据采集系统。使用模拟通道0对05V的信号进行连续数据采集,采集16次后取得平均值,存放到预先分配好的30个内存单元中,这30个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(在适当的地方加程序注释)。(15分)得分阅卷人六、阐述学习“单片机原理及应用”课程的心得体会。(10分)第页共页P
5、2=0xff;break;)#includestc8.h1unsignedchari;声明计数变量。unsignedcharFLASHO=O;unsignedcharFLASHl=O;unsignedcharFLASH2=0;voidTimerOInit(Void);voidTOJSR(void)interrupt1定时器TO中断函数i-;计数变量减1if(i=0)(if(FLASHO)P20=P20;elseP20=l;if(FLASHl)P21=P21;elseP21=l;if(FLASH2)P22=P22;单片机原理及应用课程试卷(八)参考答案一.(15分)#includereg5l.h
6、/2分unsignedchari;voidmain(void)TMOD=OxIO;/2分TL1=0x58;THl=0x9E;/2分i=30;ET1=1;EA=1;/2分TR1=1;while(l);voidT1_ISR(void)interrupt3/2分(TLl=0x58;THl=0x9E;i-;switch(i)/4分(case15:P2=0xl5;break;1分case10:P2=0xl0;break;case5:P2=0x5;break;case0:i=50;P2=0;break;default:#includestc8.h#defineucharunsignedchar#defin
7、euintunsignedintsbitled=PlO;sbitsw=P11;bitflagl,flag2;ucharcount,ent;voidTimerOInit(Void);/50毫秒11.0592MHZvoidmain(void)(SW=1;置1作为输入口TimerOInit();TRO=1;EA=I;ETO=1;agl=O;方式一标志位flag2=0;方式二标志位Ied=I;while(l)(if(sw=0)开关按下,方式一if(flagl)Ied=I;灭0.4s)elseIed=O;亮0.1elseP22=l;i=50;重新给计数变量赋值)voidexternO_ISR(void)
8、interrupt0外部中断函数(if(P10=l)FLASHO=I;if(Pll=O)FLASHl=I;if(P12=l)FLASH2=1;)voidmain(void)TimerOInit();i=50;计数变量赋初值ITO=I;外部中断0为边沿触发方式EXO=I;允许外部中断0ETO=I;允许TO中断EA=I;开放总的中断Pl=OxEE;while(l);voidTimerOInit(Void)10毫秒11.0592MHZAUXR&=0x7F;TMOD&=OxFO;TLO=0x00;THO=OxDC;TFO=0;TRO=1;定时器时钟12T模式设置定时器模式设置定时初值设置定时初值清除T
9、FO标志定时器0开始计时三.(20分,电路5分;主程序10分:其中初始化5分,开关判断5分;定时器中断5分)voidTimerOInit(Void)/50毫秒11.0592MHZIAUXR&=0x7F;TMOD&=OxFO;定时器时钟12T模式设置定时器模式TLO=0x00;设置定时初值THO=0x4C;设置定时初值TFO=0;清除TFO标志TRO=1;/定时器0开始计时四.(20分,主机10分:主程序5分,中断服务程序5分;从机10分:主程序5分,中断服务程序5分)主机#includestc8.h#defineucharunsignedchar#defineuintunsignedintUC
10、hardat10=0,1,2,3,4,5,6,7,8,9;自定义10个要发送的数据uchari=0;uchartemp;ucharrx;bitflag_rx,flag_tx;接收完成、发送完成标志sbitgreen=PlO;/指示灯sbitred=Pll;voidUartlInit(Void);voidmain()/9600bps11.0592MHzucharn;UartlInitC);EA=I;ES=I;使能串口中断temp=0x00;flag_rx=O;flag_tx=O;green=l;/指示灯初始状态全灭red=l;for(n=0;n10;n+)tempA=datn;/对10个要发送的
11、数据异或,准备好要发送的第11个数据tempelse开关未按下,方式二(if(flag2)Ied=1;灭0.8selseIed=0;亮0.2s)voidtimerO_isr(void)interrupt1count+;if(count=2)(flagl=l;if(count=10)count=0;agl=0;ent+;if(cnt=4)flag2=l;if(cnt=20)cnt=0;flag2=0;flagjx=l;/为了防止反复进入发送中断而多次发送11个数据,设置发送完成标志位SBUF=dati;if(RI)RI=O;flagX=1;接收完从机发来的一个数据后,置位接收标志位flag_rx
12、rx=SBUF;voidUartlInit(Void)960ObPS11.0592MHZSCON=0x50;/8位数据,可变波特率AUXR&=OxBF;定时器1时钟为FOSC/12,即12TAUXR&=OxFE;串口1选择定时器1为波特率发生器TMOD&=OxOF;/设定定时器1为16位自动重装方式TLl=0xE8;设定定时初值THl=OxFF;设定定时初值ETl=0;禁止定时器1中断TRl=1;/启动定时器1从机#includestc8.h#defineucharunsignedchar#defineuintunsignedintucharbufferll=O;uchari;bitag;vo
13、idUartlInit(Void);960ObPS11.0592MHZvoidmain()uchartmp;ucharn;SBUF=datO;/启动发送第一个数据,进入发送中断while(l)if(flag_tx=l)flag_tx=0;EA=O;关中断Whilecn!=1);查询方式,等待校验和temp发送完毕TI=O;EA=I;重新开放中断,以使能接收中断,接收从机发送来的数据)if(flag_rx=l)主机接收完成,则进入判断环节(flag_rx=0;if(rx=0x00)发送正确,绿灯亮,红灯灭green=0;red=l;if(rx=0xff)发送失败,绿灯灭,红灯亮,并且从头重新发送
14、red=O;green=1;SBUF=datO;voidUARTl_isr(void)interrupt4if(TI)TI=O;i+;if(i=10)/判断:如果前10个数据发送完毕,则发送第11个数据,即校验和temp(i=0;SBUF=temp;flag=l;/置位接收完成标志位)if(TI)(TI=O;)voidUartlInit(Void)/9600bps11.0592MHz个ISCON=0x50;AUXR&=OxBF;AUXR&=OxFE;TMOD&=OxOF;/8位数据,可变波特率定时器1时钟为FOSC/12,即12T串口1选择定时器1为波特率发生器/设定定时器1为16位自动重装方
15、式TLl=0xE8;设定定时初值THl=OxFF;设定定时初值ETl=0;禁止定时器1中断TRl=1;/启动定时器1五.(15分)includestc8.h包含STC8A8K64S4A12单片机寄存器定义文件voidmain(void)Uartllnit();EA=I;ES=I;i=0;flag=O;tmp=0;while(l)(if(flag=l)在循环程序中轮询接收完成标志位flag,如果为1,则表明从机已经接受完11数据,可以进入判断环节(flag=O;for(n=0;n10;n+)(tmpA=buffern;异或接收到的前10个数据,存入tmp中)if(tmp=buffer10)校验和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理与应用 单片机 原理 应用 试题 答案 共两卷
