欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《单片机原理与应用》试题及答案(共两卷).docx

    • 资源ID:591077       资源大小:80.32KB        全文页数:23页
    • 资源格式: DOCX        下载积分:5
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要5
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《单片机原理与应用》试题及答案(共两卷).docx

    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)校验和

    16、tmp与接收到的第11个数据buffer10(主机发送的校验和)比较(SBUF=OXo0;校验正确,发送OXOOelse(SBUF=Oxff;校验失败,发送Oxff)voidUARTl_isr(void)interrupt4if(RDRI=0;bufferi=SBUF;接收从机发送过来的11个数据,包括校验和数据i+;if(i=ll)i=0;unsignedlongi;unsignedcharstatus,ent;unsignedintadc-result30;ADC.CONTR=0x80;开A/D转换电源,第一次使用时要打开内部模拟电源for(i=0;i=30)cnt=O;for(i=0;i

    17、10000:i+);/在两次转换之间加入适当延时XX大学202X-202X学年2学期单片机原理及应用课程就卷(B)题号二三四五六七八九十总分阅卷人得分各个数据进行异或操作,取最后或的值作为校验值)发给从机。从机接收数据并进行数据块的校验,若校验正确,则从机发送OOH给主机,否则发送OFFH给主机,主机重新发送数据。(在适当的地方加程序注释)。(25分)得分阅卷人、简要回答下列问题。(每小题5分,共15分)1、STC8A8K64S4A12单片机的存储区分为哪几个空间,如何区分?2、什么是中断?什么是中断源?什么是中断优先级?STC8A8K64S4A12可以设置几种中断优先级?3、STC8A8K6

    18、4S4A12单片机可用那些寄存器进行寄存器间接寻址?对特殊功能寄存器如何寻址?得分阅卷人六、谈谈学习“单片机原理及应用”课程的收获和体会。(10分)得分阅卷人1、得分阅卷人得分阅卷人环下去。(20分)二、编程实现:求出STC8A8K64S4A12内部RAM50H60H中的无符号数中的最小值,从PI口输出(10分)三、设计一个故障检测系统。当出现故障1时,线路1上出现下降沿;当出现故障2时,线路2上出现上升沿;没有故障时,线路1为高电平,线路2为低电平,对应故障源的故障指示灯熄灭。出现故障时,对应故障源的故障指示灯闪烁(闪烁周期定为1秒钟,亮0.5秒,灭0.5秒)。故障消失后,指示灯熄灭。试用S

    19、TC8A8K64S4A12单片机和必要的数字逻辑电路实现该故障检测功能,画出电路原理图,并写出相应程序。(假设单片机外接11.0592MHZ的晶体)。(20分)四、设STC8A8K64S4A12单片机的主频为11.0592MHZ,用定时器Tl定时,要求定时0.5S,使P2口所连接的8个发光二极管每隔0.5S依次点亮,全部点亮后熄灭,然后再依次点亮,如此一直循得分阅卷人五、利用STC8A8K64S4A12单片机设计应答方式的通信程序。通讯参数:晶振为11.0592MHz,9600,n,8,1。通讯过程如下:主机将内存单元中的10个数据发送给从机,并将数据块校验值(将第页共页for(i=0;ivl

    20、7;i+)求出从50H-60H这17个单元中的最小数据if(*p)temp)temp=*p;P+;)Pl=temp;最小值从Pl口输出while(l);#includestc8.hunsignedchari;声明计数变量。unsignedcharFLASHl=O;unsignedcharFLASH2=0;voidTimerOInit(Void);voidTO_ISR(void)interrupt1定时器TO中断函数(i-;计数变量减1if(i=0)(if(FLASHl)P21=P21;单片机原理及应用课程试卷(B)参考答案一、简答题(每小题5分,共15分)1、STC8A8K64S4A12单片机

    21、有3个物理上相互独立的存储空间:片内FIaSh程序存储器,内部数据存储器和外部数据存储器。从逻辑空间上看,实际上存在3个独立空间。片内Flash程序存储器的地址从OOOOfFFFFH是连续的。内部数据存储器和外部数据存储器各占一个逻辑空间,片内数据存储器的地址空间为OOrFFH,而片外数据存储器的地址空间为OOOOIrFFFFH。2、所谓中断是指计算机在执行其他程序的过程中,当出现了某些异常事件或某种请求时,CPU暂时中止正在执行的程序,而转去执行对异常事件或某种请求的服务程序。当服务完毕后,CPU再回到被暂时中止的程序继续执行。中断源是指能发出中断请求,引起中断的装置或事件。每一个中断源都可

    22、以由软件设定为高优先级或低优先级,优先级的设定通过设置中断优先级寄存器完成。在低优先级中断服务程序运行期间,如果来了一个高优先级的中断请求,除非在低优先级的服务程序中关中断或禁止某些高优先级的中断请求,否则将允许高优先级的中断请求中断低优先级的服务程序,转去执行高优先级的中断服务程序,低级或同级的中断请求不能中断正在执行的中断服务程序。STC8A8K64S4A12可以设置四种优先级。3、采用RO、RlDPTR作为间接寻址寄存器;特殊功能寄存器只能直接寻址。二、(共10分:求出最小值5分,输出5分)#includestc8.h#include#defineucharunsignedchar#de

    23、fineuintunsignedintuchardata*p=Ox5O;voidmain(void)uchartemp,i;for(i=0;i17;i+)对50H-60H单元中的数据赋值(*p=i+10;P+;temp=*(p-l);/temp对应60H单元中的数据p=Ox5O;#includestc8.h#defineucharunsignedchar#defineuintunsignedintucharent;uchartemp;/50毫秒11.0592MHZbitflag=。;位变量标志voidTimerlInit(Void);voidmain(void)Timerllnit();EA=

    24、I;ET1=1;P2=0xfe;/初始值temp=0xfe;while(l)voidTimerlInit(Void)(AUXR&=OxBF;TMOD&=OxOF;/50毫秒11.0592MHZ定时器时钟12T模式设置定时器模式TLl=0x00;设置定时初值THl=0x4C;/设置定时初值TFl=0;清除TFl标志TRl=1;定时器1开始计时)voidtimerl_isr(void)interrupt3ent+;if(cnt=10)0.5s定时时间到cnt=O;temp=1;/led依次点亮P2=temp;if(flag=l)led全部点亮后熄灭flag=O;elseP21=l;if(FLASH

    25、2)P22=P22;elseP22=l;i=50;重新给计数变量赋值voidexternO_ISR(void)interrupt0外部中断函数(if(P11=0)FLASHl=I;if(Pl2=1)FLASH2=1;)voidmain(void)TimerOInit();i=50;计数变量赋初值ITO=I;EXO=I;ETO=I;EA=I;Pl=OxEE;while(l);外部中断。为边沿触发方式/允许外部中断0允许To中断开放总的中断voidTimerOInit(Void)10毫秒11.0592MHZtAUXR&=0x7F;TMOD&=OxFO;TLO=0x00;定时器时钟12T模式设置定时

    26、器模式设置定时初值THO=OxDC;设置定时初值TFO=0;清除TFO标志TRO=1;定时器0开始计时四、(20分,主程序10分:其中初始化5分,开关判断5分;定时器中断10分)tempA=datn;对10个要发送的数据异或,准备好要发送的第11个数据tempSBUF=dat0;/启动发送第一个数据,进入发送中断while(l)(if(flagX=D(flag_tx=O;EA=O;关中断While(TI!=1);查询方式,等待校验和temp发送完毕TI=O;EA=I;/重新开放中断,以使能接收中断,接收从机发送来的数据)if(flag_rx=l)主机接收完成,则进入判断环节flag_rx=0;

    27、if(rx=0x00)发送正确,绿灯亮,红灯灭(green=O;red=1;if(rx=0xff)发送失败,绿灯灭,红灯亮,并且从头重新发送red=O;green=1;)voidUartlInit(Void)(SCON=0x50;AUXR&=OxBF;AUXR&=OxFE;TMOD&=OxOF;TLl=0xE8;THl=OxFF;SBUF=datO;/9600bps11.0592MHz/8位数据,可变波特率定时器1时钟为Fosc12,SP12T串口1选择定时器1为波特率发生器设定定时器1为16位自动重装方式设定定时初值设定定时初值ETl=0;禁止定时器1中断TRl=I;启动定时器1P2=0xf

    28、f;temp=Oxff;)if(temp=O)flag=l;temp=Oxff;)五、(20分,主机10分:主程序5分,中断服务程序5分;从机10分:主程序5分,中断服务程序5分)主机#includestc8.h#defineucharunsignedchar#defineuintunsignedintUChardat10=0,1,2,3,4,5,6,7,8,9;自定义10个要发送的数据uchari=0;uchartemp;ucharrx;bitflag_rx,flag_tx;接收完成、发送完成标志sbitgreen=P20;/指示灯sbitred=P2l;voidUartlInit(VOid

    29、);/9600bps()11.0592MHzvoidmain(void)(ucharn;Uartllnit();EA=I;ES=I;使能串口中断temp=OxOO;flag_rx=O;flag_tx=O;green=1;指示灯初始状态全灭red=l;for(n=0;n10;n+)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

    30、中)if(tmp=buffer10)/校验和tmp与接收到的第11个数据bufferIOR主机发送的校验和)比较(SBUF=OXo0;校验正确,发送OXOO)else(SBUF=Oxff;校验失败,发送Oxff)voidUartlInit(Void)/9600bps11.0592MHzSCON=0x50;AUXR&=OxBF;AUXR&=OxFE;TMOD&=OxOF;/8位数据,可变波特率/定时器1时钟为FOSe/12,即12T/串口1选择定时器1为波特率发生器/设定定时器1为16位自动重装方式TLl=0xE8;/设定定时初值THl=OxFF;设定定时初值ETl=0;禁止定时器1中断TRl=

    31、1;/启动定时器1)voidserial_isr(void)interrupt4voidserial_isr(void)interrupt4if(TI)(TI=O;i+;if(i=10)/判断:如果前10个数据发送完毕,则发送第11个数据,即校验和temp(i=0;SBUF=temp;flagjx=l;/为了防止反复进入发送中断而多次发送11个数据,设置发送完成标志位)else(SBUF=dati;)if(RI)(RI=O;flag_rx=l;接收完从机发来的一个数据后,置位接收标志位flag_rxrx=SBUF;)从机#includestc8.h#defineucharunsignedchar#defineuintunsignedintucharbufferll=O;uchari;bitag;voidUartlInit(Void);/9600bps11.0592MHzvoidmain(void)uchartmp;ucharn;if(RI)(RI=O;bufferi=SBUF;/接收从机发送过来的11个数据,包括校验和数据i+;if(i=ll)(i=0;flag=l;/置位接收完成标志位)if(TI)TI=O;


    注意事项

    本文(《单片机原理与应用》试题及答案(共两卷).docx)为本站会员(极速器)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!




    宁ICP备18001539号-1

    三一文库
    收起
    展开