ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:18.43KB ,
资源ID:5143082      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5143082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(山东大学单片机试题教学文案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

山东大学单片机试题教学文案.docx

1、山东大学单片机试题教学文案2012山东大学单片机试题一、试将下面的8051单片机的汇编语言程序转换为实现同样功能的C语言程序。(15分) ORG 0000H LJMP MAIN ORG 001BH LJMP INT_T1 ORG 0100HMAIN: MOV SP,#70H MOV TMOD,#10H MOV TL1,#58H MOV TH1,#9EH MOV A,#30 SETB ET1 SETB EA; SETB TR1 SJMP $INT_T1 : MOV TL1,#58H MOV TH1,#9EH DEC A CJNE A,#15,NOT15 MOV P2,#15H LJMP T1_E

2、NDNOT15: CJNE A,#10,NOT10 MOV P2,#10H LJMP T1_ENDNOT10: CJNE A,#5,NOT5 MOV P2,#05H LJMP T1_ENDNOT5: CJNE A,#0,T1_END MOV P2,#00H MOV A,#30T1_END: RETI END二、利用中断技术设计一个故障检测系统。当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿;当出现故障3时,线路3上出现上升沿。没有故障时,线路1和线路3为低电平,线路2为高电平,对应故障源的故障指示灯全熄灭。出现故障时,对应故障源的故障指示灯闪烁(闪烁周期定为1秒钟,亮0

3、.5秒,灭0.5秒)。故障消失后,指示灯熄灭。试用8051单片机和必要的数字逻辑电路实现该故障检测功能,画出电路原理图,并写出相应程序。(假设单片机外接12MHz的晶体)。(20分) 三、飞机夜间飞行时,机翼上安装有一个信号灯闪烁,有两种闪烁方式,用一个方式设置开关进行设置,一种是指示灯亮0.1秒,灭0.4秒;另外一种方式是亮0.2秒,灭0.8秒。试用单片机实现,画出电路图,并编写相应的程序(假设晶振频率为11.0592MHz)(20分)四、利用8051单片机设计应答方式的通信程序。通讯参数:晶振为11.0592MHz,9600,n,8,1。通讯过程如下:主机将内存单元中的10个数据发送给从机

4、,并将数据块校验值(将各个数据进行异或,取最后的异或值作为校验值)发给从机。从机接收数据并进行数据块的校验,若校验正确,则从机发送00H给主机,否则发送0FFH给主机,主机重新发送数据。(在适当的地方加程序注释)。(20分) 五、利用MSC1211的A/D构成数据采集系统。使用模拟通道0对010mV的信号进行连续数据采集,采集16次后取得平均值,存放到预先分配好的30个内存单元中,这30个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(在适当的地方加程序注释)。(15分)六、阐述学习“单片机原理及应用”课程的心得体会。(10分)山东大学 2011-2012 学年 2 学期 单片机原

5、理及应用 课程试卷 (A)参考答案 一. (15分)#include reg51.h /2分unsigned char i;void main (void) TMOD=0x10; /2分 TL1=0x58; TH1=0x9E; /2分 i=30; ET1=1; EA = 1; /2分 TR1=1; while(1);void T1_ISR (void) interrupt 3 /2分 TL1=0x58; TH1=0x9E; i-; switch(i) /4分 case 15: P2=0x15; break; /1分 case 10: P2=0x10; break; case 5: P2=0x5

6、; break; case 0: i=50; P2=0; break; default: P2=0xff; break; 二.(20分,电路图5分,主程序5分,外部中断函数5分,定时器中断函数5分)#include REG51.Hsbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P13=P13;sbit P14=P14;sbit P15=P15;unsigned char i; /声明计数变量。unsigned char FLASH1=0;unsigned char FLASH3=0;unsigned char FLASH5=0; void T0_ISR

7、(void) interrupt 1 /定时器T0中断函数 TL0=0xB0; /重新装入时间常数 TH0=0x3C; i-; /计数变量减1 if(i=0) if (FLASH1) P11=P11; else P11=1; if (FLASH3) P13=P13; else P13=1; if (FLASH5) P15=P15; else P15=1; i = 10; /重新给计数变量赋值 void extern0_ISR(void) interrupt 0 /外部中断函数 if(P10=1) FLASH1=1; if(P12=0) FLASH3=1; if(P14=1) FLASH5=1;

