STC 12C5620 PCA 软件定时器 的求助
STC 12C5620 使用4M 晶振PCA 软件定时10ms 用SYStem/12应该对CCP0L,CCP0H赋值多少,为什么我赋值就算最低时间也有几秒长的时间? 而T0,T1定时却是正常的 禁止溢出中断,开匹配捕获中断;time_10ms=0.01*4000000/12=3333;
中断中:对CCP0L,CCP0H累加time_10ms;清CCFn; 当我赋值为3333是时间有十几秒了
你看看我是那里错了
void reset()
{
CCON=0;
CL=0;
CH=0;
CMOD=0X00; //时钟源 系统时钟 SYSCLK/12
CCAP0L=0X05;
CCAP0H=0X0D;
CCAPM0=0X49;
//CR=0;
EPCA_LVD=1;
EA=1;
}
void pca_time() interrupt 6 using 1
{CCF0=0;
runtime--;
CCAP0L= 0X05;
CCAP0H= 0X0D;
} PCA不能溢出用吧,我的理解是PCA相当于一个计时器,PCA中断是时点中断。
//PCA初始化
void initPCA()
{
CCON = 0; //Initial PCA control register
//PCA timer stop running
//Clear CF flag
//Clear all module interrupt flag
CL = 0; //Reset PCA base timer
CH = 0;
CMOD = 0x00; //Set PCA timer clock source as Fosc/12
//Disable PCA timer overflow interrupt
T_PCA = T_Value;
CCAP0L = T_PCA;
CCAP0H = T_PCA>>8; //Initial PCA module-0
T_PCA += T_Value;
CCAPM0 = 0x49; //PCA module-0 work in 16-bit timer mode
//and enable PCA interrupt
CR = 1; //PCA timer start run
EPCAI = 1;
}
//PCA中断程序
void PCA_Int() interrupt 6 using 0
{
CCF0 = 0;
CCAP0L = T_PCA;
CCAP0H = T_PCA>>8;
T_PCA += T_Value;
//此处增加自己的代码
}
T_Value就是定时的间隔。 求助 问题找出来了,原来是CCAP0每次进入中断都要累加一值才可以的 禁止溢出中断,开匹配捕获中断;
time_10ms=0.01*4000000/12=3333;
中断中:对CCP0L,CCP0H累加time_10ms;清CCFn;
页:
[1]