fmq.c

来自「MCS51外部中断1和定时器T0的应用」· C语言 代码 · 共 58 行

C
58
字号
#include "reg52.h"
#include "intrins.h"
unsigned char f=0;
sbit  beep=P3^4;
sbit  key=P3^2;
unsigned int timer=0;
void delay(unsigned int dly)
   {
    while(dly--)
         {
          _nop_();
          _nop_();
          _nop_();
          _nop_();
         }
  }

void int0(void) interrupt 2//外部1中断处理程序
{
  EX1=1; //关外部中断
  TR0=0;
  delay(0x1ff);//延时去抖动
  while(key==0);
  f+=1;//如果有按键按下,定时初值自动加1
  TH0=f;
  TL0=f;//TL0
  TR0=1;
  EX1=1;
}
void timer0() interrupt 1
{   ET0=0;//开总中断
	timer++; 
    ET0=1;//开总中断
}
void initport(void) //初始化外部中断1
{
IT1=1;//下降沿触发
EA=1;//开总中断
EX1=1;//开外部中断1
}
void main(void)
{   
    TMOD=0X02;//定时器0,工作方式2自动重装初值
	initport();//初始化外部中断1
	TH0=f;
	TL0=f;//TL0 	
	TR0=1; //启动定时器0
    EA=1;//开总中断
	ET0=1;//开定时器0中断
	
while(1)
    {     if(timer==1)
            {
			 timer=0;
		     beep=~beep; //如果定时时间到,将P3^4端口取反
			}
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?