📄 l4-3.c
字号:
/**********************************************************************
程序名称:L4-3.c
程序功能:通过外部中断0,用K1~K4分别单独控制D1~D4的发光、熄灭
调用函数:Xint0( void )
程序作者:张三
创建时间:2008-3-28
**********************************************************************/
#include <reg51.h>
sbit D1 = P1^4; // 定义4个发光二极管D1~D4
sbit D2 = P1^5;
sbit D3 = P1^6;
sbit D4 = P1^7;
unsigned char P1_status; // 定义无符号字符型变量P1_status,用于保存P1口的状态
bit X0_flag; // 定义位变量X0_flag,用于判断是否发生中断
void Xint0( void ); // 外部中断0中断函数声明
/**********************************************************************
函数名称:void main( )
功能描述:初始化CPU,并根据P1_status、X0_flag值控制发光二极管发光与熄灭
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void main( void )
{
P1 = 0x00; // 发光二极管熄灭,准备扫描按键
EA = 1; // 打开总中断
EX0 = 1; // 允许外部中断0中断
IT0 = 1; // INT0为电平触发方式
for( ; ; ){
if( X0_flag == 1){ // 判断是否发生中断
switch( P1&0x0f ){ // 判断中断来源,并完成相应的动作
case 0x01: D1 = !D1; break;
case 0x02: D2 = !D2; break;
case 0x04: D3 = !D3; break;
case 0x08: D4 = !D4; break;
default: ;
}
X0_flag = 0; // 清中断标志位
}
}
}
/**********************************************************************
函数名称:void Xint0( void ) Interrupt 0 using 3
功能描述:将中断标志位X0_flag置1,保存P1口的状态
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void Xint0( void ) interrupt 0 using 3
{
X0_flag = 1; // 设置中断标志位
P1_status = P1; // 保存P1口的状态
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -