AT89S52输出12路pwm波,但是没有bit型数组怎么办?

[复制链接]
3452|5
 楼主| angler001 发表于 2011-10-13 11:11 | 显示全部楼层 |阅读模式
如题,pwm_out[]这个数组里存放的是pwm波形的高低电平,0,1,怎么输出到IO口?
因为没有bit型数组,所以pwm_out[]是char型的。
请教解决办法……
airwill 发表于 2011-10-13 11:52 | 显示全部楼层
定义一个 16 位整数. pwm_out[]数组里的每个值对应 整数的位.
然后,  Px = 这个整数低(高)8位.
DownCloud 发表于 2011-10-13 13:07 | 显示全部楼层
本帖最后由 DownCloud 于 2011-10-13 13:09 编辑

声明一个结构体,由位段组成啊,这样可以直接位操作。
struct TwoByteBit
{
    unsigned bit0:1 ;
   unsigned bit1:1 ;
   unsigned bit2:1 ;
   unsigned bit3:1 ;
   unsigned bit4:1 ;
   unsigned bit5:1 ;
   unsigned bit6:1 ;
   unsigned bit7:1 ;
   unsigned bit8:1 ;
   unsigned bit9:1 ;
   unsigned bit10:1 ;
   unsigned bit11:1 ;
}

然后就可以这样了
struct TwoByteBit pwm_out;
...
pwm_out.bit0=1;  //访问
 楼主| angler001 发表于 2011-10-13 13:42 | 显示全部楼层
1.不知道对不对,我觉得构造结构体还不如直接写简单,12路波,就是12次循环比较,每次比较后给相应IO口赋值。就是想当于把for循环展开了。2.至于把每位合成一个16位数,怎么合呢,按每位权重相乘然后家起来?是不是计算量比较大啊,毕竟是多路的PWM波,频率也很快,要有实时性啊。
ayb_ice 发表于 2011-10-13 15:05 | 显示全部楼层
与或操作呗
iamsxj 发表于 2011-10-13 15:24 | 显示全部楼层
顺便请教一下,s52输出的PWM能达到多高的频率???
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

34

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部