#include "Time.h" /*************初始化定时器0由 stc-isp v6.86L定时器计算器生成******************/ #if(MainFre_5M == D_sys_MainFre) #elif(MainFre_27M == D_sys_MainFre) #elif(MainFre_22M == D_sys_MainFre) void L0_timer0_Init(void) //25毫秒@22.1184MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x00; //设置定时初值 TH0 = 0x4C; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //add by cc } /******************************************** void L0_timer0_Init(void) //10毫秒@22.1184MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x00; //设置定时初值 TH0 = 0xB8; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //add by cc } void L0_timer0_Init_32k(void) //4fen@32kHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 #if 0 TL0 = 0x00; //设置定时初值 TH0 = 0xB8; //设置定时初值/// 4m20s 71 #else TL0 = 0x00; //设置定时初值 TH0 = 0xcc; //设置定时初值// ff 4s #endif TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //add by cc BITN_0(DR_who_wakeup, DRB_who_wakeup_timer0); /// 标志中断类型: 定时器 } ****************************************************/ #else ///MainFre_11M void L0_timer0_Init(void) //10毫秒@11.0592MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x00; //设置定时初值 TH0 = 0xDC; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //add by cc } /******************************************** void L0_timer0_Init(void) //25毫秒@11.0592MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x00; //设置定时初值 TH0 = 0xA6; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; //add by cc } ****************************************************/ #endif//D_sys_MainFre) //10---87 10s /********************** Timer0中断函数************************/ /// 和 L0_timer0_Init 关联,需要配置 bsp_config.h中的 D_sys_MainFre /// 默认10ms 作为TTSS系统的定时引擎 void timer0_isrHanddle (void) D_SERVE_TIMER0 {// NOP(); NOP(); NOP(); TF0 = 0; #if 0 /// 65535*65535 /3600/24/365=139nian/s=1.39nian/10ms ///相当于1.39年后t_10ms 溢出,对于电池供电的系统而言 完全可以满足 // 4,294,836,225 = 65535*65535 ;3600*24*60*60 = 31,536,000秒/年 s_nos_tick.t_10ms ++;//D_led_D1_REV(); 20160522 验证 #else L1_tick_tick(); ///系统中的1sflag 和以10ms为颗粒的延时使用 为tdelay服务 #endif /// BITN_1(DR_who_wakeup, DRB_who_wakeup_timer0); NOP(); NOP(); NOP(); } #if(MainFre_5M == D_sys_MainFre) #elif(MainFre_27M == D_sys_MainFre) #elif(MainFre_22M == D_sys_MainFre) /****************************** void L0_Timer1_Init(void) //35毫秒@22.1184MHz {///自动重载 AUXR &= 0xFB; //定时器时钟12T模式 T2L = 0x00; //设置定时初值 T2H = 0x04; //设置定时初值 AUXR |= 0x10; //定时器2开始计时 BITN_1(IE2, ET2);// IE2 = ET2; //使能定时器中断 } **********************************/ #else ///MainFre_11M void L0_timer1_Init_7ms(void) //7毫秒@11.0592MHz { AUXR &= 0xBF; //定时器时钟12T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0xCD; //设置定时初值 TH1 = 0xE6; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_Init_5ms(void) //5毫秒@11.0592MHz {//0x7F示波器测试大约40ms,led闪烁 肉眼可见 AUXR &= 0xBF; //定时器时钟12T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x00; //设置定时初值 TH1 = 0xEE; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_Init_1ms(void) //1毫秒@11.0592MHz { AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0xCD; //设置定时初值 TH1 = 0xD4; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_Init(void) //600微秒@11.0592MHz { AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x14; //设置定时初值 TH1 = 0xE6; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } //0x7F示波器测试大约40ms,led闪烁 肉眼可见 void L0_timer1_reset(void) { TR1 = 0; TL1 = 0x14; //设置定时初值 TH1 = 0xE6; //设置定时初值 TR1 = 1; TF1 = 0; } #endif//D_sys_MainFre) void L0_timer1_start(U16 v) //600微秒@11.0592MHz { AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x14; //设置定时初值 TH1 = 0xE6; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_stop(void) { TR1 = 0; TF1 = 0; } /******************************END*********************************/