打印

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

[复制链接]
2531|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
angler001|  楼主 | 2011-10-13 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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波,频率也很快,要有实时性啊。

使用特权

评论回复
5
ayb_ice| | 2011-10-13 15:05 | 只看该作者
与或操作呗

使用特权

评论回复
6
iamsxj| | 2011-10-13 15:24 | 只看该作者
顺便请教一下,s52输出的PWM能达到多高的频率???

使用特权

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

本版积分规则

0

主题

34

帖子

1

粉丝