|
我用STC15F2K60S2的單片機(jī),想在按下P32時啟動定時器,讀取當(dāng)前[CH CL]值,加定時長度再存入[CCAP0L CCAP0H],每個中斷變接P11的狀態(tài)。實(shí)際運(yùn)行時是按下P32后P1輸出的周期是73ms.想要的調(diào)定值是1ms.不知是什么原因,有高人幫忙看一下嗎?
#define _MAIN_C
#include <reg51.h>
unsigned int value;
sbit test_button = P3^2;
sbit pulse_out = P1^1;
sbit covery_motor = P1^2;
bit test_flag=0;
void active(void);
unsigned int current_value;
#define Basetime (0x039A) 1ms// (11059200/12/1000)
void main(void){
P1M1=0x00;
P1M0=0x0C;
test_button=1;
pulse_out=1;
CCON = 0x00;
CMOD = 0x00; //PCA時鐘為系統(tǒng)時鐘/12
CR = 1; //啟動PCA計(jì)時器
EA = 1;
while (1){
if(test_button==0 && test_flag==0){
test_flag=1;
covery_motor= ~covery_motor;
active();
}
if(test_button==1 && test_flag==1)
test_flag=0;
}
}
void active(void){
pulse_out=0;
CCAPM0 = 0x49; //PCA模塊0為16位定時器模式
current_value=(CH<<8+CL)+Basetime;
CCAP0L=current_value;
CCAP0H=current_value>>8;
}
void PCA_Isr() interrupt 7
{
pulse=~pulse;
CCF0 = 0;
current_value=(CH<<8+CL)+Basetime;
CCAP0L=current_value;
CCAP0H=current_value>>8;
}
|
|