#include<STC/STC15.H>
#include<intrins.h>
#include<delay.h>
#define FOSC 12 //MHz
#define rate 50 //Hz~20ms
#define max 247 //0.7ms
#define middle 237 //1.5ms
#define min 225 //2.5ms
void PWM0Init(void){
CMOD=0x04; //设置PCA定时器
CCAPM0=0x42; //设置为PWM模式
CL=CH=0x00;
CCAP0L=CCAP0H=0xFF; //初始化PWM
}
void T0Init(void){
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x02; //设置定时器模式
TL0 = 0xB2; //设置定时初值
TH0 = 0xB2; //设置定时重载值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void main (void){
unsigned char d_c = middle; //占空比*1000
T0Init();
PWM0Init(); //PWM初始化
CCAP0L=CCAP0H=middle;
CR=1; //启动PCA定时器
Delay5s();
while(1){
for(d_c=min;d_c<=max;d_c++){
CCAP0L=CCAP0H=d_c;
Delay60ms();
}
for(d_c=max;d_c>=min;d_c--){
CCAP0L=CCAP0H=d_c;
Delay60ms();
}
}
}