论坛风格切换切换到宽版
  • 3392阅读
  • 2回复

用51做了个pwm的试验,控制led渐亮,渐灭 [复制链接]

上一主题 下一主题
离线bd9cr
 
发帖
1202
只看楼主 倒序阅读 0楼 发表于: 2007-10-22
学习mega8里面的定时器pwm功能很是方便
想试试用51能不能搞

p32 渐亮 p33渐灭
led equ p31
用了一个定时器和定时器中断




#include<at89x51.h>
bit flag=0;
unsigned int c[9]={0xec,0xf0,0xf4,0xf8,0xfc,0xfe,0xfe,0xff,0xff};
unsigned int d[9]={0x78,0xe0,0x48,0x30,0x18,0x0c,0xd4,0x9c,0xfa};
char a=0,b=0;
void delay(unsigned int i)
{
while(i--);
}
/////////////////////////////////////////
void timer0(void)interrupt 1
{
flag=!flag;
if(flag==1){p3_1=1;th0=c[a];tl0=d;}//灭的时间
if(flag==0){p3_1=0;th0=0xff;tl0=0xfa;}//亮的时间
}
///////////////////////////////////////
void main(void)
{
p3=0xff;
p3_1=0;
tmod=0x01;
th0=0xff;
tl0=0xfa;
ea=1;
et0=1;
tr0=1;
while(1)
{
  while(p3_2==0)
    {
    if(a<8)
            a++;
    if(b<8)
            b++;    
    delay(3000);
    }  
  while(p3_3==0)
    {
    if(a>0)
            a--;
    if(b>0)
            b--;
    delay(3000);
    }
 
  }



}
离线honggun
发帖
483
只看该作者 1楼 发表于: 2007-10-26
顶一下,好。
离线BG7TBL
发帖
2965
只看该作者 2楼 发表于: 2007-10-26
我最近用pwm才知道,用pb1/pb2输出不用中断的!!