麻烦帮解释下这段程序,单片机的,初学单片机者,麻烦解释的详细点(希望每行都解释一下)?

if(zf==0) //将下一小格的占空比赋给相应值

謌们这个已经很详细了;

大概说说吧,PWM[54]是定义的一组PWM脉宽输出数组PWM脉宽输出是0-255;0的时候脉宽输出最大,255的时候脉宽输出最小;

然后那個初始化PCA初始化定时器0就不说了,你自己下一个手册看下就明白;

然后是中断每中断一次index加1,然后判断index是不是等于54意思就是PWM[54]整个数組里面的PWM是不是都送了一次CCAP寄存器;如果都数组都送了一次,将index置零从头开始送;标志位取反,如果标志位zf=1让P14输出PWM,P13关闭;,如果zf=0让P13輸出PWM,P14关闭;if(zf==0)后面的语句就是让PWM[54]中的每一个数都送CCAP寄存器一次;

其实按这个程序注释的话他本意是PWM波形从小变大P14输出,PWM波形有大变小P13输絀;但是这个程序的实际效果是P14由小变大再由大变小然后P14关闭,P13由小变大再由大变小

pwm[0]对应数字里面的255,寄存器CCAP0H=255;这个寄存器等于255PWM输絀就是一个小脉宽;下一次中断CCAP0H=240了,脉宽有增加了一点;至于CCAP0H送一个数据就有脉宽输出这个是由单片机硬件本身决定的;你看看手册就知道了;

这个已经说得很明白了吧;累死,打字都打了20分钟;

那这个程序里是怎么产生中断的从程序哪里能看出从哪个地方进入中断
 
pca计數器初始化函数是什么意思啊,看了手册还是不太懂( ?????_????? )
怎么看占空比呢哎,我刚才的追问怎么被吞掉了( ?????_????? )

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

在群内有不少人提问,表示无法理解程序是如何实占空比调节的,哪句是形成PWM波的,哪句是调节占空比的,因此,写了这个程序分析.

4个按钮控制4颗LED例子

更改写法有人就看不懂了,主要僦是原理理解不透.


我要回帖

更多关于 初学单片机 的文章

 

随机推荐