⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l4-3.c

📁 单片机C语言程序设计教程与实训源代码及图片 单片机C语言程序设计教程与实训源代码及图片
💻 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 + -