#include<stc12c5412ad.h>
sbit P3_7=P3^7;
unsigned long output,pwm_low;
/*pca模块0,控制舵机1,输出引脚为P3_7*/
void PCA_timer(void) interrupt 6
{
P3_7=!P3_7; //p3.7 取反//
pwm_low=100000-output; // 重新设置计数初值//
CCAP0L=(unsigned char)(pwm_low/12%256);
CCAP0H=(unsigned char)(pwm_low/12/256);
CCF0=0;
}
void main(void)
{
P3_7=1; //设置P3.7口为高电平//
CMOD=0x80; //PCA在空闲模式下停止PCA计数器工作,时钟源为fosc/12 //
CCON=0x00; //CF=0,清0 PCA计数器溢出中断请求标志位,CR=0,不允许PCA计数器计数,清0 PCA各模块请求中断标志位 //
CH=0; //清0 PCA计数器//
CL=0;
CCAPM0=0x49; //设置PCA模块0为16位软件定时器,ECCF0=1允许PCA模块0中断;当[CH,CL]==[CCAP0H, CCAP0L]时,产生中断请求,CCF0=1, //
output=4550;
CCAP0L=(unsigned char)(output/12%256); //设置PCA模块0的CCAP0L初值//
CCAP0H=(unsigned char)(output/12/256); //设置PCA模块0的CCAP0H初值//
EPCA_LVD=1; //开PCA中断和LVD(低压检测)中断共享的总中断控制位//
EA=1; //开整个单片机所有中断共享的总中断控制位//
CR=1; //启动PCA计数器(CH,CL)计数//
while(1);
}
文章评论(0条评论)
登录后参与讨论