一、实验题目:
4.1按键声光报警实验
二、实验要求:
利用外部中断,低电平为触发信号,在中断服务程序中计数器加1,第几次按下,发光二极管闪烁和蜂鸣器响相应的次数。当计数到10时,再次按键将重新从1开始计。
三、实验源程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit bell=P3^1; //用p3.1口控制bell
sbit led=P3^0; //用P3^0来控制led
sbit key0=P3^2; //控制报警的键
uchar count;
uchar i;
/*****************************************************
1ms延时程序
*****************************************************/
void delay(uchar count)
{uint x,y;
for(x=count;x>0;x--)
for(y=110;y>0;y--);
}
/*****************************************************
铃响,灯亮子程序
*****************************************************/
void show(uchar count)
{i=count;
for(;i!=0;i--) //函数循环i次
{led=0;bell=0; //灯亮,铃响
delay(500); //延时0.5s
led=1;bell=1; //灯灭,铃停
delay(500); //延时0.5s
}
}
/*****************************************************
0中断子程序
*****************************************************/
void s_timer0() interrupt 0 using 0 //设置外部中断0
{EA=0;
if(count!=10)
count=count+1; //小于10,每次触发计数加一
show(count);
delay(50);
if(count==10) //若count为十则结束
count=0;
EA=1;
}
/*****************************************************
主程序
*****************************************************/
void main()
{EA=1; //打开总中断允许开关
EX0=1; //开外中断0允许开关
IT0=0; //设置外中断0为电平触发方式
while(1);
} //循环执行,等待
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容