STC12C5608AD 硬件PWM 四路输出 。
/*------------------------------------------------------------------*//* --- STC MCU Limited ---------------------------------------------*/
/* --- STC12C56xx Series MCU PCA module output PWM wave Demo -------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82905966 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the*/
/* article, please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
/*------------------------------------------------------------------
1:PWM 调试注意范围0-2550x00-0xff输出相反 00 是最高 ff 是最低
2:当要输出低0xff但是输出还有PWM 波形,几百NS 的高电平时间 所以要设定
PCAPWM1 = 0x03; 可以看手册的320页
发现问题:
当输出为低电平的时候一定要设置PCAPWMx 寄存器
当输出为高电平的时候不需要设置PCAPWMx 寄存器
------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
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 CCAPM2 = 0xDC; //PCA module-2 mode register
sfr CCAP2L = 0xEC; //PCA module-2 capture register LOW
sfr CCAP2H = 0xFC; //PCA module-2 capture register HIGH
sfr CCAPM3 = 0xDD; //PCA module-3 mode register
sfr CCAP3L = 0xED; //PCA module-3 capture register LOW
sfr CCAP3H = 0xFD; //PCA module-3 capture register HIGH
sfr PCAPWM0 = 0xF2;
sfr PCAPWM1 = 0xF3;
sfr PCAPWM2 = 0xF4;
sfr PCAPWM3 = 0xF5;
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 = 0x00; //Set PCA timer clock source as Fosc/2
//Disable PCA timer overflow interrupt
CCAP0H = CCAP0L = 0; //PWM0 port output
CCAPM0 = 0x42; //PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP1H = CCAP1L = 85; //PWM1 port output
CCAPM1 = 0x42; //PCA module-1 work in 8-bit PWM mode and no PCA interrupt
CCAP2H=CCAP2L= 128; //PWM0 port output 50% duty cycle square wave
CCAPM2 = 0x42; //PCA module-0 work in 8-bit PWM mode and no PCA interrupt
CCAP3H = CCAP1L = 255; //PWM1 port output 0% duty cycle square wave
PCAPWM3 = 0x00;
CCAPM3 = 0x42; //PCA module-1 work in 8-bit PWM mode and no PCA interrupt
CR = 1; //PCA timer start run
while (1);
}
顶一个~~ 这个是不是官方的例子? 学习了,多谢 LZ舞台灯光行业的啊? yangbing2020 发表于 2013-7-28 11:53 static/image/common/back.gif
LZ舞台灯光行业的啊?
不是喔,一家小公司, 什么都做。
页:
[1]