📄 pcacapture.c
字号:
//-----------------------------------------------------------------------------
//无须短路环.把CEX0配置到按键S1(下降沿捕捉),当按下按键S1,板上的小灯就亮.
//-----------------------------------------------------------------------------
//文件名: PCAcapture.c
//程序说明:
#include <c8051f350.h> // SFR declarations
#include <intrins.h>
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORTn_Init (void);
void PCA_Init (void);
void PCA_ISR (void);
int n;
sbit LED= P0^1;
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
PCA0MD &= ~0x40; // WDTE = 0 (disable watchdog timer)
n=0;
PORTn_Init (); /*IO口初始化*/
PCA_Init (); /*PCA初始化*/
EA = 1;
}
void PORTn_Init (void)
{P0SKIP = 0xff;
P1SKIP =0x01;
XBR0 =0x00;
XBR1 = 0x41;
P0MDOUT |=0x02;
LED=0;
XBR1 = 0x41; // 使能交叉开关,允许弱上拉,CEX0连到P1.1
P0MDOUT |= 0x02; // 使能P0.1为推挽输出
}
void PCA_Init (void)
{
EIE1 = 0x10; /*允许PCA0中断请求*/
PCA0CPL0 = 0x00;
PCA0CPH0 = 0x20;
PCA0CPM0 = 0x11; /*PCA0负边沿捕捉方式,当CCF0=1时,允许辅捉/比较标志的中断申请*/
PCA0CN = 0x40; /*允许PCA定时器/计数器*/
}
/*PCA中断子程序*/
void PCA_ISR (void) interrupt 11
{
LED=1;
for(n=0;n<30000;n++);
CCF0 = 0; /*清匹配中断标志*/
LED=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -