新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)匯編中斷程序(定時器中斷)

        單片機(jī)匯編中斷程序(定時器中斷)

        作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/201611/315807.htm

        ;首相,介紹一下51單片機(jī)定時計(jì)數(shù)器,51有兩個定時計(jì)數(shù)器,分別為T0,T1,基本一樣,

        ;有一點(diǎn)不同,下面我們介紹定時計(jì)數(shù)器T0

        ;了解8051的timer0中斷的程序?qū)懛?用中斷法產(chǎn)生定時

        ;上面顯示的是proteus仿真圖,下面的是源程序

        ;說明:(源程序中的終端入口地址很重要(這個是固定的),程序中斷時,會在對應(yīng)中斷固定的

        ;入口地址進(jìn)入,因?yàn)橐?guī)定的相隔入口間的空進(jìn)有限,只能用跳轉(zhuǎn)指令跳轉(zhuǎn),最終用RETI強(qiáng)制返回

        ;這個程序把所有的中斷入口地址都寫上了,沒有用到的,用RETI直接屏蔽)

        ;運(yùn)行結(jié)果是使led燈明一下,暗一下。

        COUNT EQU9217;對于11.0592的晶振來說,延時10ms

        LEDEQUP1.1

        ORG0000H

        LJMP RESET;開始時跳轉(zhuǎn)轉(zhuǎn)到初始化程序中

        ORG0003H;外部中斷0

        RETI

        ORG000BH;定時器/計(jì)數(shù)器T0入口地址

        LJMP INT_TIMER0;跳轉(zhuǎn)到定時器/計(jì)數(shù)器中斷服務(wù)程序中去

        ORG0013H;外部中斷1

        RETI

        ORG001BH;定時器/計(jì)數(shù)器T1

        RETI

        ORG0023H ;串行口中斷

        RETI

        ORG0030H

        RESET:

        MOVR0,#00H

        DJNZ R0,$;剛開始,先進(jìn)行少量的延時,是各種工作寄存器準(zhǔn)備好

        CLRLED

        MOVTMOD,#00000001B;設(shè)置定時器T0工作在方式1(16位)

        MOVTH0,#HIGH(65536-COUNT);設(shè)置初值(關(guān)于怎么計(jì)算,很多書上都有)

        MOVTL0,#LOW(65536-COUNT)

        ;MOVTH0,#(65536-COUNT)/256;取高八位數(shù)據(jù)(這是第二種方法)

        ;MOVTL0,#255;取底五位(為最大了)

        CLRTF0;先把溢出標(biāo)志位清零

        SETB TR0;開始計(jì)時

        SETB EA;全局中斷打開

        SETB ET0;定時器/計(jì)數(shù)器T0溢出中斷打開

        MOVR2,#00H;作為定時器累加器使用

        LOOP:SJMP LOOP;在此循環(huán),等待中斷

        INT_TIMER0:;當(dāng)TF0=1,跳轉(zhuǎn)到下面的中斷服務(wù)程序中

        INCR2;使R2自增一

        CLRTF0;重新置中斷標(biāo)志位為0

        MOVTH0,#(65536-COUNT)/256; 重新符初值(因?yàn)橐绯龊笞兂?了)

        MOVTL0,#255

        CJNE R2,#5,RETURN;讓燈明暗相間50ms

        MOVR2, #00H

        CPLLED;讓燈明暗交替變化

        RETURN:

        RETI

        END

        ;程序?qū)懲炅耍ú⒉皇呛茈y,不過就是配置一下定時器,在中斷中寫點(diǎn)處理程序罷了

        ;),



        評論


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

        關(guān)閉
        主站蜘蛛池模板: 拉孜县| 贞丰县| 五河县| 繁峙县| 德令哈市| 青冈县| 武川县| 沙湾县| 明光市| 思茅市| 宣化县| 阿鲁科尔沁旗| 池州市| 牡丹江市| 武平县| 巴彦淖尔市| 齐河县| 芜湖市| 三门县| 乡宁县| 合作市| 衡水市| 五大连池市| 资溪县| 高安市| 莱阳市| 庆元县| 迁安市| 盈江县| 开化县| 藁城市| 平和县| 馆陶县| 鱼台县| 峨边| 吉木乃县| 石台县| 临清市| 德钦县| 鄂温| 顺义区|