通过中断T0和T1实现蜂鸣和LED灯开和关

#include<reg52.h>
#include<intrins.h>
sbit fmq=P3^6;  
sbit P34=P3^4;  
sbit P35=P3^5;
unsigned int t;
 void delay500us()
{
unsigned char j;
for(j=0;j<57;j++)//500us基准延时
{
;
}


}




void beep()//产生1000HZ的频率声音
{
for(t=0;t<1000;t++){
fmq=0;  
delay500us(); 
      fmq=1;  
delay500us();
}
}




   
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{
for(j=0;j<115;j++)//1ms基准延时
{
;
}
}


}




void main()
{
  EA=1;  //开总中断
  ET0=1; //允许定时器T0的中断
  TR0=1;        //启动T0   
  ET1=1; //允许定时器T1的中断
  TR1=1;        //启动T1
  while(1);
}


void Time0(void) interrupt 1//“interrupt”声明函数为中断服务函数 T0
 {
if(P34==0){
  delay1ms(20);
  if(P34==0){
    P0=0x00;
  beep(); //
  }
   
}
 }


 
void Time1(void) interrupt 3//“interrupt”声明函数为中断服务函数  T1
 {
if(P35==0){
  delay1ms(20);
  if(P35==0){
    P0=0xff;
  beep(); //
  }
   
}
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值