产生PWM波,然后读管脚IO信号

[复制链接]
2668|2
 楼主| caojun105 发表于 2010-4-22 16:41 | 显示全部楼层 |阅读模式
我产生一个pWM波接至某管脚,来驱动蜂鸣器。
      现在的问题是 我需要测量频率,采用的是测量周期法。需要读PWM波输出管脚的电平 怎么处理?急 谢谢各位不吝解答~
fox411 发表于 2010-4-22 19:31 | 显示全部楼层
放个Counter8, 设置其中断频率是PWM的20倍以上,然后在其中断函数里测量高电平和低电平的个数,乘以中断周期就可以了。给你个参考程序
WORD wPos = 0;
WORD wNeg = 0;
WORD wCnt = 0;
BYTE bFlag = 0;

#define PWM_PIN     0x10
#define PWM_PORT    PRT2DR

#pragma interrupt_handler Counter8_ISR
void Counter8_ISR(void)
{
    if(PWM_PORT & PWM_PIN)
    {
        if(bFlag == 0)
        {
            wNeg = wCnt;
            wCnt = 0;
            bFlag = 1;
        }
        wCnt++;
    }
    else  
    {
        if(bFlag == 1)
        {
            wPos = wCnt;
            wCnt = 0;
            bFlag = 0;
        }
        wCnt++;
    }
}
虎虎生威 发表于 2010-4-22 21:07 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

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