标题:
为什么这个单片机蜂鸣器才响十秒呢?我哪里出错了呢?求帮忙
[打印本页]
作者:
2523472815
时间:
2020-3-19 11:30
标题:
为什么这个单片机蜂鸣器才响十秒呢?我哪里出错了呢?求帮忙
#include "reg52.h"
#include"intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit beep=P1^5;
u8 flag=0;
void delay(u16 i)
{
while(i--);
}
void timer1()
{
TMOD|=0x10;
TH0=0XFC;
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
timer1();
while(1)
{
if(flag==0)
{
beep=~beep;
delay(10);
}
}
}
void timer2() interrupt 1
{
static u16 a;
TH0=0XFC;
TL0=0X18;
a++;
if(a==60000)
{
flag=1;
a=0;
}
}
作者:
飞翔的草尼玛
时间:
2020-3-19 16:36
试试改成a>=60000
作者:
aide51
时间:
2020-3-20 09:04
这个要改延时循环吧
作者:
王天星
时间:
2020-3-20 11:12
flag=1;使用后没有置0
作者:
cjjdemon
时间:
2020-3-20 13:55
static u16 a; 把中断里声明静态变量的这句去掉,直接在前面定义全局变量。
这个程序本意就是蜂鸣器间歇地响一段时间就停的吧?本意是响50s左右?现在只响10s?
作者:
huangzongwu
时间:
2020-3-20 13:57
if(a==60000)
{
flag=1;
a=0;
}
else
{
flag=0;
}
作者:
190987824
时间:
2020-3-20 14:16
flag= ! flag;
作者:
2523472815
时间:
2020-3-23 12:12
飞翔的草尼玛 发表于 2020-3-19 16:36
试试改成a>=60000
成功了,多谢多谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1