huerry

    1. 这是个参考的汇编程序,不会呢,呜呜呜:Sad:                                         FMQ        EQU        P1.0                ;蜂鸣器                 QR        EQU        P1.3                ;前红灯                 QY        EQU        P1.1                ;前黄灯                 QG        EQU        P1.2                ;前绿灯                 HR        EQU        P2.2                ;后红灯                 HY        EQU        P2.0                ;后黄灯                 HG        EQU        P2.1                ;后绿灯                        ZR        EQU        P1.4                ;左红灯                 ZY        EQU        P1.5                ;左黄灯                 ZG        EQU        P1.6                ;左绿灯                                YR        EQU        P2.5                ;右红灯                 YY        EQU        P2.4                ;右黄灯                                YG        EQU        P2.3                ;右绿灯                 SWITCH1        EQU        P2.6                ;                                SWITCH2        EQU        P2.7                ;                                 DAT        EQU        60H                ;显存                                 ORG  0000H                  LJMP START                  ORG  0003H                  LJMP D_X                        ;外部中断0,东西向紧急按键                  ORG  000BH                  RETI                                ;                  ORG  0013H                  LJMP N_B                        ;外部中断1,南北向紧急按键                  ORG  001BH                  RETI                  ORG  0023H                  RETI                  ORG  0040H                        ;定位 START:                                 MOV        TCON,        #5H                ;外部中断为下降沿触发                 SETB        EX0                        ;                 SETB        EX1                        ;开外部中断                 SETB        EA                        ;开总中断                 ;IO口初始化                 MOV   P0,#0FFH                 MOV   P1,#0FFH                        ;                 MOV   P2,#0FFH                       ;                 MOV   P3,#0FFH                        ;                 MOV        DAT,        #25H                ;                                 AUTCLK:                 MOV        P1,        #0FFH                ;                 MOV        P2,        #0FFH                ;                   MOV        DAT,        #30H                ;写入每一通路的通行时间                 CLR        QG                        ;南北向绿灯亮                 CLR        HG                        ;                 CLR        ZR                        ;东西向红灯亮                 CLR        YR                        ;                 MOV        A,        DAT                ;                 MOV        R2,        #25                ;写入时间值 A1:                 MOV        R1,        #220                ; A2:                 ACALL        BCD                        ;BCD调整                 ACALL        DISPCLK                        ;显示                 ACALL        DEL1MS                        ;延时                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 DJNZ        R1,        A2                ;                 SETB        FMQ                        ;                        MOV        A,        DAT                ;完成数字的减1操作                 ADD        A,        #99H                ;                 DA        A                        ;                 MOV        DAT,        A                ;调整好的数字送显存                 DJNZ        R2,        A1                ;                 ;最后5秒黄灯闪                 MOV        P1,        #0FFH                ;                 MOV        P2,        #0FFH                ;关所有灯                 CLR        ZY                        ;黄灯亮                 CLR        YY                        ;                 CLR        QY                        ;                 CLR        HY                        ;                 MOV        R2,        #5                ; A3:                 MOV        R1,        #220                ; A4:                 ACALL        BCD                        ;                 ACALL        DISPCLK                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 DJNZ        R1,        A4                ;                 CPL        QY                        ;南北向绿灯亮                 CPL        HY                        ;                 CPL        ZY                        ;东西向红灯亮                 CPL        YY                        ;                        CPL        FMQ                        ;黄灯时蜂鸣器叫一声                 MOV        A,        DAT                ;                 ADD        A,        #99H                ;                 DA        A                        ;                 MOV        DAT,        A                ;                 DJNZ        R2,        A3                ;                 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                 MOV        P1,        #0FFH                ;                 MOV        P2,        #0FFH                ;                 MOV        DAT,        #20H                ;                 CLR        ZG                        ;东西向绿灯亮                 CLR        YG                        ;                 CLR        QR                        ;南北向红灯亮                 CLR        HR                        ;                 MOV        A,        DAT                ;                 MOV        R2,        #15                ;执行15秒 A5:                 MOV        R1,        #220                ; A6:                 ACALL        BCD                        ;BCD调整                 ACALL        DISPCLK                        ;显示                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 DJNZ        R1,        A6                ;                 SETB        FMQ                        ;                        MOV        A,        DAT                ;                 ADD        A,        #99H                ;减1操作                 DA        A                        ;                 MOV        DAT,        A                ;                 DJNZ        R2,        A5                ;                 ;最后5秒黄灯闪                 MOV        P1,        #0FFH                ;                 MOV        P2,        #0FFH                ;关所有灯                 CLR        ZY                        ;黄灯亮                 CLR        YY                        ;                 CLR        QY                        ;                 CLR        HY                        ;                 MOV        R2,        #5                ; A7:                 MOV        R1,        #220                ; A8:                 ACALL        BCD                        ;                 ACALL        DISPCLK                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 DJNZ        R1,        A8                ;                 CPL        QY                        ;南北向绿灯亮                 CPL        HY                        ;                 CPL        ZY                        ;东西向红灯亮                 CPL        YY                        ;                        CPL        FMQ                        ;黄灯时蜂鸣器叫一声                 MOV        A,        DAT                ;                 ADD        A,        #99H                ;                 DA        A                        ;                 MOV        DAT,        A                ;                 DJNZ        R2,        A7                ;                 AJMP        AUTCLK                        ;                 NOP                                ;                 NOP                                ;                 NOP                                ;                 LJMP START ;;********************************* ;;显示子程序 ;;********************************** DISPCLK:         MOV        DPTR,        #TAB        ;定入表头         ;显示个位         MOV        A,        50H        ;         MOVC        A,        @A+DPTR        ;                MOV        P0,        A        ;                CLR        SWITCH2                ;                LCALL        DEL1MS                ;                SETB        SWITCH2                ;                ;显示十位                MOV        A,        51H        ;                MOVC        A,        @A+DPTR        ;                MOV        P0,        A        ;                CLR        SWITCH1                ;                LCALL        DEL1MS                ;                SETB        SWITCH1                ;                RET                        ;                NOP                        ;                NOP                        ;                NOP                        ;                LJMP  START ;************************************************************ ;横向道路紧急中断程序 ;************************************************************ D_X:                 CLR        EA                        ;关总中断                 JNB        P3.2,        $                ;                 MOV        A,        DAT                ;保存显示数据                 MOV        20H,        A                ;                 MOV        DAT,        #50H                ;                 MOV        21H,        P1                ;                 MOV        22H,        P2                ;                 MOV        P1,        #0FFH                ;                 MOV        P2,        #0FFH                ;                 CLR        ZG                        ;东西向绿灯亮                 CLR        YG                        ;                 CLR        QR                        ;南北向红灯亮                 CLR        HR                        ;                 MOV        R4,        #50                ; D1:                 MOV        R3,        #220                ; D2:                 ACALL        BCD                        ;                 ACALL        DISPCLK                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 DJNZ        R3,        D2                ;                        MOV        A,        DAT                ;                 ADD        A,        #99H                ;                 DA        A                        ;                 MOV        DAT,        A                ;                 DJNZ        R4,        D1                ;                 MOV        A,        20H                ;恢复显示数据                 MOV        DAT,        A                ;                 MOV        P2,        22H                ;                 MOV        P1,        21H                ;                 CLR        IE0                        ;                 CLR        IE1                        ;                 SETB        EA                        ;开总中断                 RETI                                ;中断返回                 ;************************************************************ ;纵向道路紧急中断程序 ;************************************************************ N_B:                 CLR        EA                        ;关总中断                 JNB        P3.3,        $                ;                 MOV        A,        DAT                ;保存显示数据                 MOV        20H,        A                ;                 MOV        DAT,        #50H                ;                 MOV        21H,        P1                ;                 MOV        22H,        P2                ;                 MOV        P1,        #0FFH                ;                 MOV        P2,        #0FFH                ;                 CLR        QG                        ;南北向绿灯亮                 CLR        HG                        ;                 CLR        ZR                        ;东西向红灯亮                 CLR        YR                        ;                 MOV        R4,        #50                ; N1:                 MOV        R3,        #220                ; N2:                 ACALL        BCD                        ;                 ACALL        DISPCLK                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 ACALL        DEL1MS                        ;                 DJNZ        R3,        N2                ;                        MOV        A,        DAT                ;                 ADD        A,        #99H                ;                 DA        A                        ;                 MOV        DAT,        A                ;                 DJNZ        R4,        N1                ;                 MOV        A,        20H                ;恢复显示数据                 MOV        DAT,        A                ;                 MOV        P2,        22H                ;                 MOV        P1,        21H                ;                 CLR        IE0                        ;                 CLR        IE1                        ;                 SETB        EA                        ;开总中断                 RETI                                ;中断返回                 ;******************************************************** BCD:                 ;将显存中的数字分分两个BCD码存于50H和51H单元中,用于显示十位和个位                 MOV A,        DAT                ;         MOV B,#10H         DIV AB         MOV 51H,A                ;写入分十位         MOV A,B         MOV 50H,A                ;写入分个位         RET         NOP         NOP         NOP         LJMP  START ;数码表 TAB:    DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH         RET         NOP         NOP         NOP         LJMP  START ;***************************** ;延时子程序 ;12M晶振 ;***************************** DEL1MS: MOV   R6,#28 DEL1MS1:MOV   R7,#19 DEL1MS2:DJNZ  R7,DEL1MS2         DJNZ  R6,DEL1MS1         RET         NOP         NOP         NOP         LJMP   START DEL5MS: MOV   R7,#90 DEL5MS1:MOV   R6,#54 DEL5MS2:         DJNZ  R6,DEL5MS2         DJNZ  R7,DEL5MS1         RET         NOP         NOP         NOP         LJMP  START DEL250MS: MOV   R5,#50 DEL250MS1:LCALL DEL5MS           DJNZ  R5,DEL250MS1           RET           NOP           NOP           NOP           LJMP  START DEL500MS: MOV   R4,#100 DEL500MS1:LCALL DEL5MS           DJNZ  R4,DEL500MS1           RET     ;           NOP           NOP           NOP           LJMP  START           END

最近访客

< 1/1 >

统计信息

已有45人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言