STC8H的比較器比PWM好懂多了;
/*********比較器初始化函數(shù)****************/ Void CMPint(Void) { CMPCR2 = OX00;//清零 CMPCR2 &=0xBF; //1011 1111, 開啟0.1us濾波 CMPCR2 |= 0x3F;//0001 1111, 比較器結(jié)果經(jīng)過63個(gè)去抖時(shí)鐘后輸出 CMPCR1 = 0x00; //清零 CMPCR1 |= 0x10; //0001 0000,開啟比較器下降沿中斷(根據(jù)需要修改) CMPCR1 &= 0XF7; //1111 0111,P3.7為CMP+輸入腳 CMPCR1 &= 0xFB; //1111 1011,內(nèi)部1.19V為CMP-輸入腳 CMPCR1 &= 0xFD; //1111 1101,禁止比較器輸出(根據(jù)需要是否輸出) CMPCR1 |= 0x80; //開啟比較器模塊 } 此函數(shù)在main主函數(shù)中作初始化函數(shù),去抖可根據(jù)自己需要修改。 需要執(zhí)行的任務(wù)放在比較器中斷函數(shù)內(nèi) /******比較器中斷函數(shù),級別在初始化中設(shè)置為最高級3*********/ void CMP_Isr() interrupt 21 { CMPCR1 &= 0xBF;//1011 1111,使CMPIF=0,清中斷標(biāo)志 想要執(zhí)行的任務(wù);//要簡潔明了,不要占用過多步驟,如多可執(zhí)行一個(gè)標(biāo)志位,由標(biāo)志位觸發(fā)執(zhí)行相關(guān)復(fù)雜任務(wù)。 }
|