baiyun1234 发表于 2019-10-11 13:11 谢谢,非常感谢 |
baiyun1234 发表于 2019-10-11 13:59 谢谢了 |
buzzerflag=1;// 后面是g,不是h.写错了。![]() 上面的两个地方 |
在你的main之前加上一句这个: void delayms(uint); |
//注释:你这个 “BUZCOM=Bin(00001001); //打开”我不知道哪一位是控制buzzer的,你自己改,我下面的是 根据你的copy的。 // 我自己写的延时,晶振11.0592 ,这个延时是1ms,你的晶振是多少,你自己定. //你的代码顶部加一个: #define uint unsigned int(如果有就算了) void beep_on() { unsigned char i; unsigned char time_cnt; unsigned char beep_cnt,p; bit buzzerflag; if(temperature>29) buzzerflah=1; while(buzzerflag) { for(i=3;i>0;i--) { delayms(100); BUZCOM=Bin(00001001); //打开 delayms(100); BUZCON=Bin(00001000); //close } delayms(500); if(temperature<=29) { BUZCON=Bin(00001000) //close delayms(20); buzzerflah=0; } } } //delayms void delayms(uint time) { uint i,j; for( i=0;i<time;i++) for(j=0;j<112;j++); } |
for循环写成死循环,不然响几次后就不响了 |
我加了 IF延时 也没有作用 |