四川信息职业技术学院毕业设计说明书(论文)第9页
}
设计的此段程序的功能是实现依次一个一个的被点亮。 2.循环方式2 void FUN2() { }
设计此段程序实现的功能是每隔两个间隔点亮一个灯。 3.循环方式3 void FUN3() {
temp1=0x0;
temp2=0x0; //将0赋给temp1、temp2,驱动彩灯发光 TR1=1; //启动定时器/计数器1
temp1=0xAA;
temp2=0xAA; //将二进制数10101010赋给temp1、temp2 TR0=1; //启动定时器/计数器0
while(TR0==1);//while循环,当TR0等于1时,进行循环 P1=0x0ff;
P2=0x0ff; //对p1口和p2口置1 }
P1=0x0ff;
P2=0x0ff; //分别对P1、p2口置1
delay(500);//调用延时子函数 P2=0xFF; //对p2口置1
P1=temp1; //将temp1的值赋给p1口
temp2=_crol_(temp2,1); //将temp2右移1位 delay(500);//调用延时子函数 P1=0xFF; //对p1口置1
P2=temp2; //将temp2的值赋给temp2
四川信息职业技术学院毕业设计说明书(论文)第10页
}
设计此段程序是为了实现彩灯的全部闪烁。
while(TR1==1); //while循环,若TR1等于1,进行循环 P1=0x0ff;
P2=0x0ff; //对p1口和p2口置1
3.2.4 中断服务程序
1.外部中断0服务程序 void _EX0_() interrupt 0 { }
此段程序定义了一个返回值为空的_EX0_函数,关键字interrupt后面的0表示终端号,即表示的外部中断0,中断向量地址为0003H。 2.定时器0中断服务程序 void _ET0_() interrupt 1 {
TH0=(65536-50000)/256;//将计算出的值赋给定时器0的高8位 TL0=(65536-50000)%6;// 将计算出的值赋给定时器0的低8位 aa++; //aa的值自加1
if(aa!=20)//判断aa的值是否等于20,若不得,则执行循环 {
P1=temp1;
P2=temp2;//将temp1、temp2的状态值赋给temp1、temp2 while(1) //while循环,条件真即为1,便循环 { }
P1=0x77;
P2=0xee; //对p1口和p2口赋值 beep=!beep;//对beep的值进行取反 delay(100);//调用延时函数
四川信息职业技术学院毕业设计说明书(论文)第11页
}
此段程序定义了一个返回值为空的_ET0_函数,关键字interrupt后面的1表示终端号,即表示定时器0,中断向量地址是000B H。 3.外部中断1服务程序 void _EX1_() interrupt 2 { }
此段程序定义了一个返回值为空的_EX1_函数,关键字interrupt后面的2表示终端号,即表示外部中断1,其中断向量地址为0013H。
PX1=0;
PX0=1;//设置外部中断1、外部中断0的优先级 temp_int1=key_int1;//将key_int1的值赋给temp_int1
while(temp_int1==0)//while循环,若temp_int1的值等于0,循环 { } PX0=0;
PX1=1;//设置外部中断0、外部中断1的优先级
temp_int1=key_int1;//将key_int1的值赋给temp_int1 }
else //当aa的值等于20时 { }
aa=0;//将0赋给aa
TR0=0;//停止定时器/计数器0 TH0=(65536-50000)/256; TL0=(65536-50000)%6; temp1=_cror_(temp1,1);
temp2=_cror_(temp2,1);//temp1、temp2右移1位 delay(500);
//调用延时函数
四川信息职业技术学院毕业设计说明书(论文)第12页
4.定时器1中断服务程序 void _ET1_() interrupt 3 { }
此段程序定义了一个返回值为空的_ET1_函数,关键字interrupt后面的3表示终端号,即表示定时器1,其中断向量地址为001BH。
TH1=(65536-50000)/256; TL1=(65536-50000)%6; bb++; if(bb!=20) { } else { }
bb=0; TR1=0;
TH1=(65536-50000)/256; TL1=(65536-50000)%6; P1=temp1; P2=temp2; temp1=~temp1; temp2=~temp2; delay(500);
四川信息职业技术学院毕业设计说明书(论文)第13页
第4章 系统调试
单片机硬件和软件调试的工具分别为:protues 和Keil C51调试软件。
4.1 软件调试
单片机软件调试主要是调试本次课程设计的主程序。其调试过程如下: (1)新建一个工程。单击Project菜单,在弹出的下拉菜单中选New Project。 (2)然后选择你要保存的路径,输入工程文件的名字,保存。
(3)新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。然后点击确定。
(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为c语言文件。
(5)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”单击右键选择“Add File To Group ‘Source Group 1’”,选中Test.c文件。
(6)单击“Project”菜单,选中“Built Target”,完成程序的编译,在工程文件夹中找到*.hex文件即可。
4.2 硬件调试
单片机硬件调试是检测在设计电路时,电路中存在的一些缺陷,故硬件调试是必不可少的,其步骤大致如下:
(1)打开软件Protues,将设计好的单片机硬件电路打开。
(2)在确定电路已经连接完成后,双击AT89C51单片机加入*.hex文件。 (3)单击软件最左下方的Play按钮。
若无异常,当按下某一按键时,能完成以下功能时,则表示设计调试通过。 (1)当按下开关KEY1时,彩灯依次一个一个点亮。 (2)当按下开关KEY2时,彩灯每两个间隔点亮。 (3)当按下开关KEY3时,彩灯灯全部闪烁。
(4)当按下开关(顺序)时,以上3种点亮方式依次执行一次。 (5)当按下暂停开关时,保持彩灯当前状态,松开开关时,继续运行。 (6)当按下中断开关时,说明彩灯系统出错了,所有红灯亮,喇叭报警。