51單片機(jī)的中斷函數(shù)
返回值 函數(shù)名
n對(duì)應(yīng)中斷源的編號(hào),中斷編號(hào)告訴中斷器中斷程序的入口地址,它對(duì)應(yīng)著IE寄存器中的使能位,即IE寄存器中的0位對(duì)應(yīng)著外部中斷0。
8051單片機(jī)的中斷源以及終端編號(hào)如下:
中斷編號(hào) | 中斷源 | 入口地址 |
0 | 外部中斷0 | 0003H |
1 | 定時(shí)器/計(jì)數(shù)器0 溢出 | 000BH |
2 | 外部中斷1 | 0013H |
3 | 定時(shí)器/計(jì)數(shù)器1 溢出 | 001BH |
4 | 串行口中斷 | 0023H |
在51系列單片機(jī)中,有的單片機(jī)多達(dá)32哥中斷源,所以終端編號(hào)是0-31.
當(dāng)正在執(zhí)行一個(gè)特定的任務(wù)時(shí),可能有更緊急的事情需要CPU處理,這就涉及到了中斷優(yōu)先級(jí)。高優(yōu)先級(jí)中斷可以中斷正在處理的低優(yōu)先級(jí)中斷程序,因而最好給每種優(yōu)先級(jí)程序分配不同的寄存器組。在C51中可使用using指定寄存器組,using后的變量為0-3的常整數(shù),分別表示51單片機(jī)內(nèi)的4哥寄存器組。中斷函數(shù)的完整語法如下:
unsigned int interruptcnt;
unsigned char second;
void timer0(void) interrupt 1 using 2
if(++interruptcnt==4000)
second++;
interruptcnt=0;
評(píng)論