程序都正常,按你的晶振,输出继电器应该是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; } } |