打印

各位大侠帮忙看一下,用PIC12F683,想在第五脚输出40KHz的方波,本人菜鸟,帮一下

[复制链接]
852|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wp18000|  楼主 | 2015-9-22 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<pic.h>
unsigned int g_Period=3;//方波周期,单位为us
unsigned int g_DutyWidth=8;//这样定义提高程序的灵活性

void InitCCP1()
{
CCP1IF=0;//比较相等标志位清零
CCP1IE=1;//CCP1中断使能
PEIE=1;//外围中断使能
GIE=1;//总中断使能

T1CKPS1=0;//预分频比为1:1
T1CKPS0=0;
T1OSCEN=0;//关闭独立时钟振荡器
TMR1CS=0;//时钟来源于Fosc/4
TMR1ON=1;//使能定时器计数

CCPR1L=(g_DutyWidth>>1) & 0x00FF;//获得半周期低8位
CCPR1H=((g_DutyWidth>>1)>>8) & 0x00FF;//把半周期高8位移位到低8位

CCP1M3=1;//1010:比较模式,触发特殊事件:复位TMR1计数值
CCP1M2=0;
CCP1M1=1;
CCP1M0=0;

COUT=0;//COUT作为输出引脚
COUT=1;//初始值为低电平
}

void interrupt CCP1INT(void)
{
if(CCP1IF)//是CCP1中断
{
CCP1IF=0;//CCP1标志位清零
COUT=!COUT;//COUT取反后输出
}
}
void main()
{
InitCCP1();//初始化CCP1模块
while(1);
{;}
}

相关帖子

沙发
MOn51| | 2017-5-30 14:14 | 只看该作者
这个帖子无人回答,楼主的做法是错误的。应该用PWM输出。用比较中断,哪程序几乎无法运行了,时刻在响应中断。用PWM输出50%的占空比,是硬件完成。不占用MCU的时间。

使用特权

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

本版积分规则

1

主题

3

帖子

1

粉丝