|
我在单片机中编程如下,SendKey_Protocl();是一个费时的操作,超过30ms,小于600ms,我得不到想要的结果,请问:--在中断处理服务程序中,如果费时的函数调用没有处理完是否在后台处理?还是被舍弃?。。。请问高手应该怎么处理?
//TIMER0 initialize - prescale:1024
// desired value: 30mSec
// actual value: 29.861mSec (0.5%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x29; //set count
TCCR0 = 0x05; //start timer
TIMSK |= 0x01; // Enable Timer 0
}
volatile int i; //for a coeffiecent to time Timer0 counter;
SIGNAL(SIG_OVERFLOW0)
{
TCNT0 = 0x29; //reload timer initialization value
++i;
if(i>20) // 此处使费时中断处理实际上600ms响应一次
{
SIG_PORT ^= SIG;
SendKey_Protocl();
i = 0;
}
}
|
|