|
以程序?yàn)槔?div id="jtddbnh" class="blockcode">- #include<reg52.h>
-
- sbit led=P3^0;
-
- void main()
- {
- IT0=1; //設(shè)置外部中斷0的觸發(fā)方式為下降沿
- EX0=1; //開(kāi)啟外部中斷0
- //中斷的設(shè)置,首先設(shè)置中斷的觸發(fā)方式,再設(shè)置開(kāi)啟終端,最后開(kāi)啟總中斷。
- IT1=1; //設(shè)置外部中斷1的觸發(fā)方式為下降沿 //順序保證:最后開(kāi)啟總中斷
- EX1=1; //開(kāi)啟外部中斷1
-
- EA =1; //總中斷開(kāi)關(guān)
- while(1)
- {
- P0=0xaa;
- P0=0xff;
- }
- }
-
- void EX0_ISR(void) interrupt 0
- {
- led=~led;
- }
-
- void EX1_ISR(void) interrupt 2 //外部中斷1的中斷在此為2�。。�!
- {
- led=~led;
- }
復(fù)制代碼
對(duì)于中斷的理解:?jiǎn)纹瑱C(jī)中斷和Java、Android中的線(xiàn)程有些像。中斷的使用:首先要聲明、設(shè)置中斷服務(wù),在此以外部中斷0和1作解。首先要設(shè)置中斷的觸發(fā)方式,再設(shè)置中斷的開(kāi)啟,最后再設(shè)置中斷的總開(kāi)關(guān)。IT0=1和IT1=1分別設(shè)置外部中斷0的觸發(fā)方式低電平觸發(fā)也就是下降沿觸發(fā),同理IT1的觸發(fā)方式也是如此。EX0=1和EX1=1是設(shè)置外部中斷0和外部中斷1都開(kāi)啟。EA=1是設(shè)置開(kāi)啟中斷的所有開(kāi)關(guān)。
以上是對(duì)中斷的聲明與設(shè)置。完成以上步驟要寫(xiě)中斷響應(yīng)服務(wù)。即代碼中:
- void EX0_ISR(void) interrupt 0
- {
- led=~led;
- }
-
- void EX1_ISR(void) interrupt 2 //外部中斷1的中斷在此為2!�。�!
- {
- led=~led;
- }
復(fù)制代碼 所謂的低電平觸發(fā)是說(shuō)的單片機(jī)上INT0與INT1變?yōu)榈碗娖綍r(shí)侯。
也就是當(dāng)開(kāi)關(guān)按下的時(shí)候。
我在這一部分中容易犯得錯(cuò)誤就是中斷初始化那三行代碼記的不熟悉。
|
|