请教一简单单片机C语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/27 02:23:23
单片机用89S52 开机检测LED(P0.0,0.1,0.2,P0.3)蜂鸣器(P1.0):
流水灯闪一次和蜂鸣器发出两种高低频率声音一下

然后待机,待机时P0.0一直亮着
当P2.2收到高电平,P0。1点亮;
当P2。3收到高电平,延时2秒,然后P0。2变亮并且驱动蜂鸣器发出低频声音;当P2。4收到高电平,延时2秒,然后P0。3变亮并且驱动蜂鸣器发出高频声音。

请各位大虾救救小弟

#include<reg52.h>
sbit P00=P0^0;//控制LED0
sbit P01=P0^1;//控制LED1
sbit P02=P0^2;//控制LED2
sbit P03=P0^3;//控制LED3
sbit P10=P1^0;//控制蜂鸣器
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;

unsigned char count1=0,count2=0;//计数变量
void main()
{
TMOD = 0x01; //设定时器0为模式1,16位模式
TH0=0x4c;
TL0=0x00; //设定时值为10ms,此时晶振频率是11.0592MHZ
//若晶振频率是12MHZ,则初值应为 TH0=0x3c; TL0=0xb0;

ET0 = 1; //定时器0中断打开
EA = 1; //允许CPU中断
TR0 = 1;//启动定时器0
P22=0;
P23=0;
P24=0;
//假设低电平使LED点亮
P00=0;
P01=0;
P02=0;
P03=0;
while(count1<100) //蜂鸣器发出高频声音,时间是5秒
{
if(count2==0) P10=1;
else if(count2==1) P10=0;
else count2=0;
}
count1=0;
while(count1<100) //蜂鸣器发出低频声音,时间是5秒
{
if(count2<2) P10=1;
else if(count2>=2 && count2<4) P10=0;
else count2=0;
}
count1=0;