14个DSP的实验测试程序 8交通灯2009-08-17 13:31************************************************
* 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