本帖最后由 nickychung 于 2014-1-17 22:34 编辑
给它发送1,可以返回1,但是蜂鸣器却响了一会。 是不是我的无限大循环函数出现了问题
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit Beep = P1^5 ;
uint z,flag,a;
uchar b;
void delay(uint i);
void init();
void wuyuanbeep(uint z);
void main()
{
init();
while(1)
{
if(flag==1)
{
EA=0;
flag=0;
SBUF=a; //返回1.
switch(a) //蜂鸣器先响了一会。是不是无限循环出现了问题。
{
case ‘1’:wuyuanbeep(400);break;
case ‘2’:wuyuanbeep(200);break;
case ‘3’:wuyuanbeep(100);break;
case ‘4’: ;break;
}
while(
ti==0);
TI=0;
EA=1;
}
}
}
void wuyuanbeep(uint z)
{
Beep= 1;
delay(z);
Beep= 0;
delay(z);
}
void ser() interrupt 4
{
if(RI==1)
{
RI=0;
a=SBUF; //给它发送1.
flag=1;
}
}
void init()
{
REN=1;
SM0=0;
SM1=1;
TMOD=0x20;//设置定时器1为工作方式2
PCON=0x80;
TH1=0xf3;
TL1=0xf3;
TR1=1;
EA=1;
ES=1;
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 110; j > 0; j--);
}
我已经申明了一个wuyuanbeep()里面已经有一个起振。发送的1是赋给a的,a的值只决定我的延迟时间。
{:1:}{:1:}
一周热门 更多>