#include "reg52.h"
#include "intrins.h"
sbit S7 = P3^0;
sbit L1 = P0^0;
unsigned char mode = 0; //0-熄灭 1-10%亮度 2-50%亮度 3-90%亮度
unsigned char count = 0;
unsigned char count_h = 0;
void Delay20ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 1;
j = 234;
k = 113;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void SelectHC573()
{
P2 = (P2 & 0x1f) | 0x80;
}
void Init_timer0()
{
TMOD = 0x01;
TH0 = (65532 - 100) / 256;
TL0 = (65535 - 100) % 256;
ET0 = 1;
EA = 1;
}
void Sevice_timer0() interrupt 1
{
TH0 = (65532 - 100) / 256;
TL0 = (65535 - 100) % 256;
count++;
if(count == count_h)
{
L1 = 0;
}
if(count == 100)
{
L1 = 1;
count = 0;
}
}
void scan_key()
{
if(S7 == 0)
{
Delay20ms();
if(S7 == 0)
{
if(mode == 0)
{
mode = 1;//10%
TR0 = 1;
count_h = 90;
}
else if(mode == 1)
{
mode = 2;//50%
TR0 = 1;
count_h = 50;
}
else if(mode == 2)
{
mode = 3;//90%
TR0 = 1;
count_h = 10;
}
else
{
mode = 0;
L1 = 1;
TR0 = 0;
}
while(S7 == 0);
}
}
}
void main()
{
SelectHC573();
Init_timer0();
while(1)
{
scan_key();
}
}
功能
1、PWM频率信号为100Hz
2、通过调节按键S7,改变L1的亮度,分别为 关闭——>10%---> 50% --->90%进行循环