STC12C5616AD输出PWM不能连续输出
[复制链接]
#include <STC12C5620AD.h>
#define TOP 1000 //范围0-65535 sbit PWM=P3^4; sbit EPCAI=IE^6; unsigned int PER; //高低电平缓存
bit i=0;
void PcaInit() { CCON=0; CMOD=0x01;
CL=0; CH=0;
CCAP0L=TOP; CCAP0H=TOP>>8;
CCAPM0=0x49;
EPCAI=1; EA=1; }
void pwm_da(unsigned long ang) {
PER=(ang*1000)/270; CR=1; // // while(1); }
void main() { unsigned int va =0; PcaInit(); while(1) { pwm_da(va); if(va >= 270) { va=0; } else { va = va + 1; }
} }
void PCA_isr() interrupt 7 using 1 { CCF0=0; i=~i; if(!i) //判断标志位,如果为1 { PWM=0; CL=0; CH=0; CCAP0L=PER; CCAP0H=PER>>8;
} else { PWM=1; CL=0; CH=0; CCAP0L=TOP-PER; CCAP0H=(TOP-PER)>>8;
}
}
用PCA的软件定时器仿PWM输出,然后经过DA处理输出0~5V,但是pwm_da(va)中的参数如果是常数则没问题,但是用可变变量作参数,DA输出就会停在一个值,并没有变化。如程序所示,请教哪位大侠给解释一下啊 ,谢谢了
|