新聞中心

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

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

作者: 時間:2012-07-27 來源:網絡 收藏

三、程序設計

器0 應用測試程序( 控制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. 程序詳細說明:

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

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

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

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

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

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

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

(8)開總

(9)開定時器0 。

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

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

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

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

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

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

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

(17)如果count 增長到10。

(18)count 變量清0。

(19)led 輸出取反。

塵埃粒子計數器相關文章:塵埃粒子計數器原理


評論


相關推薦

技術專區(qū)

關閉