久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1920|回復: 1
打印 上一主題 下一主題
收起左側

單片機PCA測脈沖

[復制鏈接]
跳轉到指定樓層
樓主
ID:389365 發(fā)表于 2018-8-23 17:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*********************************************
兩路PCA外部脈沖周期計時器。分別使用P1.3與P1.4口。
針對測速碼盤。
PCA_dt0和PCA_dt1表示測量到的兩個脈沖各自的周期。最小到1ms。不精確。
diff_pulse中表示脈沖差數(shù)。
這個函數(shù)庫需要占用兩路PCA。但不占用定時器和外部中斷~
*********************************************/
#include "pulseFreq.h"
#include "serial.h"
int xdata pulse_diff;          //脈沖差數(shù)
uint xdata pulse_count0;
uint xdata pulse_count1;
uint PCA_Count0;        //P1.3周期計時
uint PCA_Count1;        //P1.4周期計時
uint xdata PCA_dt0;                //P1.3周期存儲
uint xdata PCA_dt1;                //P1.4周期存儲
                                                           //計時器溢出時間
const uchar code CH_reload=(65535-TIME_RELOAD)/256;                //計時器溢出時間,高8位
const uchar code CL_reload=(65535-TIME_RELOAD)%256;                //計時器溢出時間,低8位
void pulse_Clear(){
        pulse_diff=0;
        pulse_count0=0;
        pulse_count1=0;
        PCA_Count0=0;
        PCA_Count1=0;
        PCA_dt0=0;
        PCA_dt1=0;//初始化全體非戰(zhàn)斗人員清零。
}
void PulseFreq_Init(){
        pulse_Clear();
        CMOD=0x01;//系統(tǒng)時鐘/12,允許溢出中斷(這樣可以數(shù)更長的時間)
    CCAPM0=0x31;
        CCAPM1=0x31;//16位捕獲模式,由CCPn/PCAn的跳變觸發(fā)
        CCON=0x40;//各種狀態(tài)位清零,開啟
        //使用IO口為P1.3與P1.4
        EA=1;
}
//1000 * 12 次時鐘頻 也就是1ms每次溢出中斷。

void PCA_isr() interrupt 7 using 1{        
//PCA中斷,同時處理三種事件。定時器溢出和兩種脈沖。
        if(CF==1){
                CH=CH_reload;
                CL=CL_reload;
                CF=0;
                PCA_Count0++;
                PCA_Count1++;
                if(PCA_dt0<PCA_Count0)PCA_dt0=PCA_Count0;
                if(PCA_dt1<PCA_Count1)PCA_dt1=PCA_Count1;                        
        }

        if(CCF0==1){
        //如果是P1.3產生的脈沖
                CCF0=0;
                //清標志位
                pulse_diff++;
                pulse_count0++;
                PCA_dt0=PCA_Count0;
                PCA_Count0=0;
//                send_str("dt0: ");
//                send_uint(PCA_dt0);
//                send_ln();
        }
        if(CCF1==1){
        //如果是P1.4產生的脈沖
                CCF1=0;
                //清標志位
                pulse_diff--;
                pulse_count1++;
                PCA_dt1=PCA_Count1;
                PCA_Count1=0;
//                send_str("dt1: ");
//                send_uint(PCA_dt1);
//                send_ln();
        }
}
uint Pulse_getPeriodTime(bit idx){
//獲取周期時間,面向外部調用。
        if(idx==0){
                return PCA_dt0;
        }
        else {
                return PCA_dt1;
        }
}
/*
void main(){
        PulseFreq_Init();
        Serial_Init();
        while(1){
                delay(10);
        }
}
*/

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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-8-23 17:48 | 只看該作者
工程包能分享嗎?缺頭文件無法編譯
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线视频免费观看 | 久久精品视频99 | 特级生活片 | 韩国欧洲一级毛片 | a级毛片毛片免费观看久潮喷 | 中文字幕久久精品 | 中文字幕国产 | 91麻豆精品国产91久久久久久久久 | 澳门永久av免费网站 | av网站在线播放 | 国产黄色大片在线免费观看 | 一区二区三区日 | 久久久久久国产精品久久 | 涩涩视频在线看 | 99精品久久久 | 中文字幕在线免费观看 | 久久久久香蕉视频 | 呦呦在线视频 | 国产精品精品视频一区二区三区 | 天天草草草 | 婷婷亚洲综合 | 久久国产精品免费一区二区三区 | 国产www.| 国产精品国产精品国产专区不卡 | 99精品久久| 日韩在线观看网站 | 亚欧午夜| 欧美黄色一区 | 九九久久在线看 | 人人人艹 | 毛片入口 | 日韩一区二区三区在线视频 | 免费国产一区 | 久久久久久久久国产成人免费 | 99久久精品国产毛片 | 色av一区二区 | 中文字幕在线观看国产 | 日韩高清一区 | 久草在线| 在线日韩视频 | 人人爽日日躁夜夜躁尤物 |