|
內容:通過不同按鍵,激活不同的外部中斷,以調節P1.7上LED發光二極管的閃爍頻率- #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
- //延時函數
- //x為延時時間,范圍1~65536
- void xDelay(unsigned int x)
- {
- unsigned char y; //聲明局部變量
- for(;x>0;x--) //外層循環
- for(y=110;y>0;y--); //內層循環
- }
- //延時函數
- void Init(void)
- {
- Led1OutValue=LEDOFF; //輸出變量賦初值
- LedFlashSpeed=LEDFLASHSPEED1; //設置默認速度
- IT0=1; //設置外部中斷為邊沿觸發方式
- IT1=1;
- EX0=1; //使能外部中斷
- EX1=1;
- EA=1; //使能所有中斷
- }
- //主函數
- void main(void)
- {
- Init(); //調用初始化函數
- while(1){
- Led1OutValue^=1; //輸出變量狀態取反
- Led1Pin=Led1OutValue; //將輸出變量的值刷新到對應引腳
- xDelay(LedFlashSpeed); //延時一會
- }
- }
- //外部中斷0的中斷服務函數
- void ExInt0(void) interrupt 0
- {
- EX0=0; //失能外部中斷0
- LedFlashSpeed=LEDFLASHSPEED1; //設置速度
- EX0=1; //使能外部中斷0
- }
- //外部中斷1的中斷服務函數
- void ExInt1(void) interrupt 2
- {
- EX1=0; //失能外部中斷1
- LedFlashSpeed=LEDFLASHSPEED2;
- EX1=1; //使能外部中斷1
- }
復制代碼
|
-
-
02實驗二 外部中斷.zip
2016-11-5 20:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
18.62 KB, 下載次數: 6, 下載積分: 黑幣 -5
|