你那种写法不对吧!至少得给出工作模式 我有个试过的,给你看看 #define FOSC 11059200L //#define FOSC 18432000L
#define MACHINE_NUM 12 /*根据需要调整,如:W777E58=4*/ #define TICKS_PER_SEC 20 /* # of clock ticks to obtain 1 second */
void Init_sys_timer(void) { BYTE_WORD Init_value;
Sys_clk_init(); T2CON=0x00; //定时器2使用机器周期作为计数脉冲(Fosc/12) Init_value.word=FOSC/((ulong)TICKS_PER_SEC*MACHINE_NUM); // Init_value.word=38400; TH2=RCAP2H=-Init_value.bytes.high; TL2=RCAP2L=-Init_value.bytes.low;
// ComSendTxt ("TH2Value", &Init_value, 2);
//启动定时器2工作 ET2=1; TR2=1; //开中断总开关 ENTER_CRITICAL(); //TMOD&=0xF0; //使用定时器0,但在中断中需要重新赋初值,因而我更倾向用Timer2 //TMOD|=0x01; // Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM); //TH0=-Init_value.bytes.high; //TL0=-Init_value.bytes.low;
//ET0=1; //TR0=1; }
|