📄 pcacp.c
字号:
/******************************************************************
本程序为PCA捕捉例程,判断4个(S1-S4)按键是否按下然后触发中断对LED灯
D2\D3取反同时也完成按键扫描的过程
******************************************************************/
#include <c8051f340.h>
#define uchar unsigned char
#define uint unsigned int
void port_init (void); //端口初始化
void pca_init (void); //PCA初始化
sbit led0= P2^6; //定义灯输出脚
sbit led1= P2^4; //定义灯输出脚
void delay(uint d)
{
uint i;
for(i=0;i<d;i++);
}
/******************************************************************
主程序
******************************************************************/
void main (void) {
PCA0MD &= ~0x40; //关闭看门狗定时器
OSCICN |= 0x03; //内部12M晶振
port_init (); //端口初始化
pca_init (); //PCA初始化
EA = 1;
while(1){
}
}
/******************************************************************
端口初始化程序
******************************************************************/
void port_init (void)
{
P0SKIP = 0xFF;
P1SKIP = 0xFF; //跳过前面I/O端口
XBR1 = 0x44; // 使能交叉开关,CEX0,连到P2.2
P2MDOUT |= 0x50; // 使能P2.6,P2.4为推挽输出
}
/******************************************************************
PCA初始化程序
******************************************************************/
void pca_init (void)
{
EIE1 = 0x10; //允许PCA0中断
PCA0CPM0 = 0x11; //模块0负沿捕捉使能与配匹使能
PCA0CPM1 = 0x11; //模块1负沿捕捉使能与配匹使能
PCA0CPM2 = 0x11; //模块2负沿捕捉使能与配匹使能
PCA0CPM3 = 0x11; //模块3负沿捕捉使能与配匹使能
}
/******************************************************************
PCA中断程序
******************************************************************/
void PCA_ISR (void) interrupt 11
{
if(CCF0==1)
{
delay(50000);
delay(50000);
delay(20000);
delay(20000);
while(CCF0==0);
led0=~led0;
CCF0 = 0; //清捕捉中断标志
}
if(CCF1==1)
{delay(50000);
delay(50000);
delay(20000);
delay(20000);
while(CCF1==0);
led0=~led0;
CCF1 = 0; //清捕捉中断标志
}
if(CCF2==1)
{ delay(50000);
delay(50000);
delay(20000);
delay(20000);
while(CCF2==0);
led1=~led1;
CCF2 = 0; //清捕捉中断标志
}
if(CCF3==1)
{ delay(50000);
delay(50000);
delay(20000);
delay(20000);
while(CCF3==0);
led1=~led1;
CCF3 = 0; //清捕捉中断标志
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -