DSP急救车与交通灯实验

************************************************
* FileName:     ex8.asm                        *
* Description:  急救车与交通灯实验             *
* Copyright(C) SanZhi Electronic, Author Zpin  *
************************************************

       .title "ex8"
       .global _c_int00
       .mmregs

LED_ADDR  .set  5008h

STATUS0      .set  00h
STATUS1      .set  01h
STATUS2      .set  02h
STATUS3      .set  03h
STATUS4      .set  04h
STA2_PRE_0   .set  05h
STA2_PRE_1   .set  06h
STA4_PRE_0   .set  07h
STA4_PRE_1   .set  08h

CURRENT_STA  .set  60h

       .data
;东西、南北   红红  绿红   黄红  红绿  红黄  空红  绿红  红空  红绿
       ;.word 0f00h,5a00h,5f00h,0a500h,0af00h,0a00h,5a00h,0500h,0a500h
       .word 0f000h,0a500h,0f500h,5a00h,0fa00h,0a000h,0a500h,5000h,05a00h
       ;.word 0C300h,9600h,0D700h,6900h,0EB00h,08200h,9600h,04100h,06900h
DELAY  .macro sec_tenth     ;延时 sec_tenth/10 秒
       STM sec_tenth-1,AR5
loop1? STM #09h,AR6
loop0? STM #49999,AR7
       BANZ $,*AR7-
       BANZ loop0?,*AR6-
       BANZ loop1?,*AR5-
       .endm

       .sect ".vectors"
rst:   B _c_int00
       NOP
       NOP
       .space 15*4*16
int0:  b bus_come
       NOP
       NOP
int1:  nop
       nop
       nop
       nop
int2:  ;b bus_come
        nop
        nop
       nop
       nop
       .space 13*4*16

          .text
_c_int00

       LD #0h,DP
       STM #3000h,SP
       SSBX INTM
       SSBX SXM
       STM #07FFFh,SWWSR    ;IO总线外部等待时间14个周期
       STM #01h,2Bh

       STM #0h,CLKMD        ;20MHz工作
tst    BITF CLKMD,#1h
       BC tst,TC
       STM #1087h,CLKMD
       RPT #0FFh
       NOP
      
       ST #0FFFFh,IFR
       ORM #0001h,IMR
       RSBX INTM
      
       LD #40h,DP
      
       LD STATUS0,T
       PORTW STATUS0,LED_ADDR     ;全部红灯
       DELAY #10               ;延时1秒

circle LD STATUS1,T
        ;nop
        ;nop
        ;nop
        ;nop
       PORTW STATUS1,LED_ADDR     ;南北红灯、东西绿灯
       ;nop
        ;nop
        ;nop
        ;nop
       DELAY #200              ;延时20秒
       STM #2h,BRC
       ;nop
        ;nop
        ;nop
        ;nop
        RPTB flash1
       ;nop
        ;nop
        ;nop
        ;nop
        LD STA2_PRE_0,T
       ;nop
        ;nop
        ;nop
        ;nop
          PORTW STA2_PRE_0,LED_ADDR
       ;nop
        ;nop
        ;nop
        ;nop
        DELAY #3
       LD STA2_PRE_1,T
       ;nop
        ;nop
        ;nop
        ;nop
        PORTW STA2_PRE_1,LED_ADDR
       ;nop
        ;nop
        ;nop
        ;nop
        DELAY #3
flash1 NOP                     ;南北绿灯闪3次、东西红灯
       LD STATUS2,T
       PORTW STATUS2,LED_ADDR     ;南北黄灯、东西红灯
       DELAY #30               ;延时3秒
       
        LD STATUS3,T
       PORTW STATUS3,LED_ADDR     ;南北红灯、东西绿灯
       DELAY #200              ;延时20秒

       STM #2h,BRC
       RPTB flash2
       LD STA4_PRE_0,T
       PORTW STA4_PRE_0,LED_ADDR
       DELAY #3
       LD STA4_PRE_1,T
       PORTW STA4_PRE_1,LED_ADDR
       DELAY #3             ;南北红灯、东西绿灯闪3次
flash2 NOP
       LD STATUS4,T
       PORTW STATUS4,LED_ADDR     ;南北红灯、东西黄灯
       DELAY #30               ;延时3秒

        B circle

bus_come
       PSHM AR5
       PSHM AR6
       PSHM AR7
       PORTW STATUS0,LED_ADDR     ;急救车来,全部红灯
       DELAY #100              ;延时10秒
       ST T,CURRENT_STA
       PORTW CURRENT_STA,LED_ADDR ;恢复现场
       POPM AR7
       POPM AR6
       POPM AR5
       RETE

posted @ 2010-12-28 23:14  ARM与DSP  阅读(229)  评论(0)    收藏  举报