历史上的今天
返回首页

历史上的今天

今天是: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波,去掉之后就可以正常输出了。


推荐阅读

史海拾趣

ENTRELECUK公司的发展小趣事

在电子行业中,绿色环保和可持续发展已成为重要的议题。ENTRELEC UK积极响应这一趋势,致力于研发和生产环保型产品。公司采用环保材料和节能技术,降低产品对环境的影响。同时,公司还积极参与环保公益活动,推动行业的可持续发展。

Ferranti Electric Inc公司的发展小趣事

Ferranti Electric Inc公司的历史可追溯到1880年,由Sebastian Ziani de Ferranti(塞巴斯蒂安·齐亚尼·德·费兰蒂)在英国创立。作为发电机及壳式变压器的发明者之一,费兰蒂博士不仅拥有交流发电机、高压电缆、断路器等176项专利,而且他的创新精神也为公司的创立和发展奠定了坚实的基础。初创时期,公司就专注于电气产品的研发和生产,逐渐在电气行业崭露头角。

Aavid Thermalloy公司的发展小趣事

Ferranti Electric Inc公司的历史可追溯到1880年,由Sebastian Ziani de Ferranti(塞巴斯蒂安·齐亚尼·德·费兰蒂)在英国创立。作为发电机及壳式变压器的发明者之一,费兰蒂博士不仅拥有交流发电机、高压电缆、断路器等176项专利,而且他的创新精神也为公司的创立和发展奠定了坚实的基础。初创时期,公司就专注于电气产品的研发和生产,逐渐在电气行业崭露头角。

Custom Components Inc公司的发展小趣事

随着全球环保意识的不断提高,电子行业对绿色环保和可持续发展的要求也日益严格。CCI积极响应这一趋势,将绿色环保理念融入公司的战略规划和日常运营中。

公司不仅采用了环保材料和绿色生产工艺来降低产品对环境的影响,还通过优化生产流程和资源利用等方式降低能耗和排放。此外,CCI还积极参与行业环保组织和公益活动,推动整个行业向更加绿色、环保的方向发展。

CEVA, Inc公司的发展小趣事

CEVA公司在超低功耗技术方面取得了显著突破。公司开发的超低功耗IP包括由专用DSP与AI和其他类型的加速器组成的综合平台。这些加速器针对低功耗工作负载进行了优化,包括5G基带处理、智能视觉、语音识别、物理层处理和传感器融合等。这些技术的突破使得CEVA的产品在保持高性能的同时,能够大幅度降低功耗,满足了市场对节能设备的需求。

Datalogic公司的发展小趣事

随着电动汽车行业的兴起,汽车行业对零部件的标记和追踪要求也日益严格。Datalogic凭借其强大的技术实力,成功开发出3W固态激光打标机Vlase UV 3,该产品能够在橙色部件上实现高度可见、稳定和持久的对比度标记,解决了电动汽车生产中的一大难题。这一创新不仅展示了Datalogic的技术实力,也进一步巩固了其在电子行业中的领先地位。

问答坊 | AI 解惑

51单片机编程中的特征字及加密说明

关于AT89系列单片机的特征字: 单片机的特征字是单片机的身份证。AT51pro编程器在读取单片机特征字时,编程器接不接电源均可;建议你在编程器上放入芯片后,读一下其特征字,以便你心中有数。 在不知单片机编程电压时,可通过读取单片机的特 ...…

查看全部问答>

动手动脑学无线电

2008年03月15日 星期六 09:50      荀子在《劝学》中说:“君子生非异也,善假于物也”。自学无线电应该从兴趣入手,要充分利用一切有益于学习的各方面条件,通过学习有关人类思维规律的科学,并以它来指导学习和实践,将会达 ...…

查看全部问答>

关于WINCE中调用Media Player 的一个问题

   小弟初次接触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,如果哪位兄弟有的话,请回帖或发个站内信给我,我会及时跟你联系。 说 ...…

查看全部问答>

收集到的一些FreeScale的资料 发上来共享一下

  [ 本帖最后由 ch0721 于 2010-12-10 12:18 编辑 ]…

查看全部问答>

取样管BE结并一个电容起什么作用

请教高手,稳压取样电路的取样管BE结并一个电容有什么作用呢?感谢赐教…

查看全部问答>

怎么回事?貌似这样的情况,出现频率高了

怎么回事?这两日,本论坛貌似这样的情况,出现频率高了 前几天,还是在打开论坛的网页的下面出现,这两天,竟然整个网页,,请网站技术关注。是我用的360浏览器出问题? 想象截图如下: 重新刷屏后,,也就消失,但这好像不正常吧…

查看全部问答>

协调器 路由器 NV_RESTORE

树形网络,遇到了点问题 发现协调器加了NV_RESTORE选项后,确实可以一直选择原来的PAN ID, 但是路由器子节点无法接收到协调器发出的消息,即使重启网络所有节点也不能组网? 这是为什么么? 发现路由器中加了NV_RESTORE选项,但是协调器不加后 ...…

查看全部问答>

AM335X开发板求助

大家好,最近有个AM3359的项目要开展了,哪位朋友手上有闲置不用的开发板,能借我或者低价卖我一块,在这里谢谢啦!…

查看全部问答>

verilog中输出端输出一个脉冲信号

用verilog 语言来写一个。。。当输入端4位数据发生变化时,输出端会输出一个脉冲信号,就仅输出一个就行,我想用数据变化产生的上升沿 谢谢亲们了 …

查看全部问答>