中断定时器点灯代码 #include <stc8h.h> #include "intrins.h"
void Delay(unsigned long x); void Timer1_Init(void); void INT0_Init(void);
void main(void) { /*准双向口模式*/ P2M1=0X00; P2M0=0X00; EA = 1; //总中断允许 /*定时器初始化*/ Timer1_Init(); /**中断初始化*/ INT0_Init(); while(1) { P22=0; Delay(1000); P22=1; Delay(1000); } }
/***************************************************************/ void Delay(unsigned long x) //@11.0592MHz { unsigned char i, j; while(x--) { i = 15; j = 90; do { while (--j); } while (--i); } }
void Timer1_Init(void) //10毫秒@11.0592MHz { AUXR &= 0xBF; //定时器时钟12T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x00; //设置定时初始值 TH1 = 0xDC; //设置定时初始值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; }
void Timer1_Rountine(void) interrupt 3 { static unsigned int x=0; x++; if(x==50) { P20 = !P20; x=0; }
}
void INT0_Isr() interrupt 0 { P27 = !P27; }
void INT0_Init(void) { IT0 = 1; //使能INT0下降沿中断 EX0 = 1; //使能INT0中断 }
|