通过外部中断0和外部中断1使led状态取反
#include <STC15F2K60S2.h>
#include <intrins.h>
//外部中断0和1,使用P3^2和P3^3,需将J5的2和3短接
//程序要求:
// 按下 P32-INT0 引脚对应的按键 S5,L1 状态翻转
// 按下 P33-INT1 引脚对应的按键 S4,L2 状态翻转
unsigned char i;//用来
//1、系统初始化
void system_init()
{
P2=0XA0;
P0=0X00;
P2=0X80;
P0=0XFF;
P2=0X00;
}
//2、led显示(要求1开灯,0熄灯)
void led_display(unsigned char i)
{
P2=0X80;//打开led控制端
P0=~i;
P2=0X00;//取消对任何外设的控制
}
//3、外部中断初始化函数
void int0_init()
{
IT0=1;
EX0=1;
EA=1;
}
void int1_init()
{
IT1=1;
EX1=1;
EA=1;
}
//4、主函数
void main()
{
system_init();
int0_init();
int1_init();
while(1)
{
}
}
//5、外部中断服务函数
// 按下 P32-INT0 引脚对应的按键 S5,L1 状态翻转
void int0_service() interrupt 0
{
//把0当靶子,和另外一个位异或,会保持原来的数不变
//把1当靶子,和另外一个位异或,会让原来的数翻转
i=i^0x01;
led_display(i);
}
void int1_service() interrupt 2
{
i=i^0x02;
led_display(i);
}