用stc12c5a60s2单片机的PCA寄存器输出PWM波,通过MX214B芯片控制直流电机

该博客详细介绍了如何使用STC12C5A60S2单片机的PCA寄存器设置PWM频率,并通过MX214B芯片控制直流电机。PCA寄存器的配置包括选择不同的PCA时钟源、设置PWM模式,以及利用CCAPM0和CCAPM1寄存器进行8位PWM输出。文中还给出了PCA模块的中断处理函数PCA_Intrrpt(),用于根据PWM速度变化调整电机转速。
摘要由CSDN通过智能技术生成


一.PCA寄存器的资料

1,stc12c5a60s2一般pwm频率=PCA时钟源/256
2,PCA时钟源设置有4种方式,一般都有T0的溢出率,来设置PCA时钟源,
一般在COMD这个寄存器的B2,B1两位来确定是那种方式,10方式就是T0溢出方式(1T更快),可以做可变PCA时钟源时钟源,从而得到可变频率的pwm输出。

3,理论可生成(1-65535)个频率级别,如12MHz主频,(1T)方式最小可以做到12MHz,但实际是到了的最快也就是1/2SYsclk,即6MHz,然后除以256,理想可以输出23Khz~0.5Hz左右的频率范围

在8位单片机C语言编程中,sfr用来定义特殊功能寄存器,一般占一个字节,8位;sbit用来定义特殊功能寄存器中可以位寻址的位,占1位。
在51单片机中,特殊功能寄存器只有16进制地址尾数为0或者8,其包含的各个位才可以位寻址。
 
sfr CCON = 0xD8; //PCA 控制寄存器。 CF CR - - - - CCF1 CCF0 00xx,xx00

  //-----------------------

  sbit CF = CCON^7; //PCA计数器溢出标志,由硬件或软件置位,必须由软件清0。

  sbit CR = CCON^6; //1:允许 PCA 计数器计数, 必须由软件清0。

  //-

  //-

  sbit CCF1 = CCON^1; //PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。

  sbit CCF0 = CCON^0; //PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。

  //-----------------------

  sfr CMOD = 0xD9; //PCA 工作模式寄存器。 CIDL - - - CPS2 CPS1 CPS0 ECF 0xxx,x000

  /*

  CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。

  CPS2: PCA 计数器脉冲源选择位 2。

  CPS1: PCA 计数器脉冲源选择位 1。

  CPS0: PCA 计数器脉冲源选择位 0。

  CPS2 CPS1 CPS0

  0 0 0 系统时钟频率 fosc/12。

  0 0 1 系统时钟频率 fosc/2。

  0 1 0 Timer0 溢出。

  0 1 1 由 ECI/P3.4 脚输入的外部时钟,最大 fosc/2。

  1 0 0 系统时钟频率, Fosc/1

  1 0 1 系统时钟频率/4,Fosc/4

  1 1 0 系统时钟频率/6,Fosc/6

  1 1 1 系统时钟频率/8,Fosc/8

  ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。

  */

  //-----------------------

  sfr CL = 0xE9; //PCA 计数器低位 0000,0000

  sfr CH = 0xF9; //PCA 计数器高位 0000,0000

  //-----------------------

  // 7 6 5 4 3 2 1 0 Reset Value

  sfr CCAPM0 = 0xDA; //PCA 模块0 PWM 寄存器 - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000

  sfr CCAPM1 = 0xDB; //PCA 模块1 PWM 寄存器 - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000

  //ECOMn = 1:允许比较功能。

  //CAPPn = 1:允许上升沿触发捕捉功能。

  //CAPNn = 1:允许下降沿触发捕捉功能。

  //MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。

  //TOGn = 1:当匹配情况发生时, CE

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值