这个程序,写到可以控制LED的光量
用了定时器 0 ,1 来做到 pwn控制
現在只能做到一個脚位 輸出 pwm
但我想控制多个LED 在不同pin位
现在想到解决方法是转 脚位如 按了A制 pwm输出位是P1^0 按了B制 pwm输出位是P1^1
不知这个方法可行吗?
#include <reg52.h>
sbit LED=P1^0; <----如果可行, 又可以如何改写
sbit k1=P2^3;
sbit k2=P2^0;
unsigned char PWM =0x7f;
char code reserve[3] _at_ 0x3b;
bit light =0;
void delay(unsigned int ms)
{
unsigned char i;
while(ms--)
{
for(i=0;i<114;i++);
}
}
void main()
{
LED= 0xff ;
TMOD=0x21;
TH0=0xB1;
TL0=0xE0;
TH1=PWM;
TL1=0;
EA=1;
ET0=1;
ET1=1;
TR0=1 ;
light=0;
while(1)
{
if(k1==0) {
do{
if(PWM!=0xff&&light==0){
PWM++ ;delay(45);
}
else light=1 ;
if(PWM!=0x02&&light==1){
PWM-- ;delay(45);
}
else light=0;
}while(k1==0);
light=0;
}
}
}
void timer0() interrupt 1
{
TR1=0;
TH0=0xfe;
TL0=0xfe;
TH1=PWM;
TR1=1;
LED=0x00;
}
void timer1() interrupt 3
{
TR1=0;
LED=0xff;
}
|