新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 從定時器開始說中斷

從定時器開始說中斷

作者: 時間:2013-04-10 來源:網(wǎng)絡 收藏

#i nclude "reg51.h"

void initTimer(void)

{

TMOD=0x1;

TH0=0xd8;

TL0=0xf0;

}

void timer0(void) interrupt 1

{

TH0=0xd8;

TL0=0xf0;

//add your code here.

}

void main(void)

{

initTimer();

TR0=1;

ET0=1;

EA=1;

while(1);

}

上面的代碼是12M晶振下定時10000US的程序,也就是10MS發(fā)生一次中斷。initTimer()是初始化函數(shù),設置定時值和中斷的。

10000US在12M晶振下就是100000個機器周期了,65536-100000=55536=D8F0(十六進制),所以上面就是TH0=0xd8;TL0=0xf0;

void timer0(void) interrupt 1就是0,我們不需要理會匯編的中斷先,只需要知道當中斷來臨的時候,程序就自動跳到timer0(void)這個函數(shù)運行了,運行完后就會回到原來中斷處繼續(xù)執(zhí)行原先的程序。

interrupt是C51中的關鍵字,后面跟有interrupt的函數(shù)都是,那么對應哪個中斷呢?請大家參考:一開始為大家介紹的 Keil Software –Cx51 編譯器用戶手冊 中文完整版,(名字太長了,以后叫KEIL手冊)的第125頁。

中斷號 中斷地址

0 0003H

1 000BH

2 0013H

3 001BH

4 0023H

5 002BH

6 0033H

7 003BH

8 0043H

9 004BH

10 0053H

11 005BH

12 0063H



評論


相關推薦

技術專區(qū)

關閉