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

QQ登錄

只需一步,快速開始

搜索
查看: 3152|回復(fù): 0
收起左側(cè)

AT89C51單片機(jī)中斷實(shí)驗(yàn) 匯編語(yǔ)言程序

[復(fù)制鏈接]
ID:948980 發(fā)表于 2021-7-4 12:53 | 顯示全部樓層 |閱讀模式
(1)基于8051內(nèi)核單片機(jī)(如at89C51等)進(jìn)行實(shí)驗(yàn)
(2)模擬有急救車通過(guò)的交通燈控制實(shí)驗(yàn):允許急救車優(yōu)先通過(guò)。當(dāng)有急救車到達(dá)時(shí),兩個(gè)方向上的紅燈亮(可以發(fā)光二極管模擬),以便讓急救車通過(guò),假定急救車通過(guò)路口的時(shí)間為10秒,急救車通過(guò)后,交通燈恢復(fù)中斷前的狀態(tài)。實(shí)驗(yàn)以按鍵開關(guān)為中斷申請(qǐng),表示有急救車通過(guò)。
(3)uvision2/4軟件平臺(tái)上編寫、調(diào)試程序。
(4)Proteus軟件平臺(tái)上仿真。
本實(shí)驗(yàn)中斷處理程序的應(yīng)用,最主要的地方是如何保護(hù)進(jìn)入中斷前的狀態(tài),使得中斷程序執(zhí)行完畢后能回到交通燈中斷前的狀態(tài)。要保護(hù)的地方,除了累加器ACC、標(biāo)志寄存器PSW外,還要注意:第一是主程序中的延時(shí)程序和中斷處理程序中的延時(shí)程序不能混用,本實(shí)驗(yàn)給出的程序中,主程序延時(shí)用的是R5、R6、R7,中斷延時(shí)用的是R3、R4和新的R5。第二,主程序中每執(zhí)行一步經(jīng)74LS273的端口輸出數(shù)據(jù)的操作時(shí),應(yīng)先將所輸出的數(shù)據(jù)保存到一個(gè)單元中。因?yàn)檫M(jìn)入中斷程序后也要執(zhí)行往74LS273端口輸出數(shù)據(jù)的操作,中斷返回時(shí)如果沒有恢復(fù)中斷前74LS273端口鎖存器的數(shù)據(jù),則顯示往往出錯(cuò),回不到中斷前的狀態(tài)。還要注意一點(diǎn),主程序中往端口輸出數(shù)據(jù)操作要先保存再輸出,例如有如下操作:
    MOV  A,#0F0H     (0)
    MOVX @R1,A       (1)
    MOV  SAVE,A      (2)
程序如果正好執(zhí)行到(1)時(shí)發(fā)生中斷,則轉(zhuǎn)入中斷程序,假設(shè)中斷程序返回主程序前需要執(zhí)行一句MOV  A,SAVE指令,由于主程序中沒有執(zhí)行(2),故SAVE中的內(nèi)容實(shí)際上是前一次放入的而不是(0)語(yǔ)句中給出的0F0H,顯示出錯(cuò),將(1)、(2)兩句順序顛倒一下則沒有問(wèn)題。發(fā)生中斷時(shí)兩方向的紅燈一起亮10秒,然后返回中斷前的狀態(tài)。
     
圖3.1  主程序框圖     
圖3.2 中斷程序框圖
    實(shí)驗(yàn)步驟
74LS273的輸出O0~O7接發(fā)光二極管L1~L8,74LS273的片選CS273\接片選信號(hào)CS2,此時(shí)74LS273的片選地址為CFB0H~CFB7H之間任選。單脈沖輸出端P-接CPU板上的INT0。
    實(shí)驗(yàn)數(shù)據(jù)分析及處理
燒錄
程序運(yùn)行結(jié)果
仿真結(jié)果
NAME    T5                    //中斷控制實(shí)驗(yàn)
OUTPORT EQU    0CFB0H         //端口地址
SAVE    EQU    55H            //保存從端口cfa0輸出的數(shù)據(jù)
CSEG    AT     0000H
        LJMP   START
CSEG AT 0003H
        LJMP   INT
CSEG AT 0100H
START:  SETB   IT0
        SETB   EX0
        SETB   EA
        MOV    A,#11H        //置首顯示碼
        MOV    SAVE,A        //保存
        ACALL  DISP          //顯示輸出
        ACALL  DE3S          //延時(shí)3秒
LLL:    MOV    A,#12H        //東西路口綠燈亮,南北路口紅燈亮
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE10S         //延時(shí)10秒
        MOV    A,#10H        //東西路口綠燈滅
        MOV    SAVE,A
        ACALL  DISP  
        MOV    R2,#05H       //東西路口黃燈閃爍5次
TTT:    MOV    A,#14H
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE02S
        MOV    A,#10H
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE02S
        DJNZ   R2,TTT
        MOV    A,#11H       //紅燈全亮
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE02S        //延時(shí)0.2秒
        MOV    A,#21H       //東西路口紅燈亮,南北路口綠燈亮
        MOV    SAVE, A
        ACALL  DISP  
        ACALL  DE10S        //延時(shí)10秒
        MOV    A,#01H       //南北路口綠燈滅
        MOV    SAVE,A
        ACALL  DISP  
        MOV    R2,#05H      //南北路口黃燈閃爍5次
GGG:    MOV    A,#41H
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE02S
        MOV    A,#01H
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE02S
        DJNZ   R2,GGG
        MOV    A,#11H      //紅燈全亮
        MOV    SAVE,A
        ACALL  DISP  
        ACALL  DE02S       //延時(shí)0.2秒
        JMP    LLL         //轉(zhuǎn)LLL循環(huán)
DE10S:  MOV    R5,#100     //延時(shí)10秒
        JMP    DE1
DE3S:   MOV    R5,#30      //延時(shí)3秒
        JMP    DE1
DE02S:  MOV    R5,#02      //延時(shí)0.2秒
DE1:    MOV    R6,#200
DE2:    MOV    R7,#126
DE3:    DJNZ   R7,DE3
        DJNZ   R6,DE2
        DJNZ   R5,DE1
        RET
INT:    CLR    EA
PUSH   ACC         //中斷處理
        PUSH   PSW
        MOV    A,R5
        PUSH   ACC
        MOV    A,#11H     //紅燈全亮,綠、黃燈全滅
        ACALL  DISP  
DEL10S: MOV    R3,#100     //延時(shí)10秒
DEL1:   MOV    R2,#200
DEL2:   MOV    R5,#126
DEL3:   DJNZ   R5,DEL3
        DJNZ   R4,DEL2
        DJNZ   R3,DEL1
        MOV    A,SAVE     //取SAVE中保存數(shù)據(jù)輸出到cfa0端口
        ACALL  DISP  
        POP    ACC        //出棧
        MOV    R5,A
        POP    PSW
        POP    ACC
        SETB   EA        //允許外部中斷
        RETI
DISP:   MOV    DPTR,#OUTPORT
CPL    A
        MOV   P1,A
        RET
END
以上的Word格式文檔51黑下載地址:
實(shí)驗(yàn)4(1).docx (348.11 KB, 下載次數(shù): 4)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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