我想用CH552定時器0,配置成8位自動重裝載模式,100us產(chǎn)生一次中斷,然后1s切換LED狀態(tài),但是設(shè)置完LED是4s才切換狀態(tài),不知道是哪里配置錯了呢?
代碼:
sbit?LED?=?P3^4; void?main(void) { ??//設(shè)置時鐘 ??SAFE_MOD?=?0x55;?//進(jìn)入安全模式 ??SAFE_MOD?=?0xAA; ?? ??CLOCK_CFG?&=?~bOSC_EN_XT;??//關(guān)閉外部晶振 ??CLOCK_CFG?|=?bOSC_EN_INT;??//使能內(nèi)部晶振 ??CLOCK_CFG?=?CLOCK_CFG?&?(~MASK_SYS_CK_SEL)?|?0x06;?//24M ?? ??SAFE_MOD?=?0x00;//退出安全模式 ?? ??//LED配置 ??//LED?--?P3.4?--?推挽輸出 ??P3?&=?~(1?<<?0x04);? ??P3_DIR_PU?|=?(1?<<?0x04); ??P3?|=?(1?<<?0x04);//關(guān)閉LED ?? ??//定時器0初始化 ??T2MOD?&=?~bT1_CLK;?//系統(tǒng)時鐘12分頻 ??TMOD?=?TMOD?&?0xF0?|?bT0_M1;??//模式2 ??TL0?=?0x38;??//賦初值?100us ??TH0?=?0x38; ??ET0?=?1; ??TR0?=?1; ??EA?=?1; ??while(1); }?? //定時器中斷 void?Time0Interrupt(void)?interrupt?INT_NO_TMR0?using?1 { ??static?uint16_t??cnt?=?0; ??cnt++; ??if(cnt?>=?10000) ??{ ????cnt?=?0; ????LED?^=?1; ??} }
之后我用串口線接到LED引腳,引腳每次從高電平到低電平跳變時,串口會收到0x00
前后收到0x00的時間基本都是8s,也就是LED閃爍的時間間隔為4s,TH0和TL0的初值手算和工具算出來都是這個值。