我看STC12C5A60S2的数据手册,有一个用PCA做高速脉冲输出的汇编示例程序,
我用那个示例程序,下载到单片机以后,在第6脚上有脉冲输出。
我用C程序改写了以后,就不行了。我实在找不到原因,请高手指教,谢谢!
源程序如下:
#include<stc12c5a60s2.h>
#define uint unsigned int
#define uchar unsigned char
#define CCAPnL_VALUE 0x17 //;17H=23,11.0592MHZ,高速脉冲输出=125KHZ
///////////////////////////////////////////////
//;--------------------------------------------------------
void PCA_init() //;PCA初始化程序
{
CMOD=2; //;PCA计数器在空闲模式下继续工作,PCA计数器计数脉冲来源
//;fosc/2,禁止PCA计数器计数溢出中断
CCON=0; //;清除PCA计数器(CH,CL)计数溢出中断标志
//;停止PCA计数器计数,
//;清除模块1,0中断标志
CH=0;
CL=0;
CCAPM1=0X4D; //;设置PCA模块1为16位高速脉冲输出模式,允许触发中断
//;设置模块1为高速脉冲输出模式,脉冲在第 6 脚输出
CCAP1L=CCAPnL_VALUE;
CCAP1H=0;
//;其他中断服务可能会使模块1高速输出的某个某个周期变得很大,因此必须将
//;PCA中断的优先级设为唯一的最高优先级,
IPH=0X80;
IP=0X80;
EA=1;
CR=1; //;将PCA计数器打开
}
void main()
{
PCA_init();
while(1)
{
}
}
void PCA_Routine() interrupt 7
{
uchar temp;
CCF1=0; //;清PCA模块1中断标志 1
temp=CCAP1L;
CCAP1L+=CCAPnL_VALUE;
if(CCAP1L<temp)
CCAP1H+=1;
} |