对于单片机定时器的一点思考
首先要计算出计数器加1的时间
比如说1Mhz,每秒钟运行10的6次方
加一的时间为10的-6次方即1微秒,
其次是定时器计数多少次发生中断,比如说5000次
那发生一次中断时间为5毫秒
中断频率为1/0.005=200hz
#include<reg52.h>
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
void init(){
TMOD=TMOD|0x01;//定时器工作方式寄存器 使用工作方式1工作16位
TH0=0xfc;
TL0=0x18;
ET0=1;//中断允许控制寄存器IE,允许T0中断
EA=1;//中断总开关
TR0=1;//中断请求标志寄存器TCON ,T0控制位
}
void Int0() interrupt 1{
static int i0;
static int i1;
static int i2;
static int i3;
TH0=0xfc;
TL0=0x18;
i0++;
i1++;
i2++;
i3++;
if(i0==1000){
i0=0;
led0=~led0;
}
if(i1==500){
i1=0;
led1=~led1;
}
if(i2==250){
i2=0;
led2=~led2;
}
if(i3==125){
i3=0;
led3=~led3;
}
}
void main(){
init();
while(1);
}