8、void main(void) TMOD=0x01; TL0=0xB0; TH0=0x3C; i=10; /计数变量赋初值 TR0=1; /启动T0计数 IT0=1; /外部中断0为边沿触发方式 EX0=1; /允许外部中断0 ET0=1; /允许T0中断 EA=1; /开放总的中断 P1=0XEE; while(1); 三.(20分,电路5分;主程序10分:其中初始化5分,开关判断5分;定时器中断5分)#include #define uchar unsigned char#define uint unsigned int sbit led=P10;sbit sw=P11;bit flag1

9、,flag2;uchar count,cnt; void main() sw=1;/置1作为输入口 TMOD=0x01; TL0=0x00; TH0=0x4C; /11.0592M,定时50ms TR0=1; EA=1; ET0=1; flag1=0;/方式一标志位 flag2=0;/方式二标志位 led=1; while(1) if(sw=0) /开关按下,方式一 if(flag1) led=1;/灭0.4s else led=0; /亮0.1s else /开关未按下,方式二 if(flag2) led=1; /灭0.8s else led=0;/亮0.2s void timer0_isr

10、() interrupt 1 TL0=0x00; TH0=0x4C; count+; if(count=2) flag1=1; if(count=10) count=0; flag1=0; cnt+; if(cnt=4) flag2=1; if(cnt=20) cnt=0; flag2=0; 四.(20分,主机10分:主程序5分,中断服务程序5分;从机10分:主程序5分,中断服务程序5分)主机#include #define uchar unsigned char#define uint unsigned int uchar dat10=0,1,2,3,4,5,6,7,8,9;/自定义10个要

11、发送的数据uchar i=0;uchar temp;uchar rx;bit flag_rx,flag_tx;/接收完成、发送完成标志 sbit green=P10;/指示灯sbit red=P11; void main() uchar n; SCON=0x50;/方式一,使能接收 TMOD=0x20; /定时器1工作在方式二 TH1=0xfd; /波特率9600,自动重装载 TL1=0xfd; TR1=1; EA=1; ES=1; /使能串口中断 temp=0x00; flag_rx=0; flag_tx=0; green=1;/指示灯初始状态全灭 red=1; for(n=0;n10;n+

12、) temp=datn; /对10个要发送的数据异或,准备好要发送的第11个数据temp SBUF=dat0;/启动发送第一个数据,进入发送中断 while(1) if(flag_tx=1) flag_tx=0; EA=0; /关中断 while(TI!=1);/查询方式,等待校验和temp发送完毕 TI=0; EA=1; /重新开放中断,以使能接收中断,接收从机发送来的数据 if(flag_rx=1) /主机接收完成,则进入判断环节 flag_rx=0; if(rx=0x00) /发送正确,绿灯亮,红灯灭 green=0; red=1; if(rx=0xff) /发送失败,绿灯灭,红灯亮,并

13、且从头重新发送 red=0; green=1; SBUF=dat0; void serial_isr() interrupt 4 if(TI) TI=0; i+; if(i=10) /判断:如果前10个数据发送完毕,则发送第11个数据,即校验和temp i=0; SBUF=temp; flag_tx=1;/为了防止反复进入发送中断而多次发送11个数据,设置发送完成标志位 else SBUF=dati; if(RI) RI=0; flag_rx=1;/接收完从机发来的一个数据后,置位接收标志位flag_rx rx=SBUF; 从机#include #define uchar unsigned c

14、har#define uint unsigned int uchar buffer11=0;uchar i;bit flag; void main() uchar tmp; uchar n; SCON=0x50; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; EA=1; ES=1; i=0; flag=0; tmp=0; while(1) if (flag=1) /在循环程序中轮询接收完成标志位flag,如果为1,则表明从机已经接受完11个数据,可以进入判断环节 flag=0; for(n=0;n8)&0x07;ADCON1=0x01; /双极性for(k=0;k4;k+) /校准 while(!(AIE&0x20); j=bipolar();while(1) SSCON=0; /清零求和寄存器 SSCON=0xDB; /16次取平均 /5分 while(!(AIE&0x40); resultnum=(unsigned long int)SUMR324)+ (unsigned long int)SUMR216)+ (unsigned long int)SUMR18)+ (unsigned long int)SUMR0; /3分 num+ if(num=30) /已采集完30个 num=0; /从头开始 /2分

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1