⑴ 51單片機INT1中斷電平觸發方式和跳變沿觸發方式有什麼區別
真正的區別在於:
電平觸發方式時,中斷
標志寄存器
不鎖存
中斷請求
信號。也就是說,單片機把每個
機器周期
的S5P2采樣到的外部
中斷源
口線的電平邏輯直接賦值到中斷標志寄存器。標志寄存器對於請求信號來說是透明的。這樣當中斷請求被阻塞而沒有得到及時響應時,將被丟失。換句話說,要使電平觸發的中斷被CPU響應並執行,必須保證
外部中斷
源口
線的
低電平
維持到中斷被執行為止。因此當CPU正在執行同級中斷或更高級中斷期間,產生的外部中斷源(產生低電平)如果在該中斷執行完畢之前撤銷(變為
高電平
)了,那麼將得不到響應,就如同沒發生一樣。同樣,當CPU在執行不可被中斷的指令(如RETI)時,產生的電平觸發中斷
如果時間
太短,也得不到執行。邊沿觸發方式時,中斷標志寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標志寄存器中,直到CPU響應並轉向該
中斷服務程序
時,由硬體自動清除。因此當CPU正在執行同級中斷(甚至是外部中斷本身)或高級中斷時,產生的外部中斷(負跳變)同樣將被記錄在中斷標志寄存器中。在該中斷退出後,將被響應執行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標志。
選擇電平觸發還是邊沿觸發方式應從系統使用外部中斷的目的上去考慮,而不是如許多資料上說的根據中斷源信號的特性來取捨。
⑵ 51單片機為什麼按int1鍵沒反應按int0正常,設計要求是按下後相應LED燈X會閃5下
程序修改如下:
#include<reg52.h>
void Delay10ms(unsigned int);
sbit X=P2^0;
sbit Y=P2^1;
unsigned int i;
int K;
void main()
{
EA=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
X=1;
Y=1;
i=10;
while(1)
{
switch(K)
{
case 1: for(i;i>0;i--)
{
Delay10ms(10);
X=~X;
}
break;
case 2:
for(i;i>0;i--)
{
Delay10ms(10);
Y=~Y;
}
break;
default: break;
}
}
}
void EX_INT0() interrupt 0
{
Delay10ms(1);
K=1;
}
void EX_INT1() interrupt 1
{
Delay10ms(1);
K=2;
}
void Delay10ms(unsigned int c) //誤差 0us
{
unsigned char a,b;
for(;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
⑶ 51單片機INT1中斷電平觸發方式和跳變沿觸發方式有什麼區別
真正的區別在於:
電平觸發方式時,中斷標志寄存器不鎖存中斷請求信號。也就是說,單片機把每個機器周期的S5P2采樣到的外部中斷源口線的電平邏輯直接賦值到中斷標志寄存器。標志寄存器對於請求信號來說是透明的。這樣當中斷請求被阻塞而沒有得到及時響應時,將被丟失。換句話說,要使電平觸發的中斷被CPU響應並執行,必須保證外部中斷源口線的低電平維持到中斷被執行為止。因此當CPU正在執行同級中斷或更高級中斷期間,產生的外部中斷源(產生低電平)如果在該中斷執行完畢之前撤銷(變為高電平)了,那麼將得不到響應,就如同沒發生一樣。同樣,當CPU在執行不可被中斷的指令(如RETI)時,產生的電平觸發中斷如果時間太短,也得不到執行。邊沿觸發方式時,中斷標志寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標志寄存器中,直到CPU響應並轉向該中斷服務程序時,由硬體自動清除。因此當CPU正在執行同級中斷(甚至是外部中斷本身)或高級中斷時,產生的外部中斷(負跳變)同樣將被記錄在中斷標志寄存器中。在該中斷退出後,將被響應執行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標志。
選擇電平觸發還是邊沿觸發方式應從系統使用外部中斷的目的上去考慮,而不是如許多資料上說的根據中斷源信號的特性來取捨。
⑷ 單片機int的取值范圍
單片機int的取值范圍:
int 占兩個位元組 范圍:-32768~+32767
(4)單片機int1擴展閱讀:
單片機是大二計算機專業科目,還有其他的單片機單位,如下:
1、long佔四個位元組 范圍:-2147483648~+2147483647
2、float佔四個位元組 范圍:3.40E+38 ~ +3.40E+38
3、double佔8個位元組 范圍:-1.79E+308 ~ +1.79E+308
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8004單片機,後來隨著Flash rom技術的發展,8004單片機取得了長足的進展,成為應用最廣泛的8位單片機之一。
⑸ 關於51單片機INT1和INT0的用法的一個問題
中斷的優點在於響應的及時性,而你用判斷IO口電位變化來做就不行了,遇到有延時程序和循環語句很難及時對IO的變化作出響應。比如紅外接收,如果不用外部中斷的話,往往不能准確捕捉到紅外接收信號。所以在51紅外接收系統中往往將紅外管的接收信號接到外部中斷0或1.
⑹ 51單片機利用外部中斷INT0和INT1實現編碼器雙向計數功能
分數給的太少了。我只能給你提供一個思路,然後你自已寫程序:
int0和int1分別對應單片機兩個不同的引腳,你要先在單片機復位時在特殊功能寄存器中來配置這兩個引腳的功能,int0和int1的中斷都分別有兩個功能,一個是計數器工作方式,一個是外部中斷工作方式。
你的這個要求是不能用int0和int1兩個引腳的計數器功能的,你只能用外部中斷功能。
然後定義好int0和int1分別在中斷時的跳轉地址,在程序進入中斷之後,分別在不同的中斷程序中對一個寄存器表示的計數器進行加1或者減1操作。
一定記得在處理中斷的時候,要把中斷使能的寄存器標置位關掉,以避免中斷重復執行和錯誤。
⑺ 標准51單片機的外部中斷INT0與INT1的觸發方式與STC15W4K32S4單片機有何不同
一樣的,沒有不同,STC與標准C51 兼容,地址都一樣。
⑻ 單片機INT0和INT1口乾嘛用的
單片機正常工作時,要不停的執行它的程序。在INT0或INT1口輸入一個信號(低電平或下降沿),就可以使單片機臨時停下正在執行的程序,轉去執行預先編好、另外的程序。INT0和INT1,稱為外部中斷申請輸入端。
例如:
斷電保護就只能用INT0或INT1,因為不知道什麼斷電,而且必須在斷電的時候保存一下數據;用普通IO也可以實現,但那樣的話,單片機會浪費很多時間來查詢這個IO了,而且也不是實時。
(8)單片機int1擴展閱讀:
單片機工作的三個條件分別是電源、時鍾晶振、復位。當單片機不能正常工作時,首先就要檢查這三個條件,用電壓表或者萬用表檢測他的電源和接地腳,檢測兩個引腳之間的電壓是不是5V左右;對於時鍾晶體振盪有沒有正常工作,最好用示波器進行檢測,看能否檢測到相應頻率的正弦波脈沖。
⑼ 單片機INT1 INT0和Ei1 EI0的區別
INTx 是單片機的引腳。
EIx 是單片機內部的位。