51单片机60秒倒计时_51单片机倒计时15秒后蜂鸣器为什么不响?

原问题:51单片机倒计时15秒后蜂鸣器为什么不响?
分类:编程开发 > 最后更新时间:【2016-12-12 02:02:03】
问题补充:

#include"reg52.h" typedef unsigned int u16; typedef unsigned char u8;

sbit beep=P1^5;

u16 b=1000,c=15; u8 a[2]; u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(u16 i) { while(i--); }

void s() { u8 j; for(j=0;j<=7;j++) { switch(j) { case 0:P2=0X00;break; case 1:P2=0X04;break; case(2): P2=0X08; break;//显示第2位 case(3): P2=0X0c; break;//显示第3位 case(4): P2=0X10; break;//显示第4位 case(5): P2=0X14; break;//显示第5位 case(6): P2=0X18; break;//显示第6位 case(7): P2=0X1c; break; } } P0=a[j]; delay(100); P0=0X00;

}

void csh() { TMOD|=0X01; TH0=0Xfc; TL0=0X18; ET0=1; EA=1; TR0=1; }

void szh() { a[0]=smgduan[c%10]; a[1]=smgduan[c/10];

}

void main() { csh(); while(1) { szh(); s(); if(c==12) { EA=0;

beep=~beep; delay(100); } } }

void zd()interrupt 1 { TH0=0Xfc; TL0=0X18; b--; if(b==0) { b=1000; c--;

} }

补充:不是蜂鸣器,是数码管显示不正常!

最佳答案

虽然程序有部分隐患,但不响大概只是你延时太短了,可以改为
beep=~beep;
delay(50000);
delay(50000);
delay(50000);

最佳答案由网友  海盗晕船  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
13

分享到:

其他回答

暂无其它回答!

    推荐