山东大学单片机硬件实验–4.1 按键声光报警实验

一、实验题目:

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
喜欢就支持以下吧
点赞4赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容