?? pcacapture.c
字號:
//-----------------------------------------------------------------------------
// 版權歸新華龍電子公司所有
//-----------------------------------------------------------------------------
//
//文件名: PCAcapture.c
//
//編寫人: LC
//
//編寫時間:2005/03/10
//
//目標器件: C8051F02x
//
//編譯工具: Silicon Laboratories IDE
//
//程序說明: 此程序測試PCA負邊沿觸發的捕捉方式,測試前將P0.0同P1.6腳用跳線短接,當P1.6
// 送出6000個負邊沿,在PCA就觸發6000次負邊沿捕捉。
#include <c8051f020.h> // SFR declarations
#include <intrins.h>
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
void PCA_Init (void);
void PCA_ISR (void);
sbit P16 = P1^6;
unsigned int i,j;
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
/*關看門狗*/
WDTCN = 0xde;
WDTCN = 0xad;
j=0;
PORT_Init (); /*IO口初始化*/
PCA_Init (); /*PCA初始化*/
EA = 1;
for(i=0;i<60000;i++){ /*P16向外發送60000個脈沖*/
P16 = 1; /*置高電平*/
_nop_(); /*延時*/
_nop_();
_nop_();
_nop_();
P16 = 0; /*置低電平*/
}
while (1) {
}
}
void PORT_Init (void)
{
XBR0 = 0x08; //CEX0-->P0.0
XBR2 = 0x40; // Enable crossbar and weak pull-ups
P1MDOUT |= 0x40; // enable P1.6 as push-pull output
}
void PCA_Init (void)
{
EIE1 = 0x08; /*使能PCA0中斷*/
//PCA0MD = 0x01; /*PCA定時器/計數器溢出中斷允許*/
PCA0L = 0x00;
PCA0H = 0x00;
PCA0CPM0 = 0x11; /*PCA0負邊沿捕捉方式,當CCF0=1時,允許輔捉/比較標志的中斷申請*/
PCA0CPL0 = 0x00;
PCA0CPH0 = 0x20;
PCA0CN = 0x40; /*允許PCA定時器/計數器*/
}
/*PCA中斷子程序*/
void PCA_ISR (void) interrupt 9
{
//CF = 0;
j++; /*計中斷次數*/
CCF0 = 0; /*清匹配中斷標志*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -