新聞中心

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

        51單片機(jī)匯編中斷程序

        作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏



        首先,介紹一下51單片機(jī)定時(shí)計(jì)數(shù)器,51有兩個(gè)定時(shí)計(jì)數(shù)器,分別為T(mén)0,T1,基本一樣,;有一點(diǎn)不同,下面我們介紹定時(shí)計(jì)數(shù)器T0
        ;了解8051的timer0中斷的程序?qū)懛?用中斷法產(chǎn)生定時(shí)
        ;上面顯示的是proteus仿真圖,下面的是源程序
        ;說(shuō)明:(源程序中的中斷入口地址很重要(這個(gè)是固定的),程序中斷時(shí),會(huì)在對(duì)應(yīng)中斷固定的
        ;入口地址進(jìn)入,因?yàn)橐?guī)定的相隔入口間的空進(jìn)有限,只能用跳轉(zhuǎn)指令跳轉(zhuǎn),最終用RETI強(qiáng)制返回
        ;這個(gè)程序把所有的中斷入口地址都寫(xiě)上了,沒(méi)有用到的,用RETI直接屏蔽)
        ;運(yùn)行結(jié)果是使led燈明一下,暗一下。

        COUNT EQU 9217;對(duì)于11.0592的晶振來(lái)說(shuō),延時(shí)10ms
        LED EQU P1.1


        ORG 0000H
        LJMP RESET ;開(kāi)始時(shí)跳轉(zhuǎn)轉(zhuǎn)到初始化程序中

        ORG 0003H ;外部中斷0
        RETI

        ORG 000BH ;定時(shí)器/計(jì)數(shù)器T0入口地址
        LJMP INT_TIMER0 ;跳轉(zhuǎn)到定時(shí)器/計(jì)數(shù)器中斷服務(wù)程序中去

        ORG 0013H ;外部中斷1
        RETI

        ORG 001BH ;定時(shí)器/計(jì)數(shù)器T1
        RETI

        ORG 0023H ;串行口中斷
        RETI

        ORG 0030H
        RESET:
        MOV R0,#00H
        DJNZ R0,$ ;剛開(kāi)始,先進(jìn)行少量的延時(shí),是各種工作寄存器準(zhǔn)備好
        CLR LED


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

        MOV TH0,#HIGH(65536-COUNT);設(shè)置初值(關(guān)于怎么計(jì)算,很多書(shū)上都有)
        MOV TL0,#LOW(65536-COUNT)
        ;MOV TH0,#(65536-COUNT)/256;取高八位數(shù)據(jù)(這是第二種方法)
        ;MOV TL0,#255 ;取底五位(為最大了)

        CLR TF0 ;先把溢出標(biāo)志位清零
        SETB TR0 ;開(kāi)始計(jì)時(shí)
        SETB EA ;全局中斷打開(kāi)
        SETB ET0 ;定時(shí)器/計(jì)數(shù)器T0溢出中斷打開(kāi)

        MOV R2,#00H ;作為定時(shí)器累加器使用

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


        INT_TIMER0: ;當(dāng)TF0=1,跳轉(zhuǎn)到下面的中斷服務(wù)程序中
        INC R2 ;使R2自增一
        CLR TF0 ;重新置中斷標(biāo)志位為0
        MOV TH0,#(65536-COUNT)/256 ; 重新符初值(因?yàn)橐绯龊笞兂?了)
        MOV TL0,#255
        CJNE R2,#5,RETURN ;讓燈明暗相間50ms
        MOV R2, #00H
        CPL LED ;讓燈明暗交替變化
        RETURN:
        RETI

        END

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


        關(guān)鍵詞: 51單片機(jī)匯編中斷程

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 北票市| 吴忠市| 信阳市| 集贤县| 新河县| 北流市| 海门市| 图木舒克市| 廊坊市| 阿拉善盟| 巨鹿县| 长兴县| 怀化市| 利川市| 昭觉县| 保靖县| 万年县| 长兴县| 芜湖市| 乌审旗| 延川县| 宜城市| 盘锦市| 锦屏县| 沁阳市| 哈尔滨市| 岳西县| 玉屏| 上饶市| 南宫市| 新兴县| 金昌市| 大悟县| 健康| 镇平县| 绥宁县| 武强县| 博野县| 阿拉善右旗| 兴国县| 马山县|