C51 中斷服務(wù)程序的寫法
格式:void 函數(shù)名()interrupt 中斷號(hào) using 工作組
{
中斷服務(wù)程序內(nèi)容
}
注意:中斷不能返回任何值,所以前面是 void 后面是函數(shù)名,名字可以自己起,但不要與c語言的關(guān)鍵字相同;中斷函數(shù)不帶任何參數(shù),所以 函數(shù)名后面的() 內(nèi)是 空的,中斷號(hào)是指單片機(jī)的幾個(gè)中斷源的序號(hào)。這個(gè)序號(hào)是單片機(jī)識(shí)別不同中斷的唯一標(biāo)志。所以一定要寫正確。
后面的using 工作組 是指這個(gè)這個(gè)中斷使用單片機(jī)內(nèi)存中 4 個(gè)工作寄存器的哪一組,c51 編譯后會(huì)自動(dòng)分配工作組,因此最后這句話我們通常省略不寫。 c51 中斷寫法實(shí)例
void T1-time() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
上面的意思是定時(shí)器1 的中斷服務(wù)程序,定時(shí)器1的中斷服務(wù)序號(hào)是3 ,因此我們要寫成 interrupt 3 ,服務(wù)程序的內(nèi)容是給 兩個(gè)初值寄存器裝入新值。。
寫中斷前的準(zhǔn)備
1TMOD 賦值確定工作方式。T0還是T1的工作方式。
2計(jì)算初值裝入 TH0 TL0 或者TH1 TL1
3中斷方式時(shí) ,對(duì) IE 賦值,開放中斷。
4使 TR0 和 TR1 置位,啟動(dòng)定時(shí)器/計(jì)數(shù)器定時(shí)/計(jì)數(shù)。