PCA (Programmable Counter Array) 是一种多功能计数器/定时器外设,常见于许多微控制器中(如8051系列)。它提供了灵活的可编程计数器功能,能够实现多种定时和计数操作。
任务:
PWM(脉宽调制)模式,10位
代码如下:
设计占空比:
- void PWM_Set(u16 value)
- {
- if(0<=value<=1023) {
- value = 1023 - value;
- PCA_PWM2 = (PCA_PWM2 & ~0x30) | ((value >> 8) << 4);
- CCAP2H = value & 0xff;
- }
- }
复制代码
初始化代码:
- CCON = 0x00; //清中断标志
- CMOD = 0x08;//PCA 时钟为系统时钟
- CL = 0x00; //计数器值清零
- CH = 0x00;
- CCAPM2 = 0x42;
- PCA_PWM2 = 0xc0;
- PWM_Set(100);
- CCON |= 0x40; //将CR置1,启动PCA计数器
复制代码
测试代码
- while(1) {
- PWM_Set(count); // 设置 PWM 占空比
- count++; // 递增 PWM 值
- if (count > 1023) count = 0; // 超过 1023 归零
- delay_ms(1); // 延时 1ms(控制渐变速度)
- }
复制代码
|