中断频率的思考

对于单片机定时器的一点思考
首先要计算出计数器加1的时间
比如说1Mhz,每秒钟运行10的6次方
加一的时间为10的-6次方即1微秒,
其次是定时器计数多少次发生中断,比如说5000次
那发生一次中断时间为5毫秒
中断频率为1/0.005=200hz

#include
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);
}

你可能感兴趣的:(Linux)