我调用官方的PWM文件,直接修改CCAP0H值可以控制LED灯的暗亮,但是想用按键控制这个值就不能控制,大家看看是我哪里错了,下面是我的C文件,谢谢大家的帮忙
单片机源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr CCON = 0xD8; //PCA 控制寄存器。 CF CR - - - - CCF1 CCF0 00xx,xx00
sfr CMOD = 0xD9;
sfr CL = 0xE9;
sfr CH = 0xF9;
sfr CCAP0L = 0xEA;
sfr CCAP0H = 0xFA;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sbit CR = 0xDE;
sbit key1=P3^4;
sbit key2=P3^5;
uchar aa;
void pwm();
void main(void)
{
pwm();
//aa=255;
while(1) ;
{
/* if(key1==0)
{
aa++;
if(aa==256)
aa=256;
} */
// aa=256;
}
}
void pwm()
{
CMOD = 0x02; // Setup PCA timer //0000 0010 空闲时不计数,不产生中断,时钟源为fosc/2,因此输出占用率为fosc/512
CL = 0x00;
CH = 0x00;
CCAP0L = 0xc0; //Set the initial value same as CCAP0H
CCAP0H =aa; //25% 设置为25%的占空比
CCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in PWM mode 0100 0010, 8位 PWM
CR = 1; //Start PCA Timer. //开启PCA计数器
}
|