|
这是用CCS编写的DSP汇编程序,可以实现TMS320C54XXDSP的定时器试验
************************************************ * FileName: ex7.asm * * Description: 定时器实验 * * Copyright(C) SanZhi Electronic, Author Zpin * ************************************************
.title "ex7" .global _c_int00 .mmregs PERSEC .set 60h SEC .set 61h MIN .set 62h STATUS .set 63h
TMP0 .set 64h TMP1 .set 65h TMP .set 66h
D_LED .set 0b000h
;D_LED0 .set 01h ;D_LED1 .set 02h ;D_LED2 .set 03h ;D_LED3 .set 04h ;D_LED4 .set 05h ;D_LED5 .set 06h
D_LED0 .set 06h D_LED1 .set 05h D_LED2 .set 04h D_LED3 .set 03h D_LED4 .set 02h D_LED5 .set 01h
LED_DISP .macro hexdata,portaddr LD hexdata,B ST #0Ah,TMP0 RPT #15 SUBC TMP0,B STH B,TMP0 ;存放BCD码个位 STL B,TMP1 ;存放BCD码十位 ST #2000h,AR0 LD TMP0,B ADD AR0,B STL B,AR0 NOP NOP LD *AR0,A OR #portaddr+1,A ;计算位码 PORTW AL,D_LED rpt #30000 nop nop ST #2000h,AR0 LD TMP1,B ADD AR0,B STL B,AR0 NOP NOP LD *AR0,A OR #portaddr,A ;计算位码 PORTW AL,D_LED rpt #30000 nop nop .endm
;段码 .data .word 3F00h,0600h,5B00h,4f00h,6600h,6d00h,7d00h,0700h,7f00h,6f00h .sect ".vectors" rst: B _c_int00 NOP NOP .space 15*4*16 int0: B keydown NOP NOP .space 2*4*16 tint: B timeout NOP NOP .space 12*4*16 .text _c_int00 LD #0h,DP STM #3000h,SP SSBX INTM RSBX SXM STM #07FFFh,SWWSR stm #0001h,2Bh ST #0h,CLKMD tst: BITF CLKMD,#1h BC tst,TC ST #1087h,CLKMD BITF CLKMD,#1h RPT #0FFh NOP ORM #0010h,TCR ST #19999,PRD ORM #0009h,TCR ORM #0020h,TCR ST #0FFFFh,IFR ORM #0008h,IMR RSBX INTM
ST #0,PERSEC ST #0,SEC ST #0,MIN ST #1,STATUS LED_DISP PERSEC,D_LED1 LED_DISP MIN,D_LED5 LED_DISP SEC,D_LED3
ANDM #0FFEFh,TCR susp nop nop nop B susp timeout ADDM #1,PERSEC LD #100,A SUB PERSEC,A BC secout,ALEQ B exit secout ST #0,PERSEC ADDM #1,SEC LD #60,A SUB SEC,A BC minout,ALEQ B exit minout ST #0,SEC ADDM #1,MIN LD #100,A SUB MIN,A BC overflow,ALEQ B exit overflow ST #0,MIN ORM #0030h,TCR ;Stop and Reload Timer ST #0,STATUS ;Set stopfalg exit LED_DISP MIN,D_LED5 LED_DISP SEC,D_LED3 LED_DISP PERSEC,D_LED1 RETE
keydown ST 0ffffh,IFR ORM #0030h,TCR BITF STATUS,#1h BC restart,NTC RETE restart ST #0,PERSEC ST #0,SEC ST #0,MIN LED_DISP PERSEC,D_LED1 ;刷新1/100秒表 LED_DISP SEC,D_LED3 ;刷新秒表 LED_DISP MIN,D_LED5 ;刷新分钟 ANDM #0FFEFh,TCR RETE
.end
|