標籤:
寫了半天掉線了。。。
不寫了上定義。。。
什麼叫中斷中斷是指CPU在執行當前程式的過程中,由於某種隨機出現的外設請求或CPU內部的例外狀況事件,使CPU暫停正在執行的程式而轉去 執行相應的服務處理常式;當服務處理常式運行完畢後,CPU再返回到暫停處繼續執行原來的程式。51單片機的中斷80c51提供有5個中斷源,分別為:2個外部中斷,2個定時/計數器中斷,1個串口發送/接收中斷。並且具有2個中斷優先順序,可以實現2級中斷服務程式嵌套。
首先要弄中斷設定 ,中斷原理圖如下:
以 設定INT0為例:IT0=1;EX0=1;
最後開啟總中斷 EA=1;
:
2個外部中斷分別接 p3.2 p3.3 即開關K3 K4 ,也就是說按開關K3轉到外部中斷0程式,按開關K4轉到外部中斷1程式
/******************************************************************************** 實 驗 名 : 外部中斷實驗* 使用的IO : 外部中斷0使用P3.2 外部中斷1使用P3.3 LED使用P2* 實驗效果 : 按K3 LED左移 按K4 LED右移* 注 意 :*******************************************************************************/#include <reg52.h>#include <intrins.h>#define GPIO_LED P2#define GPIO_DIG P0#define GPIO_KEY P1#define uint unsigned int#define uchar unsigned charvoid Delay10ms();void IntConfiguration();sbit K3=P3^2;sbit K4=P3^3;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uchar code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar Value=0;void main(){uint n=10;IntConfiguration();GPIO_LED=0xfe;while(1){if(Value)GPIO_LED=_crol_(GPIO_LED,1);elseGPIO_LED=_cror_(GPIO_LED,1);while(n--)Delay10ms();n=10;}}void Delay10ms(){ uchar i=38,j=130; while(i--) while(j--);}void IntConfiguration(){//設定INT0IT0=1;EX0=1;//設定INT1IT1=1;EX1=1;//開啟總中斷EA=1;}void Int0() interrupt 0{Delay10ms();if(K3==0)Value=1;}void Int1() interrupt 2{Delay10ms();if(K4==0)Value=0;}
51單片機第五彈---外部中斷