新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(二):單片機內(nèi)部定時/計數(shù)器和中斷系統(tǒng)

51單片機(二):單片機內(nèi)部定時/計數(shù)器和中斷系統(tǒng)

作者: 時間:2012-07-27 來源:網(wǎng)絡(luò) 收藏

三、程序設(shè)計

器0 應(yīng)用測試程序( 控制D1 閃爍)。

#includeAT89X52.h> (1)

#define led P0_0 (2)

unsigned char count=0; (3)

void main(void) (4)

{

TMOD=0X01; (5)

TH0=(65536-50000)/256; (6)

TL0=(65536-50000)%256; (7)

EA=1; (8)

ET0=1; (9)

TR0=1; (10)

PT0=1; (11)

while(1) ; (12)

}

void timer0(void) interrupt 1 (13)

{

TH0=(65536-50000)/256; (14)

TL0=(65536-50000)%256; (15)

count++; (16)

if(count==10) (17)

{

count=0; (18)

led=!led; (19)

}

}

1. 程序詳細(xì)說明:

(1)頭文件包含。程序接下來調(diào)用的P0_0 就是該頭文件中定義好的一個寄存器地址。在對的寄存器操作之前,應(yīng)申明其來處,有興趣的讀者可以看看AT89X52.h 文件中的內(nèi)容。

(2)宏定義led,便于直觀理解也便于程序修改,將P0_0 口命名為led,這樣在程序中就可以用led代替P0_0 口進行操作。

(3)定義一個8 位的全局變量。

(4)主函數(shù)入口。主函數(shù)不傳遞參數(shù)也不返回值。

(5)設(shè)定器0 工作在模式1,為16 位的

(6)器高8 位賦初值。對256 取整。

(7)定時器低8 位賦初值。對256 取余。

(8)開總。

(9)開定時器0 。

(10)定時器0 啟動,開始計數(shù)。

(11)設(shè)置開定時器0 為優(yōu)先中斷。

(12)死循環(huán),等待中斷。

(13)定時器0 中斷服務(wù)函數(shù)入口。

(14)定時器高8 位賦初值。對256 取整。

(15)定時器低8 位賦初值。對256 取余。

(16)對變量count 進行加1 操作。

(17)如果count 增長到10。

(18)count 變量清0。

(19)led 輸出取反。

塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