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