首先你要寫中斷函數(shù)
10年積累的成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有路北免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
然后在主程序中像調(diào)用子函數(shù)一樣調(diào)用就可以了
舉個例子吧
#define uchar unsigned char
#define uchar unsigned char
sbit D1=P1^0;
uchar aa;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(aa==20)
{
D1=~D1;
aa=0;
}
}
}
void T0time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
形式如下:
void 中斷名(void) inerrupt 中斷號 using 工作寄存器組
比如外部中斷0
void ext0(void) interrupt 0 using 1 //后面的using 1可以省略,缺省為0
定時器1
void t1isr() interrupt 3
擴展資料:
單片機內(nèi)部結(jié)構(gòu)
1、CPU
它的名字沒有改,還是稱為CPU(Central Processing Unit)。它是單片機的核心部件,包括運算器和控制器。
運算器既是算術(shù)邏輯單元ALU(Arithmetic logic Unit),其功能是進(jìn)行算術(shù)運算和邏輯運算。
控制器一般由指令寄存器、指令譯碼器、時序電路和控制電路組成。其作用是完成取指令、將指令譯碼形成各種微操作并執(zhí)行指令,同時控制計算機的各個部件有條不紊地工作。
2、單片機內(nèi)部結(jié)構(gòu)之一ROM
“硬盤”,改了名字,稱為程序存儲器,也叫只讀存儲器。用ROM(Read only memery)表示。其作用和計算機的硬盤差不多,用來存放用戶編寫的程序。特點是:掉電后不會丟失數(shù)據(jù)(程序)。
1.void(中斷函數(shù)返回類型(空型)) Time1 (中斷函數(shù)名)(void(參數(shù)類型) interrupt 3 (中斷號)
2: 中斷條件發(fā)生時執(zhí)行中斷,比如void Time1(void) interrupt 3 是定時器1定時時間到發(fā)生中斷,中斷函數(shù)放在那里無所謂
3:void PxInt0(void) interrupt 0 中斷名為PxInt0的0號中斷
void PxInt1(void) interrupt 2 中斷名為PxInt1的2號中斷
void time0_int(void) interrupt 1 中斷名為time0_int的1號中斷
void time1_int(void) interrupt 3 中斷名為time1_int的3號中斷
4:中斷的代碼是你想中斷執(zhí)行的工作,中斷的代碼是根據(jù)任務(wù),需要你自己寫的
51的C語言中斷是函數(shù),那這個中斷是否可以調(diào)用?如果能,怎么調(diào)用?
只從計算機原理來講,是可以的。
理論上,中斷函數(shù)也是一個程序的入口,只要把程序指令指針指向這個中斷的入口地址,
就可以執(zhí)行相應(yīng)的代碼,從這個角度來講,是可操作的。
但在實際問題處理中,通常不行,因為中斷是提供給系統(tǒng)處理應(yīng)急事件的,
并非設(shè)計來作為常規(guī)函數(shù)呼叫。
如果只是想要使用中斷處理中的某些功能,可把那些功能封裝為獨立的函數(shù),
供給中斷處理和一般流程來調(diào)用。
應(yīng)用程序直接調(diào)用中斷,是有違中斷設(shè)計的初衷的,
不建議這樣使用,易導(dǎo)致原本正常的流程的莫名異常,
因為調(diào)用中斷處理,會占用中斷的相關(guān)資源,導(dǎo)致正常的中斷無法執(zhí)行,出現(xiàn)異常。