中斷:停下來正在做的事,去做別的事。CPU終止正在執行的程序,轉而去做中斷信號發生的程序,執行完此處程序,回到原位置。
中斷源:MCS-51單片機共有五個位置可以產生中斷信號:外部中斷INT0和INT1,定時器/計數器T0和T1,串行中斷。
中斷優先級:當有多個中斷源向CPU發生信號時,處理中斷需要優先級的設置。外部中斷INT0優先級最高,串行中斷優先級最低。需要設置IP寄存器。
中斷源寄存器:TCON和SCON。TCON主要包含了外部中斷觸發方式和外部中斷請求標志。當IT0、IT1為0,則是電平觸發方式(低電平有效);為1時,負跳變觸發方式。IE0、IE1在中斷發出請求后,置為1.中斷完成后,自動清零。
中斷允許寄存器:IE,IE寄存器包含了總開關、外部中斷、串行口中斷、定時器中斷等內容。
中斷優先級控制寄存器:IP。對應位置為1的話,高優先級;為0,低優先級。
-----之前實現跑馬燈都需要設定一個延時函數,現在有了定時器、中斷,不需要設定延時函數
- 用定時器T0的中斷方式實現跑馬燈控制
- #include<reg52.h>
- sbit D1=P2^0;
- void main()
- {
- char A;
- EA=1;
- ET0=1;
- TMOD=0x01;
- TH0=(65536-46083)/256;
- TL0=(65536-46083)%256;
- TR0=1;
- A=0xfe;
- D1=A;
- while(1);
- }
- void Time(void) interrupt 1 using 0
- {
- char A;
- A=A<<1;
- if (A !=0xff)
- {
- A=A|1;
- }
- else
- A=0xfe;
- D1=A;
- TH0=(65536-46083)/256;
- TL0=(65536-46083)%256;
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|