?? pca_cap.c
字號:
/////////t3 頻率方波輸出//////////////
/////////PCA CEX4 捕捉 測試程序//////
/////////PCA_CAP.c//////////////////////////
#include <C8051F040.h>
#define T3RUN temppage=SFRPAGE;SFRPAGE=0x01;TR3=1;SFRPAGE=temppage
#define T3STOP temppage=SFRPAGE;SFRPAGE=0x01;TR3=0;SFRPAGE=temppage
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
sfr16 RCAP2=0xca;
sfr16 RCAP3=0xca;
sfr16 RCAP4=0xca;
sfr16 TMR4=0xcc;
sfr16 TMR3=0xcc;
sfr16 TMR2=0xcc;
sfr16 PCA0CP0=0xfb;
sfr16 PCA0CP1=0xfd;
sfr16 PCA0CP2=0xe9;
sfr16 PCA0CP3=0xeb;
sfr16 PCA0CP4=0xed;
sfr16 PCA0CP5=0xe1;
uchar temppage;
xdata uint pcacap4[10];
uchar num1=0;
bit isnewdata;
void t3_fre_set(uint val){//T3頻率設(shè)置,計算公式為:(T3時鐘頻率/(2*val))
temppage=SFRPAGE;
SFRPAGE=0x01;
RCAP3=~val+1;
TMR3=RCAP3;
SFRPAGE=temppage;
}
void t3_ini(){//t3為頻率輸出模式
temppage=SFRPAGE;
SFRPAGE=0x01;
TMR3CN=0x00;//TR3=0,T3尚未啟動
TMR3CF=0x0e;//T3采用系統(tǒng)時鐘,TOG3=1,T3不計數(shù)時輸出為1,DCEN=0
SFRPAGE=temppage;
}
void pca4ini(){//PCA CEX4配置為正負(fù)邊沿均捕捉
SFRPAGE=0x00;
PCA0CPM4 = 0x31; // 正負(fù)邊沿觸發(fā)模式,CEX4捕捉中斷使能
PCA0CPL4 = 0x00;
PCA0CPH4 = 0x00;
}
void pcaini(){
SFRPAGE=0x00;
PCA0MD=0x08;//PCA采用系統(tǒng)時鐘,且PCA溢出中斷禁止
PCA0CN=0x40;//啟動PCA計數(shù)器
EIE1|=0x08;//PCA中斷使能
}
void config(){
//看門狗禁止
WDTCN = 0x07;
WDTCN = 0xDE;
WDTCN = 0xAD;
SFRPAGE = 0x0F;
//交叉開關(guān)配置,CEX4配置在P0.4,T3輸出配置在P0.6
XBR0 = 0x30;
XBR1 = 0x00;
XBR2 = 0x40;
XBR3 = 0x01;
//管腳輸出配置,P0口為開漏輸出,其中P0.6接上拉電阻,P0為數(shù)字輸入口
SFRPAGE = 0x0F;
P0MDOUT = 0x00;
P1MDIN = 0xFF;
//晶振配置,采用內(nèi)部晶振8分頻
SFRPAGE = 0x0F;
CLKSEL = 0x00;
OSCXCN = 0x00;
OSCICN = 0x84;
}
void main(void){//測試時將P0.6與P0.4口相連
xdata uint freset=1000;
config();
t3_ini();
t3_fre_set(freset);
T3RUN;
EA=1;
num1=0;
isnewdata=0;
pcaini();
pca4ini();
while(1){
if(isnewdata){
isnewdata=0;
if(num1>=10)
num1=0;
}
}
}
void PCA_ISR(void) interrupt 9 using 1 {
static xdata uint tmpcnt=0;
if(CCF4){
pcacap4[num1]=PCA0CP4-tmpcnt;
tmpcnt=PCA0CP4;
num1++;
CCF4=0;
}
isnewdata=1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -