跪求 STC12C5A60S2单片机内部PWM 程序

用内部PWM控制一个LED灯亮暗,两个按键,按下按键不松时,会不断递增/递减

小弟急用啊,那位大侠帮我解决下,谢谢~~~~~~
用keil C51

第1个回答  推荐于2016-08-24
void pwm_init(void) //PWM初始化函数,初始占空比为0
{
CMOD=0x02; //0000 0010 空闲时不计数,不产生中断,时钟源为fosc/2,因此输出占用率为fosc/512
CL=0x00;
CH=0x00;
CCAPM0=0x42; //0100 0010, 8位 PWM
CCAP0L=0x00;
CCAP0H=0x00; //PWM实现方法,因为是8位,CL基础计数器从0xFF递减到0x00,溢出后将CCAP0H
//的值加载到CCAP0L,若CL递减过程中,若大于CCAP0L,则输出高电平,否则为低电平
CCAPM1=0x42;
CCAP1H=0x00;
CCAP1L=0x00;
CR=1; //开启PCA计数器
}
/*********************************************************************************************/
void pwm_set(uchar x,uchar y) //占空比设置函数
{
CCAP0H=x; //设置比较值
CCAP0L=x;
CCAP1H=y;
CCAP1L=y;
}

x用于设置P1.3的占空比,数值越大占空比越小

y用于设置P1.4的占空比,数值越大占空比越小追问

程序中是哪里是表示两个按键的脚位?
哪里是表示LED灯的脚位?

追答

这里只提供了两个函数,一个是pwm初始化函数,一个是设置占空比函数,pwm有两个引脚,一个是p1.3一个是p1.4,根据需要自己编写其他程序

追问

就是说有内部pwm有两个 一个是p1.3一个是p1.4

//设置比较值

CCAP0H=0x80;
CCAP0L=0x80;

根据需要自己编写

while(1)
{
if(P10==0)
{
delay(200);
while(P10==0);
CCAP0H+=10;
CCAP0L+=10;
}
}

#include"STC12C5A.h"<---keil 编写 说 can't open file STC12C5A.h
应如何解决?

追答

那个头文件是需要自己去写的

本回答被提问者采纳
相似回答