标题: 请教单片机PCA做16位定时器使用的问题 [打印本页]

作者: litingkun    时间: 2022-5-25 22:31
标题: 请教单片机PCA做16位定时器使用的问题
我用STC15F2K60S2的单片机,想在按下P32时启动定时器,读取当前[CH CL]值,加定时长度再存入[CCAP0L CCAP0H],每个中断变接P11的状态。实际运行时是按下P32后P1输出的周期是73ms.想要的调定值是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时钟为系统时钟/12
    CR = 1;                                     //启动PCA计时器
    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;


}

作者: litingkun    时间: 2022-5-25 23:05
已解决,CH<8要加括号,没有得删帖功能,只能在这回复




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1