初学单片机,碰到这样两个程序同时进行的问题不知道该怎么办,网上有说用定时器,尝试一下还是不太对,蜂鸣器响但是有杂音,求大神指点
#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16; \\宏定义
typedef unsigned char u8;
sbit k1 = P3^0; \\独立按键 蜂鸣器
sbit beep = P1^5;
void delay(u16 i) \\延时函数
{
while(i--);
}
void Timer0Init() \\定时器中断条件
{
TMOD |= 0x01;
TH0 = 0xff;
TL0 = 0xf6;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void main()
{
beep = 1; \\赋初值
Timer0Init();
if(k1==0)
{
while(k1==0) \\流水灯
{
P2 = 0xfe;
delay(30000);
while(1)
{
P2 = _cror_(P2,1);
delay(30000);
}
while(k1!=0)
{
P2 = 0xff;
}
}
}
}
void Timer0() interrupt 1
{
static u16 j;
TH0 = 0xff;
TL0 = 0xf6;
j++;
if(j==5 & k1==0)
{
j = 0;
beep = ~beep;
if(k1==1)
{
beep = 1;
}
}
}
|