一、试将下面的8051单片机的汇编语言程序转换为实现同样功能的C语言程序。(15分)
ORG 0000H LJMP MAIN ORG 001BH LJMP INT_T1 ORG 0100H MAIN:
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_END NOT15:
CJNE A,#10,NOT10 MOV P2,#10H LJMP T1_END NOT10:
CJNE A,#5,NOT5 MOV P2,#05H LJMP T1_END NOT5:
CJNE A,#0,T1_END MOV P2,#00H MOV A,#30 T1_END: RETI END
二、利用中断技术设计一个故障检测系统。当出现故障1时,线路1上出现上升沿;当出现故障2时,线路2上出现下降沿;当出现故障3时,线路3上出现上升沿。没有故障时,线路1和线路3为低电平,线路2为高电平,对应故障源的故障指示灯全熄灭。出现故障时,对应故障源的故障指示灯闪烁(闪烁周期定为1秒钟,亮0.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个数据发送给从机,并将数据块校验值(将各个数据进行异或,取最后的异或值作为校验值)发给从机。从机接收数据并进行数据块的校验,若校验正确,则从机发送00H给主机,否则发送0FFH给主机,主机重新发送数据。(在适当的地方加程序注释)。(20分)
五、利用MSC1211的A/D构成数据采集系统。使用模拟通道0对0~10mV的信号进行连续数据采集,采集16次后取得平均值,存放到预先分配好的30个内存单元中,这30个单元存满后,再从第一个单元进行覆盖保存。写出完整的程序清单(在适当的地方加程序注释)。(15分)
六、阐述学习“单片机原理及应用”课程的心得体会。(10分)
山东大学 2011-2012 学年 2 学期 《单片机原理及应用》 课程试卷 (A) 参考答案
一. (15分)
#include \ //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; break; case 0: i=50; P2=0; break; default:
P2=0xff; break; } }
二.(20分,电路图5分,主程序5分,外部中断函数5分,定时器中断函数5分)
#include \sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4; sbit P15=P1^5;
unsigned char i; //声明计数变量。 unsigned char FLASH1=0; unsigned char FLASH3=0; unsigned char FLASH5=0;
void T0_ISR (void) interrupt 1 //定时器T0中断函数 {
TL0=0xB0; //重新装入时间常数 TH0=0x3C;
i--; //计数变量减1 if(i==0)
{ if (FLASH1)
P11=~P11; else
P11=1; if (FLASH3)
P13=~P13;