📄 pca_040.c
字号:
#include "C8051F040.h"
#define uchar unsigned char
#define uint unsigned int
void os_init();
void port_init();
void pca_init();
sbit led=P1^6;
void UART_Init();
void SMBus_Init();
void SPI_Init();
int m;
/***********************************************************************
*
*主函数
***********************************************************************/
void main()
{
WDTCN = 0xDE;
WDTCN = 0xAD;
os_init();
port_init();
pca_init();
EIE1 = 0x08;
IE = 0x80;
while(1)
{
}
}
/**********************************************************************
*
*端口初始化函数
***********************************************************************/
void port_init()
{
SFRPAGE = CONFIG_PAGE;
P1MDIN = 0x00;
XBR0 = 0x27;
XBR2 = 0x40;
P1MDOUT = 0x40;
}
/**********************************************************************
*
*系统时钟初始化函数,选择外部22.1184MHZ晶振频率
***********************************************************************/
void os_init()
{
uint i;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
}
/**********************************************************************
*
*可编程逻辑阵列初始化函数
***********************************************************************/
void pca_init()
{
SFRPAGE = PCA0_PAGE;
// PCA0CN = 0x40; //PCA使能
PCA0MD = 0x81; //
PCA0CPM0 = 0x11; //模块0负沿捕捉--P2.0
PCA0CPM1 = 0x11; //模块1负沿捕捉--P2.1
PCA0CPM2 = 0x11; //模块2负沿捕捉--P2.2
PCA0CPM3 = 0x11; //模块3负沿捕捉--P2.3
}
void pca_isp() interrupt 9
{SFRPAGE = PCA0_PAGE;
if(CCF0==1)
{ led=~led;
SFRPAGE = PCA0_PAGE;
CCF0 = 0; //清捕捉中断标志
}
if(CCF1==1)
{ led=~led;
SFRPAGE = PCA0_PAGE;
CCF1 = 0; //清捕捉中断标志
}
if(CCF2==1)
{ led=~led;
SFRPAGE = PCA0_PAGE;
CCF2 = 0; //清捕捉中断标志
}
if(CCF3==1)
{ led=~led;
SFRPAGE = PCA0_PAGE;
CCF3 = 0; //清捕捉中断标志
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -