找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1233|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

請教單片機(jī)PCA做16位定時器使用的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:961122 發(fā)表于 2022-5-25 22:31 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
我用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;


}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:961122 發(fā)表于 2022-5-25 23:05 | 只看該作者
已解決,CH<8要加括號,沒有得刪帖功能,只能在這回復(fù)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表