標題:
單片機實驗 外部中斷的應用實驗
[打印本頁]
作者:
xuelongxl
時間:
2016-11-5 20:52
標題:
單片機實驗 外部中斷的應用實驗
內容:通過不同按鍵,激活不同的外部中斷,以調節(jié)P1.7上LED發(fā)光二極管的閃爍頻率
#include "reg52.h"
sbit Led1Pin =P1^7; //定義LED所在的引腳
#define LEDON (0) //使LED亮的電平
#define LEDOFF (1) //使LED滅的電平
#define LEDFLASHSPEED1 (200) //速度1時的延時值
#define LEDFLASHSPEED2 (2000) //速度2時的延時值
unsigned int LedFlashSpeed; //用于存放選擇的速度
bit Led1OutValue; //與LED燈對應的輸出變量,用于刷新到Led1Pin
//延時函數(shù)
//x為延時時間,范圍1~65536
void xDelay(unsigned int x)
{
unsigned char y; //聲明局部變量
for(;x>0;x--) //外層循環(huán)
for(y=110;y>0;y--); //內層循環(huán)
}
//延時函數(shù)
void Init(void)
{
Led1OutValue=LEDOFF; //輸出變量賦初值
LedFlashSpeed=LEDFLASHSPEED1; //設置默認速度
IT0=1; //設置外部中斷為邊沿觸發(fā)方式
IT1=1;
EX0=1; //使能外部中斷
EX1=1;
EA=1; //使能所有中斷
}
//主函數(shù)
void main(void)
{
Init(); //調用初始化函數(shù)
while(1){
Led1OutValue^=1; //輸出變量狀態(tài)取反
Led1Pin=Led1OutValue; //將輸出變量的值刷新到對應引腳
xDelay(LedFlashSpeed); //延時一會
}
}
//外部中斷0的中斷服務函數(shù)
void ExInt0(void) interrupt 0
{
EX0=0; //失能外部中斷0
LedFlashSpeed=LEDFLASHSPEED1; //設置速度
EX0=1; //使能外部中斷0
}
//外部中斷1的中斷服務函數(shù)
void ExInt1(void) interrupt 2
{
EX1=0; //失能外部中斷1
LedFlashSpeed=LEDFLASHSPEED2;
EX1=1; //使能外部中斷1
}
復制代碼
02實驗二 外部中斷.zip
2016-11-5 20:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
18.62 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1