<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機匯編中斷程序

51單片機匯編中斷程序

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



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

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


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

ORG 0003H ;外部中斷0
RETI

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

ORG 0013H ;外部中斷1
RETI

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

ORG 0023H ;串行口中斷
RETI

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


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

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

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

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

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


INT_TIMER0: ;當TF0=1,跳轉到下面的中斷服務(wù)程序中
INC R2 ;使R2自增一
CLR TF0 ;重新置中斷標志位為0
MOV TH0,#(65536-COUNT)/256 ; 重新符初值(因為溢出后變成0了)
MOV TL0,#255
CJNE R2,#5,RETURN ;讓燈明暗相間50ms
MOV R2, #00H
CPL LED ;讓燈明暗交替變化
RETURN:
RETI

END

;程序寫(xiě)完了(并不是很難,不過(guò)就是配置一下定時(shí)器,在中斷中寫(xiě)點(diǎn)處理程序罷了


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

評論


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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>