|
|
- #include "reg51.h"
- sbit KEY1 = P2 ^ 0;//檢測端口接霍爾傳感器輸出端,低電平有效
- sbit KEY2 = P2 ^ 1;//輸出高電平,啟動(dòng)繼電器,斷開電源,或者接步進(jìn)電機(jī)控制器的 停止端
- void InitTimer0(){ //晶振頻率:12Mhz
- TMOD = 0x01;
- TH0 = 0xB1;
- TL0 = 0xE0;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- unsigned char time = 0; //霍爾傳感器 高電平每20毫秒加1 (加滿則停止計(jì)數(shù),防止溢出) 低電平清0
- void Timer0Interrupt() interrupt 1{ //20ms 定時(shí)器0中斷
- TH0 = 0xB1;
- TL0 = 0xE0;
- if (KEY1) {
- if (time != 0xFF) time++;
- KEY2 = !(time >= 150); //150個(gè)20毫秒
- } else {
- time = 0;
- KEY2 = 1;
- }
- }
- void main(){
- KEY1 = 1;//通電默認(rèn)高電平
- KEY2 = 0;//通電默認(rèn)低電平
- InitTimer0();
- while(1);
- }
復(fù)制代碼 |
|