-
定時中斷,外部中斷?
-
中斷共有5種型別,優先順序從上到下如下:
1)函式名()interrupt 0 {}對應外部中斷0;
2)函式名()中斷1{}對應定時器計數器0中斷;
3)函式名()中斷2{}對應外部中斷1;
4)函式名()中斷3{}對應定時器計數器1中斷;
5)函式名()interrupt 4{}對應串列埠中斷;
51 MCU 是與英特爾 8031 命令系統相容的所有 MCU 的統稱。 該系列微控制器的始祖是英特爾的8004微控制器,後來隨著Flash ROM技術的發展,8004微控制器取得了長足的進步,成為應用最廣泛的8位微控制器之一,其代表機型是ATMEL的AT89系列,廣泛應用於工業測控系統。
許多公司已經推出了51系列的相容型號,這些型號將在未來很長一段時間內擁有很大的市場。 51微控制器是微控制器的基本入門級微控制器,或者說是應用最廣泛的一種。 需要注意的是,51系列微控制器一般不具備自程式設計能力。
-
計時器是在經過多少個週期後執行的程式。
中斷在程式被中斷時中斷,在沒有中斷請求時不影響它。
當出現中斷或中斷優先順序高於正在執行的程式時,產生中斷並進入中斷程式。
-
px0(, 外部中斷 0 優先順序位;
pt0(, 定時計數器 t0 優先順序設定位;
px1(, 外部中斷 0 優先順序設定位;
pt1(, 定時計數器 T1 優先順序設定位;
ps(,串列埠優先順序設定位;
pt2 ( 定時計數器 T2 優先順序設定位。
以這種方式劃分優先順序。
-
定時器是一種以固定頻率增加或減少固定暫存器的硬體操作,中斷是一種為意外事件提供的處理。
當定時器增加或減少到某個臨界值(通常是溢位)時,會產生中斷訊號,為中斷響應器提供觸發源。
程式接收到中斷源的觸發訊號後,在當前指令完成後,硬體自動將程式指標指向中斷響應器,從而執行中斷響應程式。
-
計時器僅與計時計數中斷有關。 即當定時計數值達到最大值時,定時器溢位,導致中斷,即進入中斷程式。
-
特點:快速和準時。
優點就是功能。
缺點:如果處理不當,程式容易跑路,變數莫名其妙地修改。
-
傳統微控制器中斷 5. 它包括兩個外部中斷(int0、int1)、三個定時中斷(t2、t1、t0)和乙個序列中斷(uart)。
特點:簡單、直觀、易於控制。
優點:快速響應、電平和時鐘觸發中斷、計數中斷、定時中斷、序列資料中斷、睡眠中斷、喚醒模式中斷。
缺點:只能使用單任務機制,程式只能按順序執行,缺乏靈活性,只能使用中斷功能實時處理一些短任務,在比較複雜的應用中使用極不方便。
-
優點,反應靈敏且準確。
缺點是該程式容易出錯。
-
51微控制器12M晶振,定時計數器時鐘為1us,所以單個16位定時計數器可以達到最大定時時間:65536*1us=,所以在12m晶體振盪器的情況下,用單個16位定時器無法獲得100ms的定時。 在這種情況下,您可以用較低的頻率替換晶體振盪器或使用以下兩種軟體方法:
1.定時器累積。 計數值用於記錄計時器中的中斷次數。 例如,如果將定時器設定為中斷 10ms,則使用計數值記錄定時器的中斷次數,並在每個中斷計數中加 1,這樣當計數值為 10 時,定時器將被中斷 10 次,即 100ms,然後將計數值清除為 0 並重新計數。
這種方法會有乙個小誤差,因為操作計數值需要一點時間,比較短。
串聯的定時器計數器。 乙個用作計時器,乙個用作計數器。 當定時器中斷時,輸出乙個脈衝作為計數器的計數脈衝,設定計數值,當計數已滿時中斷計數。 總定時時間的原理與上述相同。
至於計時計數器的操作,樓上的兩人說得很清楚。
-
定時器需要設定乙個初始值,然後在定時器啟動時,定時器會在每個週期內將這個初始值增加 1,直到溢位,並產生定時中斷。
如果微控制器是12m晶體振盪器,定時器會加1到1ms,如果不知道,可以看看微控制器各個週期之間的關係。
下面以某個定時器t0為例,介紹初始值的設定。
th0=(65536-100)/256;
tl0=(65536-100)%256;
Th0 和 TL0 共同組成乙個 16 位定時器,其初始值在溢位前設定為 100,因此在 100ms 後,定時器會溢位並產生中斷。
我不會談論如何設定定時器工作模式,如何啟動定時器和中斷。
-
當總數達到ffffh時,計時器被打斷! 那麼你想讓它計數 10,000,你是否使用 ffff(十六進製)減去 10,000(十進位)作為計數的初始值? th0=-(10000/256);tl0=-(10000%256) 與 FFFF(十六進製)減去 10000(十進位)相同。
從th0=-(10000 256); tl0=-(10000%256) 開始計數,直到 10000 剛滿。 這相當於從 ffff(十六進製)中減去 10,000(十進位數字!! 寫起來比較容易,不算!!
只需檢視原始程式碼和補碼即可。 正數的補碼是對應的二進位數,符號位為零,負數的補碼是其絕對值對應的二進位數,二進位數逐位反轉再加一,符號位為一。 如果乙個無符號數字不考慮符號,那麼結果與從 FFFF 中減去其絕對值相同。
-
我找不到包含檔案,我無法在 51 個微控制器中使用 scanf 和 printf!
-
還行。 這取決於您的物件是否掃瞄低電平輸出。
ex0=1;
it0=1;
ea=1;
-
是的,將計時器處置分配給 ff,然後啟動計時器,外部計數。
-
當出現以下任一情況時,中斷響應被阻塞,即中斷程式不會進入。
1)正在發生同級別或同級別的服務中斷;
2)當前機器週期不是當前指令的最後乙個週期,在指令執行之前不會響應中斷請求;
3)RETI或對IE和IP的讀寫操作,至少要執行一條其他指令才能響應;
在每個機器週期的 S5P2 期間,CPU 依次對中斷源進行取樣,在上述情況下,中斷請求被鎖定在各自的中斷標誌中,然後按順序查詢下乙個機器週期。 也就是說,在ti被清除的地方,同級中斷不會被中斷,這個中斷在退出後將不再響應。
還有乙個小問題,滅弧程式應該在開始時執行if(ri)條件判斷,否則可能會讀取垃圾資料。
首先,建議您使用串列埠。
1.簡單的硬體介面:找一本MAX232手冊,裡面有完整的電平轉換介面電路。 >>>More
一點也不矛盾。 微控制器每個埠的用途都不一樣,結構也不同,你說LED的MA電平的電流可以讓它更亮,指的是額定亮度,不同的功率有不同的亮度,你不能把1mm的貼片和10mm的貼片比較,你能理解嗎? 如果要在 P2 埠使用 LED,有兩種方法。 >>>More