![]() |
發布時間: 2018-11-7 07:54
正文摘要:#include<reg52.h> sfr P3M0=0XB2; sfr P3M1=0XB1; sbit P_out=P3^6; unsigned int cnt=0; unsigned char flag1s=0; void main() { //unsigned char sec=0; EA=1; TMOD=0X01; & ... |
程序都正常,按你的晶振,輸出繼電器應該是0.5秒閉合0.5秒斷開(這么快繼電器受不了的,你也沒法用繼電器控制其他設備啊!)。 |
你怎么知道不能進入中斷,我試可以呀。 |
cuihaodianzi 發表于 2018-11-7 12:38 是我自己馬虎 少寫了一段代碼 |
main()程序里,少個 EA= 1的語句。 void main() { TMOD = 0x01; //set timer0 as mode1 (16-bit) TL0 = T1MS; //initial timer0 low byte TH0 = T1MS >> 8; //initial timer0 high byte TR0 = 1; //timer0 start running ET0 = 1; //enable timer0 interrupt EA = 1; //open global interrupt switch count = 0; //initial counter while (1); //loop } |
cuihaodianzi 發表于 2018-11-7 12:38 問題已經 解決了 謝謝你 |
少開了管總中斷的控制位EA=1 |
用這個試一下 #include <reg52.h> sfr P3M0=0XB2; sfr P3M1=0XB1; sfr AUXR = 0x8E; sbit P_out=P3^6; unsigned int cnt=0; unsigned char flag1s=0; void main() { //unsigned char sec=0; EA=1; AUXR &= 0x7F; TMOD &= 0xF0; TMOD |= 0x01; TH0 = 0xB8; TL0 = 0x00; TF0 = 0; TR0 = 1; while(1) { if(flag1s==1) { flag1s=0; P_out=~P_out; //繼電器動作 P0=0; } } } void interrupttime0() interrupt 1 // 中斷函數 { TH0 = 0xB8; TL0 = 0x00; cnt++; if(cnt>=1000) { cnt=0; flag1s=1; } } |