|
楼主 |
发表于 2007-8-14 15:25:31
|
显示全部楼层
中断子程序如下,其中变量error和ratio2均为float型,其他为整型。CHGBIT为改变某引脚值(用于产生方波)的宏定义。
#pragma interrupt_handler timer0_ovf_isr:10 //17 for atmega128
void timer0_ovf_isr(void)
{
TCNT0 = 0xa4;//reload counter value
//7.3728M (A4,0x02)for 10Khz (D2,0x02)for 20Khz
//8M (9C,0x02)for 10Khz (CE,0x02)for 20Khz
if(lianji==1)
{
if(m1flag==0)
{
error+=ratio2;
error_int=(int)error;
error-=error_int;
}
if(m1flag < (ratio1+ratio1+error_int+error_int))
{
m1flag++;
CHGBIT(PORTA,0);
m1_total++;
}
}
else CHGBIT(PORTA,0);} |
|