2个回答
展开全部
以前做过STC12C5628AD的项目。
部分程序给你参考下
//IO口初始化
void IOInit(void)
{
P0M0 = 0x00; //设置P0口 00->准双向 01->推挽 10->高阻输入 11->开漏
P0M1 = 0x00;
P1M0 = 0x87; //设置P1.0、P1.1、P1.2、P1.7高阻输入,其他全部准双向
P1M1 = 0x00;
P2M0 = 0x00; //设置P2口全部推挽输出
P2M1 = 0xFF;
P3M0 = 0x00; //设置P3.0准双向,其他P3口全部推挽输出
P3M1 = 0xFE;
}
//启动PWM
void PWMStart(void)
{
//CMOD=0x04; //PWM时钟用定时器0溢出
//AUXR=AUXR|0x80; //定时器0时钟工作于1T模式
//TMOD=(TMOD&0xF0)|0x02; //定时器0工作于8位自动重装模式
//TH0=0xF9; //0xF9->PWM 18KHz
//TL0=0xF9;
//TR0=1; //启动定时器0 此时PWM输出频率18.4KHz
CMOD = 0x02; //PWM输出频率39.0625KHz
CL = 0x00;
CH = 0x00;
CCAP3L = 0x8d; //第2路辅助PWM占空比
CCAP3H = 0x8d;
CCAPM3 = 0x42;
PCA_PWM3 = 0x00;
CCAP2L = 0x0D; //第1路辅助PWM占空比
CCAP2H = 0x0D;
CCAPM2 = 0x42;
PCA_PWM2 = 0x00;
CCAP1L = PWM1First; //第1路PWM占空比
CCAP1H = PWM1First;
CCAPM1 = 0x42;
PCA_PWM1 = 0x00;
CCAP0L = PWM0First; //第2路PWM占空比
CCAP0H = PWM0First;
CCAPM0 = 0x42;
PCA_PWM0 = 0x00;
CR=1;
}
部分程序给你参考下
//IO口初始化
void IOInit(void)
{
P0M0 = 0x00; //设置P0口 00->准双向 01->推挽 10->高阻输入 11->开漏
P0M1 = 0x00;
P1M0 = 0x87; //设置P1.0、P1.1、P1.2、P1.7高阻输入,其他全部准双向
P1M1 = 0x00;
P2M0 = 0x00; //设置P2口全部推挽输出
P2M1 = 0xFF;
P3M0 = 0x00; //设置P3.0准双向,其他P3口全部推挽输出
P3M1 = 0xFE;
}
//启动PWM
void PWMStart(void)
{
//CMOD=0x04; //PWM时钟用定时器0溢出
//AUXR=AUXR|0x80; //定时器0时钟工作于1T模式
//TMOD=(TMOD&0xF0)|0x02; //定时器0工作于8位自动重装模式
//TH0=0xF9; //0xF9->PWM 18KHz
//TL0=0xF9;
//TR0=1; //启动定时器0 此时PWM输出频率18.4KHz
CMOD = 0x02; //PWM输出频率39.0625KHz
CL = 0x00;
CH = 0x00;
CCAP3L = 0x8d; //第2路辅助PWM占空比
CCAP3H = 0x8d;
CCAPM3 = 0x42;
PCA_PWM3 = 0x00;
CCAP2L = 0x0D; //第1路辅助PWM占空比
CCAP2H = 0x0D;
CCAPM2 = 0x42;
PCA_PWM2 = 0x00;
CCAP1L = PWM1First; //第1路PWM占空比
CCAP1H = PWM1First;
CCAPM1 = 0x42;
PCA_PWM1 = 0x00;
CCAP0L = PWM0First; //第2路PWM占空比
CCAP0H = PWM0First;
CCAPM0 = 0x42;
PCA_PWM0 = 0x00;
CR=1;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询