新闻  |   论坛  |   博客  |   在线研讨会
第四十八课 PWM之三 二级中断调节LED亮度
0750long | 2009-06-16 12:55:14    阅读:1592   发布文章

第四十八课 PWM之三 二级中断调节LED亮度

一个中断用来改变占空比,一个中断用来改变频率

程序讲解:

#include < reg51.h >

sbit  K1 =P3^4 ;   //按K1,PWM值增加键
sbit  K2 =P3^5 ;   //按K2,PWM值减少键

unsigned char PWM="0x7f" ; //赋初值


void delayms(unsigned char ms);


/*********************************************************/
void main()

 P1=0xff;
    TMOD="0x21" ;
    TH0=0xfc ;             //1ms延时常数
    TL0=0x66 ;             //频率调节

    TH1=PWM ;              //脉宽调节
    TL1=PWM ;

    EA="1";
    ET0=1;
    ET1=1;
   
    TR0=1 ;
 PT1=1;

    while(1)
    {
        if(K1==0&&PWM!=0xff)
        {
     PWM++ ;delayms(10);
     }
        if(K2==0&&PWM!=0x00)
        {
    PWM-- ;delayms(10);
     }
   }
}

/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1

    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
 TL1=PWM ;
    TR1=1 ;
    P1=0x00 ;      //启动输出
}

/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3
{
    TR1=0 ;
    P1=0xff ;     //结束输出
}


/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)

{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客