使用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,但是題目需要的是從一個模式切換到另一個模式 |