|
回复: 关于中断问题
void interrupt TRANSIT_INTER(void)
{
if(RAIE&&RAIF)
{
IOCA=0x00;
GIE=0;
RAIE=0;
RAIF=0;
INTCON=0;
temp=TMR0; //关闭所有中断,清除所有中断标志
TMR0=0;
PORTC=0xFF;
if(INT_time==0)
{
INT_time++;
TRANSIT.b0=1;
}
else
{
INT_time++;
if((temp>30)&&(temp<50))
{
T_data=T_data&0xFE;
T_data=T_data<<1;
COUNTER++;
}
if((temp>70)&&(temp<90))
{
T_data=T_data|0x01;
T_data=T_data<<1;
COUNTER++;
}
else
INT_time=0;
if(COUNTER==8)
{
eeprom_write(SIZE++,T_data);
COUNTER=0;
T_data=0xAA;
}
}
//if((SIZE==1)&&(T_data!=0xFF)) //判断是否收到同步码0xFF
//TRANSIT.b3=1;
//if((SIZE==2)&&(T_data!=0xFE)) //判断是否收到同步码0xFE
TRANSIT.b3=0;
INTCON=0x80;
if(TRANSIT.b3||SIZE==26)
{
SIZE=0;
INT_time=0;
TRANSIT.b0=0;
INTCON=0x00;
}
}
RAIE=1;
}
以上是中断服务程序 |
|