1、相关寄存器
PxIEN(x为0-2): Px 中断屏蔽寄存器
PICTL:端口中断控制
IIEN1.P0IE: P0 中断屏蔽位
IEN2.P1IE: P1 中断屏蔽位
IEN2.P2IE: P2 中断屏蔽位
PxIFG:IO中断标志寄存器
PxIF:IO中断标志位
2、程序
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_2 // P1.0口控制LED1
#define KEY1 P0_0 // P0.0口控制S1
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i
}
void InitLed(void)
{
P1DIR |= 0x04; //P1.0定义为输出口
LED1 = 0; //LED1灯灭
}
void InitKey()
{
P0IEN |= 0x1; // P0.0 设置为中断方式 1:中断使能
PICTL |= 0x1; //下降沿触发
IEN1 |= 0x20; //允许P0口中断;
P0IFG = 0x00; //初始化中断标志位
EA = 1; //打开总中断
}
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
DelayMS(10); //延时去抖
LED1 = ~LED1; //改变LED1状态
P0IFG = 0; //清中断标志
P0IF = 0; //清中断标志
}
void main(void)
{
InitLed(); //设置LED灯相应的IO口
InitKey(); //设置S1相应的IO口
while(1)
{
}
}