51單片機(二):?jiǎn)纹瑱C內部定時(shí)/計數器和中斷系統
三、程序設計
定時(shí)器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. 程序詳細說(shuō)明:
(1)頭文件包含。程序接下來(lái)調用的P0_0 就是該頭文件中定義好的一個(gè)寄存器地址。在對單片機內部的寄存器操作之前,應申明其來(lái)處,有興趣的讀者可以看看AT89X52.h 文件中的內容。
(2)宏定義led,便于直觀(guān)理解也便于程序修改,將P0_0 口命名為led,這樣在程序中就可以用led代替P0_0 口進(jìn)行操作。
(3)定義一個(gè)8 位的全局變量。
(4)主函數入口。主函數不傳遞參數也不返回值。
(5)設定定時(shí)器0 工作在模式1,為16 位的計數器。
(6)定時(shí)器高8 位賦初值。對256 取整。
(7)定時(shí)器低8 位賦初值。對256 取余。
(8)開(kāi)總中斷。
(9)開(kāi)定時(shí)器0 中斷。
(10)定時(shí)器0 啟動(dòng),開(kāi)始計數。
(11)設置開(kāi)定時(shí)器0 中斷為優(yōu)先中斷。
(12)死循環(huán),等待中斷。
(13)定時(shí)器0 中斷服務(wù)函數入口。
(14)定時(shí)器高8 位賦初值。對256 取整。
(15)定時(shí)器低8 位賦初值。對256 取余。
(16)對變量count 進(jìn)行加1 操作。
(17)如果count 增長(cháng)到10。
(18)count 變量清0。
(19)led 輸出取反。
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理
評論