?? l4-3.c
字號(hào):
/**********************************************************************
程序名稱(chēng):L4-3.c
程序功能:通過(guò)外部中斷0,用K1~K4分別單獨(dú)控制D1~D4的發(fā)光、熄滅
調(diào)用函數(shù):Xint0( void )
程序作者:張三
創(chuàng)建時(shí)間:2008-3-28
**********************************************************************/
#include <reg51.h>
sbit D1 = P1^4; // 定義4個(gè)發(fā)光二極管D1~D4
sbit D2 = P1^5;
sbit D3 = P1^6;
sbit D4 = P1^7;
unsigned char P1_status; // 定義無(wú)符號(hào)字符型變量P1_status,用于保存P1口的狀態(tài)
bit X0_flag; // 定義位變量X0_flag,用于判斷是否發(fā)生中斷
void Xint0( void ); // 外部中斷0中斷函數(shù)聲明
/**********************************************************************
函數(shù)名稱(chēng):void main( )
功能描述:初始化CPU,并根據(jù)P1_status、X0_flag值控制發(fā)光二極管發(fā)光與熄滅
函數(shù)作者:張三
創(chuàng)建時(shí)間:2008-3-28
**********************************************************************/
void main( void )
{
P1 = 0x00; // 發(fā)光二極管熄滅,準(zhǔn)備掃描按鍵
EA = 1; // 打開(kāi)總中斷
EX0 = 1; // 允許外部中斷0中斷
IT0 = 1; // INT0為電平觸發(fā)方式
for( ; ; ){
if( X0_flag == 1){ // 判斷是否發(fā)生中斷
switch( P1&0x0f ){ // 判斷中斷來(lái)源,并完成相應(yīng)的動(dòng)作
case 0x01: D1 = !D1; break;
case 0x02: D2 = !D2; break;
case 0x04: D3 = !D3; break;
case 0x08: D4 = !D4; break;
default: ;
}
X0_flag = 0; // 清中斷標(biāo)志位
}
}
}
/**********************************************************************
函數(shù)名稱(chēng):void Xint0( void ) Interrupt 0 using 3
功能描述:將中斷標(biāo)志位X0_flag置1,保存P1口的狀態(tài)
函數(shù)作者:張三
創(chuàng)建時(shí)間:2008-3-28
**********************************************************************/
void Xint0( void ) interrupt 0 using 3
{
X0_flag = 1; // 設(shè)置中斷標(biāo)志位
P1_status = P1; // 保存P1口的狀態(tài)
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -