使用c51单片机完成以下控制:通过按键进行模式切换(模式1:led灯亮伴随蜂鸣器响;模式2:led灯亮一秒停一秒,蜂鸣器不响;模式3:输出占空比50%的pwm波,进而控制led灯亮)
#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"
unsigned char KeyNum;
unsigned int i;
unsigned char Counter,Compare;
sbit Buzzer =P1^1;
sbit LED=P2^1;
unsigned char Counter,Compare;
void main()
{
while(1)
{
KeyNum=Key();
if(KeyNum==1)
{
for(i=0;i<100;i++)
{
Buzzer=!Buzzer;
Delay(1);
P2_0=~P2_0;
Delay(2);
}
}
else if(KeyNum==2)
{
while(KeyNum==2)
{
P2_0=~P2_0;
Delay(1000);
}
}
else if(KeyNum==3)
{
Timer0_Init();
Compare=50;
}
}
}
void Timer0_Routine() interrupt 1
{
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值
Counter++;
Counter%=100;
if(Counter<Compare)
{
LED=0;
}
else
{
LED=1;
}
}
模式1做得了;模式2有个问题,只要按下开关,按其他开关就不发挥作用了,就是进入了死循环,出不来了;切换到模式3后还可以按下其它开关,同时启动模式1或2,但是题目需要的是从一个模式切换到另一个模式 |