#include <reg51.h> unsigned char ms50,xiaoshi,fenzhong,xianmiao,beeptemp; unsigned long miao; sbit beep = P1^0;
void init(void) //初始化函数,就是开机首先要做的事情,init是自己起的名字 { TMOD=0x11; PT1=1; TH0=0xB1; TL0=0xE0; TH1=0x3C; TL1=0xB0; TR1=1; TR0=1; IE=0x8A; } //这段程序启动了芯片中的两个定时器
void timer0 (void) interrupt 1 using 1 //定时器中断程序,定时时间到,自动运行此程序 { TH0=(65536-5000)/256; //这两行的数值代表每5000us运行一次此程序 TL0=(65536-5000)%256; //置定时值,每次时间到都要重新置定时值 }
void timer1 (void) interrupt 3 using 2 //定时器中断程序 { TH1=(65536-49990)/256; //这两行的数值代表每5000us运行一次此程序 TL1=(65536-49990)%256; //置定时值,每次时间到都要重新置定时值 ms50=ms50+1; if(ms50>=20) { miao++; //辅助计时变量+1 ms50=0; } }
void alarm(void) { beeptemp=1; if(miao>=10&&miao<=12) { beeptemp=0; } if(miao>=30&&miao<=35) { beeptemp=0; } if(miao>=42&&miao<=50) { beeptemp=0; } if(miao>=80&&miao<=120) { beeptemp=0; } beep=beeptemp; }
void main(void) { init(); while(1) { xiaoshi=miao/3600; fenzhong=miao%3600/60; xianmiao=miao%60; alarm(); } }
|