//------------------------------------------------
用M64,T3,晶体7.3728 ,GCC 20040214
1
void timer1_init(void)
{
TCCR3B = 0x00; //stop
TCNT3H = 0x00; //setup
TCNT3L = 0x00;
ICR3H = 0x00;
ICR3L = 0x08;
TCCR3A = 0x00;
/*一体化接收头的DATA引脚接到ATmega64的PE7(ICP3)引脚,采用上升沿捕捉的方法解码*/
/*晶振为7.3728M,8分频*/
TCCR1B = 0xC2; //start Timer @@@@@@@@@@@@@@@@@@@@@@@@@@@改动
}
2
SING(XXXXXXXXXXXXXXX)
{
uint value;
value=ICR3L;
value|=(uint)(ICR3H << 8);
TCNT3H = 0x00;
TCNT3L = 0x00;
times++;
if(times>18)&&(times<35){
//从第19个上升沿开始保存,直到第34个,短按时共有36个上升沿
arr[index]=value;
index++;
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@改动
else if(times>35)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@改动
//else if(times>=35) //用此语句时第二个键值的第一位被上一键值的第36个脉冲复用,
{
//第35个上升沿到来时,解码完毕
times=0;
index=0;
OK_flag=1;
}
}