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