2019-03-24 20:20发布
英雄 发表于 2016-5-11 09:37 时间片轮转?能不能举个例子。
石玉 发表于 2016-5-9 16:23 用定时器,时间片轮转
石玉 发表于 2016-5-11 09:41 用定时器定时,时间到了就运行一个命令
英雄 发表于 2016-5-11 12:43 void timer0_init(void) { TCCR0=0X0D; TCNT0=0X00; OCR0=78; TIMSK|=0X02; TIFR|= ...
最多设置5个标签!
用定时器定时,时间到了就运行一个命令
例如我要分别运行三个端口,以一个定点开始启动,这三个端口开始动作的时间间隔可以调节。三个端口各运行8s
void timer0_init(void)
{
TCCR0=0X0D;
TCNT0=0X00;
OCR0=78;
TIMSK|=0X02;
TIFR|=0X02;
}
//******************************
//interrupt_init
//Mega16中断初始化,使能总中断
//******************************
void interrupt_init(void)
{
SREG=0X80;
}
//****************************
void timer1_init(void)
{
TCCR1A=0X00;
TCCR1B=0X0D;
TCNT1=0X00;
OCR1A=7813;
TIMSK|=0X10;
TIFR|=0X10;
}
// 主函数
void main(void)
{
port_init();
Lcd_inital();
int_count=0;
timer0_init();
interrupt_init();
while(1)
{
}
}
#pragma interrupt_handler timer0_interrupt:20
void timer0_interrupt(void)
{
TIFR|=0X02;
TCNT0=0X00;
PORTB&=~(1<<2);
int_count++;
if(int_count==1)
{
LcdWriteString(5,2,tab5);
PORTB&=~(1<<3);
}
if(int_count==2)
{
LcdWriteString(5,2,tab5);
PORTD&=~(1<<0);
}
if(int_count==5)
{
LcdWriteString(5,1,tab5);
PORTB|=(1<<3);
}
if(int_count==6)
{
LcdWriteString(5,2,tab5);
PORTD|=(1<<0);
}
if(int_count>=6)
{
int_count=0;
}
}
麻烦看下我的程序,为什么B3口和D0口的动作时间不是相差10ms,时间中断不是10ms触发一次么。
大于10MS还是小于10MS?
一周热门 更多>