|
中斷基礎(chǔ)知識
中斷:停下來正在做的事,去做別的事。CPU終止正在執(zhí)行的程序,轉(zhuǎn)而去做中斷信號發(fā)生的程序,執(zhí)行完此處程序,回到原位置。
中斷源:MCS-51單片機共有五個位置可以產(chǎn)生中斷信號:外部中斷INT0和INT1,定時器/計數(shù)器T0和T1,串行中斷。
中斷優(yōu)先級:當(dāng)有多個中斷源向CPU發(fā)生信號時,處理中斷需要優(yōu)先級的設(shè)置。外部中斷INT0優(yōu)先級最高,串行中斷優(yōu)先級最低。需要設(shè)置IP寄存器。
中斷源寄存器:TCON和SCON。TCON主要包含了外部中斷觸發(fā)方式和外部中斷請求標(biāo)志。當(dāng)IT0、IT1為0,則是電平觸發(fā)方式(低電平有效);為1時,負(fù)跳變觸發(fā)方式。IE0、IE1在中斷發(fā)出請求后,置為1.中斷完成后,自動清零。
中斷允許寄存器:IE,IE寄存器包含了總開關(guān)、外部中斷、串行口中斷、定時器中斷等內(nèi)容。
中斷優(yōu)先級控制寄存器:IP。對應(yīng)位置為1的話,高優(yōu)先級;為0,低優(yōu)先級。
-----之前實現(xiàn)跑馬燈都需要設(shè)定一個延時函數(shù),現(xiàn)在有了定時器、中斷,不需要設(shè)定延時函數(shù)
- 用定時器T0的中斷方式實現(xiàn)跑馬燈控制
- #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;
- }
復(fù)制代碼
|
評分
-
查看全部評分
|