打印

一个定时器 实现输出两路或两路以上的PWM信号

[复制链接]
3060|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a250871207|  楼主 | 2011-3-3 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2011-3-3 13:42 | 只看该作者
这只适合要求不高的场合
设T0每1MS中断一次
简单示意代码
sbit PWM1 = P00;
sbit PWM2 = P01;
unsigned char pwm1 = 256*0.5;    // PWM1高电平周期,可变即PWM,总周期256MS,此处不可变
unsigned char pwm2 = 256*0.8;

unsigned char pwm1_counter = 0;
unsigned char pwm2_counter = 0;

void ISR_T0(void) interrupt 1
{
    // 重装初值代码省略

   if(pwm1_counter == 0){
           PWM1 = 1;
    }else if(pwm1_counter == pwm1){
           PWM1 = 0;
    }

   if(pwm2_counter == 0){
           PWM2 = 1;
    }else if(pwm2_counter == pwm2){
           PWM2 = 0;
    }
    pwm1_counter++;
    pwm2_counter++;
}

使用特权

评论回复
板凳
coody| | 2011-3-3 15:30 | 只看该作者
使用分场扫描,8位PWM重装8次就可以了,可以做8路或16路PWM,甚至用595串10片20片的,输出几十百把个LED调光,每个独立

使用特权

评论回复
地板
免证入网| | 2011-3-4 09:03 | 只看该作者
8254

使用特权

评论回复
5
shell.albert| | 2011-3-4 09:18 | 只看该作者
可不可以这样?

1。一个定时器输出,外接多个计数器进行分频。
2。使用软定时。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

107

帖子

1

粉丝