找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1834|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:704735 發(fā)表于 2020-4-25 22:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
ORG         0000H
        LJMP        MAIN
ORG                0003H
        LJMP        INT_0
ORG                0030H
;==========主程序MAIN函數(shù)====LED流水燈===
MAIN:        MOV                SP, #40H                ;設(shè)置棧底
                MOV      A,#0FEH                 ;送顯示模式字
                MOV                P0,#0FFH                ;P0口等待輸入
                SETB        EA                                ;開(kāi)總中斷
                SETB        EX0                                ;開(kāi)外部中斷0
                SETB        EX1                                ;開(kāi)外部中斷1,可以直接寫MOV IE,#85H
LINE:        MOV      P2,A                  ;點(diǎn)亮二極管 P2=1111 1011B
             ACALL          DELAY500MS
                RL          A           ;左移一位,改變顯示模式字A=1111 1011
                ACALL        DELAY500MS
        SJMP     LINE           ;下面一個(gè)二極管

;==========外部中斷0中斷服務(wù)成程序=====
INT_0:        CLR    EA       ;關(guān)中斷
        PUSH   ACC      ;保護(hù)現(xiàn)場(chǎng)
        PUSH   PSW
        JB     P0.0,EXT0  ;中斷查詢
                JB           P0.1,EXT1
                JB           P0.2,EXT2
                JB           P0.3,EXT3
EXIT:   POP    PSW      ;恢復(fù)現(xiàn)場(chǎng)
        POP    ACC
        SETB   EA
        RETI            ;中斷返回
EXT0:                                        ; EXINT0中斷程序
                MOV           R3, #0FH ;LED亮滅8次
                MOV           A, #0FFH ;送LED滅
ON_OFF0:MOV           P2, A
                LCALL  DELAY500MS
                CPL           A                ;8個(gè)LED亮滅轉(zhuǎn)換
                LCALL  DELAY500MS
                DJNZ   R3, ON_OFF0
                AJMP        EXIT
EXT1:                                        ; EXINT1中斷程序
                MOV           R3, #0FH ;LED亮滅8次
                MOV           A, #0FH ;送LED滅
ON_OFF1:MOV           P2, A
                LCALL  DELAY500MS
                CPL           A                ;8個(gè)LED亮滅轉(zhuǎn)換
                LCALL  DELAY500MS
                DJNZ   R3, ON_OFF1
                AJMP        EXIT
EXT2:                                ;EXINT2中斷程序
                MOV           R3, #0FH ;LED亮滅8次
                MOV           A, #33H ;送LED滅
ON_OFF2:MOV           P2, A
                LCALL  DELAY500MS
                CPL           A                ;8個(gè)LED亮滅轉(zhuǎn)換
                LCALL  DELAY500MS
                DJNZ   R3, ON_OFF2
                AJMP        EXIT
EXT3:                                         ;EXINT3中斷程序
                MOV           R3, #0FH ;LED亮滅8次
                MOV           A, #55H ;送LED滅
ON_OFF3:MOV           P2, A
                LCALL  DELAY500MS
                CPL           A                ;8個(gè)LED亮滅轉(zhuǎn)換
                LCALL  DELAY500MS
                DJNZ   R3, ON_OFF3
                AJMP         EXIT

;==========延時(shí)0.5秒===================
DELAY500MS:                        ;@12.000MHz
        PUSH 30H
        PUSH 31H
        PUSH 32H
        MOV 30H,#2                  ; 總時(shí)間=(3*255*255+215*255+100)*2μs ≈ 500ms
        MOV 31H,#215
        MOV 32H,#10
NEXT:
        DJNZ 32H,NEXT
        DJNZ 31H,NEXT
        DJNZ 30H,NEXT
        POP 32H
        POP 31H
        POP 30H
        RET

        END                        ;匯編程序結(jié)束


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表