【PIC16F914单片机】PWM输出

最终目的生成多个周期的方波,并且按键可选

目录

1-先生成1个100hz

PIC单片机的PWM波的简单调制+proteus仿真实现直流电机的启动

工作需要,捣鼓两天,了解了下寄存器的配置,参考网上现有帖子,改了下配置

搞了一个100HZ方波

【这里要贴图,待补,表示不是说白话】【太阳有点大,将就看吧】

关键点

由于100HZ,时间挺长的,可以使用内部1Mhz, 晶振

然后,

根据这个,算出,PR2

根据这个,

算出划红线的内容。注意点:

(CCPRXL:CCPXCON<5:4>) 看做一个整体

比如,对方帖子里,算出来的是

511,那么转成二级制  :  0b:   111111111  ,(这个用系统计算机可以算),

然后,最前面补0  ,0111 1111   11   

也就是说: CCPR1L =   0111 1111   ;     CCP1CON<5:4> = 11

再根据规格书内容

                         //bit 7-6 未实现:读为 0,
                         //bit 5-4 CCPxX:CCPxY:PWM 最低有效位(10位分辨率的低两位)
                        //捕捉模式:未用
                        //比较模式:未用
                        //PWM 模式:这些位是 PWM 占空比的低 2 位。
                        //这个需要你根据你自己相应的PWM来取值。
                        //高 8 位在 CCPRxL 中

                       //剩下四位,设置1100
                         //bit 3-0 CCPxM<3:0>:CCP 模式选择位
                         //11xx = PWM 模式

所以的到了寄存器CCPR1L=0X7F.CCP1CON=  0X3C[这个跟他不一样].

---2023年12月7日---

算这些其实挺费时的, 大伙可以用EXCEL的表格,套下函数,把公式给写进去,还挺好用

如下

回归程序,里面有这句话

while(!TMR2IF);

  先看成 while(语句);  

    再回顾常规的:

  1. while(表达式)

  2. {

  3. 循环语句;

  4. }

  • while语句的执行流程是:

    • 首先,计算条件表达式的值。

    • 如果条件表达式的值为true,执行循环体,然后回到第一步。

    • 如果条件表达式的值为false,跳出while语句,继续执行后面的代码。

现在,  先看成 while(语句);  

可以看成

while(表达式)

{

    没有 循环语句;   

}

套用

表达式结果为true,循环语句要被执行;如果为false,就不执行。

(!TMR2IF)如果为true,(!TMR2IF)结果为真,      没有循环语句要被执行==>就是空执行,即等待;

(!TMR2IF)如果为false,就不执行,跳出当前,其执行后面的。

那么, !TMR2IF 要  真, 就是1--》那么, !TMR2IF 要 = 1,TMR2IF 就是= 0

( 因为,前面有个 ! ,取反)

所以,再回头看,while(!TMR2IF);  

意思就是, TMR2IF = 0 (即,TIMER2 还没溢出)就一直等待,等待其溢出;

一旦溢出,TMR2IF = 1, 取反就是 !TMR2IF =0 ,while  表达式为 假,跳出循环,其执行后续的;

【为啥写这些,因为,我老是看迷糊...】

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

属鼠的金牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值