51单片机蜂鸣器程序

用单片机编程控制8个led小灯依次向左变亮之后,全部变灭,再依次向右变亮,之后再使8个LED小灯呼吸变灭同时蜂鸣器进行报警

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar pwm,ctl=5;
sbit fmq=P1^0;
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
pwm++;
if(pwm<=ctl)P0=0xff;
else P0=0x00;
if(pwm==100)
    {
    pwm=0;
    ctl++;
    }
if(ctl==100)flag=1;
}
main()
{
uchar i,led;
TMOD=0x02;
TH0=236;
TL0=236;
ET0=1;
EA=1;
while(1)
    {
    led=0xfe;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led<<1;
        delay(200);
        }
    led=0xff;
    delay(200);
    led=0x7f;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led>>1;
        delay(200);
        }
    TR0=1;
    flag=1;
    while(flag);
    TR0=0;
    }
}

追问

灯也没亮 蜂鸣器也没响

追答哦,对了,蜂鸣器没有加,灯肯定会亮的。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar pwm,ctl=5;
sbit fmq=P1^0;
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
pwm++;
if(pwm<=ctl)P0=0xff;
else P0=0x00;
if(pwm==100)
    {
    pwm=0;
    ctl++;
    }
if(ctl==100)flag=0;
}
main()
{
uchar i,led;
TMOD=0x02;
TH0=236;
TL0=236;
ET0=1;
EA=1;
while(1)
    {
    led=0xfe;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led<<1;
        delay(200);
        }
    led=0xff;
    delay(200);
    led=0x7f;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led>>1;
        delay(200);
        }
    TR0=1;
    flag=1;
    fmq=0;
    while(flag);
    TR0=0;
    fmq=1;
    }
}

你没有提供电路图,这个程序只能按程序定义的IO口才能正常工作,要么你根据你的电路将程序的IO口做下调整。

温馨提示:答案为网友推荐,仅供参考
相似回答