新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機內部定時/計數器和中斷系統

        單片機內部定時/計數器和中斷系統

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

        三、程序設計

        定時器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 中斷為優先中斷。

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

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

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

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

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

        (17)如果count 增長到10。

        (18)count 變量清0。

        (19)led 輸出取反。

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄梅县| 鹰潭市| 乐昌市| 金堂县| 苏尼特右旗| 航空| 九寨沟县| 囊谦县| 上饶县| 垫江县| 克什克腾旗| 古浪县| 综艺| 安乡县| 丰都县| 洛川县| 石家庄市| 舟山市| 沂源县| 樟树市| 花垣县| 金乡县| 永州市| 惠安县| 洛宁县| 汤原县| 云南省| 金门县| 盐山县| 潮州市| 漳浦县| 清原| 开江县| 利辛县| 库车县| 赤峰市| 米易县| 甘泉县| 双城市| 株洲县| 宣威市|