历史上的今天
今天是:2025年05月21日(星期三)
2019年05月21日 | 用 STC12C5A60S2 产生PWM波
2019-05-21 来源:eefocus
#include "reg51.h"
#include "intrins.h"
#define FOSC 18432000L
typedef unsigned char BYTE;
typedef unsigned int WORD;
/*Declare SFR associated with the PCA */
sfr CCON = 0xD8; //PCA control register
sbit CCF0 = CCON^0; //PCA module-0 interrupt flag
sbit CCF1 = CCON^1; //PCA module-1 interrupt flag
sbit CR = CCON^6; //PCA timer run control bit
sbit CF = CCON^7; //PCA timer overflow flag
sfr CMOD = 0xD9; //PCA mode register
sfr CL = 0xE9; //PCA base timer LOW
sfr CH = 0xF9; //PCA base timer HIGH
sfr CCAPM0 = 0xDA; //PCA module-0 mode register
sfr CCAP0L = 0xEA; //PCA module-0 capture register LOW
sfr CCAP0H = 0xFA; //PCA module-0 capture register HIGH
sfr CCAPM1 = 0xDB; //PCA module-1 mode register
sfr CCAP1L = 0xEB; //PCA module-1 capture register LOW
sfr CCAP1H = 0xFB; //PCA module-1 capture register HIGH
sfr PCAPWM0 = 0xf2;
sfr PCAPWM1 = 0xf3;
void main()
{
CCON = 0; //Initial PCA control register
//PCA timer stop running
//Clear CF flag
//Clear all module interrupt flag
CL = 0; //Reset PCA base timer
CH = 0;
CMOD = 0x02; //Set PCA timer clock source as Fosc/2
//Disable PCA timer overflow interrupt
CCAP0H = CCAP0L = 0x80; //PWM0 port output 50% duty cycle square wave
CCAPM0 = 0x42; //PCA module-0 work in 8-bit PWM mode
//and no PCA interrupt
CCAP1H = CCAP1L = 0xff; //PWM1 port output 0% duty cycle square wave
PCAPWM1 = 0x03;
CCAPM1 = 0x42; //PCA module-1 work in 8-bit PWM mode
//and no PCA interrupt
CR = 1; //PCA timer start run
while (1);
}
其中,关于PWM的占空比的问题,我也想了好久刚开始没想明白,怎么就0x80对应的占空比就是50%呢?后来才知道,将0x80转换成十进制就是128,正好是256的一半,所以占空比是50%,也就是说,要想得到20%的占空比,就要给CCAP0H和CCAP0L附0x33, 下载到单片机后用示波器测就是20%的占空比。
上面那句 PCAPWM1 = 0x03; 不知道是什么意思,写了这句话P1.4口就无法输出PWM波,去掉之后就可以正常输出了。
史海拾趣
|
关于AT89系列单片机的特征字: 单片机的特征字是单片机的身份证。AT51pro编程器在读取单片机特征字时,编程器接不接电源均可;建议你在编程器上放入芯片后,读一下其特征字,以便你心中有数。 在不知单片机编程电压时,可通过读取单片机的特 ...… 查看全部问答> |
|
小弟初次接触WINCE ,想在WINCE中调用Media Player 做个播放器,能在eBox2300上面使用的,我添加 Windows Media Player 这个COM组件之后,工具箱中应该会多出Windows Media Player 这个工具,但是这个工具在 Windows 桌面编程的时候可 ...… 查看全部问答> |
|
求镁光MI-SOC360,松翰(sn9c211)的datasheet。如有相关方案更佳。 看到别人做的一款摄像头方案,是使用的MI-SOC360的CMOS芯片,用松翰sn9c211搭的。 MI-SOC360是PLCC28脚的,SN9C211是LQFP48脚。 网络上找了好久,都找不到相关的datasheet,如果哪位兄弟有的话,请回帖或发个站内信给我,我会及时跟你联系。 说 ...… 查看全部问答> |
|
怎么回事?这两日,本论坛貌似这样的情况,出现频率高了 前几天,还是在打开论坛的网页的下面出现,这两天,竟然整个网页,,请网站技术关注。是我用的360浏览器出问题? 想象截图如下: 重新刷屏后,,也就消失,但这好像不正常吧… 查看全部问答> |
|
树形网络,遇到了点问题 发现协调器加了NV_RESTORE选项后,确实可以一直选择原来的PAN ID, 但是路由器子节点无法接收到协调器发出的消息,即使重启网络所有节点也不能组网? 这是为什么么? 发现路由器中加了NV_RESTORE选项,但是协调器不加后 ...… 查看全部问答> |
|
用verilog 语言来写一个。。。当输入端4位数据发生变化时,输出端会输出一个脉冲信号,就仅输出一个就行,我想用数据变化产生的上升沿 谢谢亲们了 … 查看全部问答> |




