📄 timer.i
字号:
if(b_set_g20_sp == 1)
{
if(timer7.bUsed == 0)
{
b_set_g20_sp = 0;
return 1;
}
else
return 0;
}
return 0;
}
unsigned char timer_get_usart0_timeout()
{
#asm("wdr");
if(b_set_usart0 == 1)
{
if(timer8.bUsed == 0)
{
b_set_usart0 = 0;
return 1;
}
else
return 0;
}
return 0;
}
void timer0_init()
{
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 115.200 kHz
// Mode: CTC top=OCR0
// OC0 output: Disconnected
ASSR=0x00;
TCCR0=0x0C;
TCNT0=0x00;
OCR0=0x73;
}
void timer2_init()
{
/*
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 7372.800 kHz
// Mode: CTC top=OCR2
// OC2 output: Disconnected
TCCR2=0x09;
TCNT2=0x00;
OCR2=0xD0;
*/
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
}
void timer1_init()
{
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 115.200 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// OC1C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x03; //0x04
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
(*(unsigned char *) 0x79)=0x00;
(*(unsigned char *) 0x78)=0x00;
}
void timer3_initY()
{
// Timer/Counter 3 initialization
// Clock source: System Clock
// Clock value: 7372.800 kHz
// Mode: Ph. & fr. cor. PWM top=ICR3
// Noise Canceler: Off
// Input Capture on Falling Edge
// OC3A output: Discon.
// OC3B output: Discon.
// OC3C output: Non-Inv.
// Timer 3 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
(*(unsigned char *) 0x8b)=0x08;
(*(unsigned char *) 0x8a)=0x11;
(*(unsigned char *) 0x89)=0x00;
(*(unsigned char *) 0x88)=0x00;
(*(unsigned char *) 0x81)=0x00;
(*(unsigned char *) 0x80)=0x61;
(*(unsigned char *) 0x87)=0x00;
(*(unsigned char *) 0x86)=0x00;
(*(unsigned char *) 0x85)=0x00;
(*(unsigned char *) 0x84)=0x00;
(*(unsigned char *) 0x83)=0x00;
(*(unsigned char *) 0x82)=0x00; //0x30 //0x00
}
void timer3_initN()
{
// Timer/Counter 3 initialization
// Clock source: System Clock
// Clock value: Timer 3 Stopped
// Mode: Normal top=FFFFh
// Noise Canceler: Off
// Input Capture on Falling Edge
// OC3A output: Discon.
// OC3B output: Discon.
// OC3C output: Discon.
// Timer 3 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
(*(unsigned char *) 0x8b)=0x00;
(*(unsigned char *) 0x8a)=0x00;
(*(unsigned char *) 0x89)=0x00;
(*(unsigned char *) 0x88)=0x00;
(*(unsigned char *) 0x81)=0x00;
(*(unsigned char *) 0x80)=0x00;
(*(unsigned char *) 0x87)=0x00;
(*(unsigned char *) 0x86)=0x00;
(*(unsigned char *) 0x85)=0x00;
(*(unsigned char *) 0x84)=0x00;
(*(unsigned char *) 0x83)=0x00;
(*(unsigned char *) 0x82)=0x00;
}
void timer_init()
{
timer0_init();
timer1_init();
timer2_init();
timer3_initN();
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
(*(unsigned char *) 0x7d)=0x00;
timer1.bUsed = 0;
timer2.bUsed = 0;
timer3.bUsed = 0;
timer4.bUsed = 0;
timer5.bUsed = 0;
timer6.bUsed = 0;
timer7.bUsed = 0;
timer8.bUsed = 0;
}
TIMERTICK * timer_settimer(DWORD ltimes)
{
#asm("wdr");
if(timer1.bUsed != 1)
{
timer1.bUsed = 1;
timer1.ltimes = ltimes;
return &timer1;
}
if(timer2.bUsed != 1)
{
timer2.bUsed = 1;
timer2.ltimes = ltimes;
return &timer2;
}
if(timer3.bUsed != 1)
{
timer3.bUsed = 1;
timer3.ltimes = ltimes;
return &timer3;
}
if(timer4.bUsed != 1)
{
timer4.bUsed = 1;
timer4.ltimes = ltimes;
return &timer4;
}
return 0;
}
unsigned char timer_checktimeout(TIMERTICK * ptimer)
{
#asm("wdr");
if(ptimer == 0)
return 1;
if(ptimer->bUsed != 1)
return 1;
if(ptimer->ltimes <=0)
return 1;
else
return 0;
}
void timer_delay(DWORD ltimes)
{
timer5.bUsed = 1;
timer5.ltimes = ltimes;
#asm("wdr");
while(timer_checktimeout(&timer5) != 1);
#asm("wdr");
}
// Timer 2 output compare interrupt service routine
interrupt [10] void timer2_comp_isr(void)
{
// Place your code here
// call_time++;
}
// Timer 0 output compare interrupt service routine
interrupt [16] void timer0_comp_isr(void)
{
/* uchar tempsec = 0;
uchar tempmin = 0;
uchar temphour = 0;
uchar tempday = 0;
uchar tempmonth = 0;
uchar tempyear = 0; */
if(timer1.bUsed == 1){
if(timer1.ltimes >0)
timer1.ltimes --;
else
timer1.bUsed = 0;}
if(timer2.bUsed == 1){
if(timer2.ltimes >0)
timer2.ltimes --;
else
timer2.bUsed = 0;}
if(timer3.bUsed == 1){
if(timer3.ltimes >0)
timer3.ltimes --;
else
timer3.bUsed = 0;}
if(timer4.bUsed == 1){
if(timer4.ltimes >0)
timer4.ltimes --;
else
timer4.bUsed = 0;}
if(timer5.bUsed == 1){
if(timer5.ltimes >0)
timer5.ltimes --;
else
timer5.bUsed = 0;}
if(timer6.bUsed == 1){
if(timer6.ltimes > 0)
timer6.ltimes --;
else
timer6.bUsed = 0;}
if(timer7.bUsed == 1){
if(timer7.ltimes > 0)
timer7.ltimes --;
else
timer7.bUsed = 0;}
if(timer8.bUsed == 1){
if(timer8.ltimes > 0)
timer8.ltimes --;
else
timer8.bUsed = 0;}
if (call_time++ >= CALL_TIMER) //60000
{
call_time = 0;
all_sending = 1;
// WORK_LED = !WORK_LED;
/* if (free_time++ >= 10) //120
{
free_time = 0;
reset_cc2420 = TRUE;
}*/
}
/*
if (free_time++ > 100) //3000
{
free_time = 0;
if(system_initial_flag != TRUE)
return;
if(rtc_set_flag == TRUE)
return;
v_Get1302(naaa);
tempsec = CLK_SEC;
tempmin = CLK_MIN;
temphour = CLK_HOUR;
tempday = CLK_DAY;
tempmonth = CLK_MONTH;
tempyear = CLK_YEAR;
CLK_SEC = bcd2hex(naaa[0]);
CLK_MIN = bcd2hex(naaa[1]);
CLK_HOUR = bcd2hex(naaa[2]);
CLK_DAY = bcd2hex(naaa[3]);
CLK_MONTH = bcd2hex(naaa[4]);
CLK_YEAR = bcd2hex(naaa[6]);
}*/
}
/* bcd to hex */
unsigned int bcd2hex(BYTE bdata)
{
unsigned int tmp;
// tmp = (((unsigned int)(bdata >> 4) * 10) + (unsigned int)(bdata & 0x0f));
tmp = (unsigned int)bdata / 16 * 10 + (unsigned int)bdata % 16;
return tmp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -