我把程序附上了,如下:芯片是2407的,下面有主程序和.CMD文件的 主程序: ;************************************************************ ;* 文件名: led.asm ** ;* 功 能: 数码管显示 ** ;************************************************************
.include f2407regs.h .def _c_int0 SETADDR .set 5807H ;清零地址,高8位数据线为0表示清零,为1禁止清零 LEDADDR .set 5802H ;数码管的锁存地址 .bss DAT,1 .bss CODE1,1
.text
_c_int0 SETC INTM CLRC SXM CLRC OVM CLRC CNF LDP #0E0H NOP SPLK #87FEH,SCSR1 ; 81FEH:CPUCLK=4*fin; 83FEH:CPUCLK=2*fin; 87FEH:CPUCLK=1*fin ; 8FFEH:CPUCLK=0.5*fin; 8DFEH:CPUCLK=0.57*fin; 85FEH:CPUCLK=1.33*fin SPLK #0E8H,WDCR LDP #0 SPLK #00H,IMR SPLK #0FFFFH,IFR SPLK #00H,DAT OUT DAT,SETADDR ;清零 SPLK #0ff00H,DAT OUT DAT,SETADDR ;禁止清零 LEFT SPLK #013fH,CODE1 ;第一位显示0 OUT CODE1,LEDADDR CALL DELAY ;;;;;;;;;;;;;;;;;;;;;; SPLK #0206H,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第二位显示1 ;;;;;;;;;;;;;;;;;;;;;; SPLK #045BH,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第三位显示2 ;;;;;;;;;;;;;;;;;;;;;; SPLK #084FH,CODE1 ;第四位显示3 OUT CODE1,LEDADDR CALL DELAY ;;;;;;;;;;;;;;;;;;;;;; SPLK #01066H,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第五位显示4 ;;;;;;;;;;;;;;;;;;;;;; SPLK #0206DH,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第六位显示5 ;;;;;;;;;;;;;;;;;;;;;; SPLK #0407DH,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第七位显示6 ;;;;;;;;;;;;;;;;;;;;;; SPLK #08007H,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第八位显示7 ;;;;;;;;;;;;;;;;;;;;;; SPLK #0407FH,CODE1 OUT CODE1,LEDADDR CALL DELAY ;第七位显示8
SPLK #0206fH,CODE1 OUT CODE1,LEDADDR ;第六位显示9 CALL DELAY
SPLK #1077H,CODE1 ;第五位显示A OUT CODE1,LEDADDR CALL DELAY
SPLK #087cH,CODE1 ;第四位显示 b OUT CODE1,LEDADDR CALL DELAY
SPLK #0439H,CODE1 ;第三位显示C OUT CODE1,LEDADDR CALL DELAY
SPLK #025eH,CODE1 ;第二位显示D OUT CODE1,LEDADDR CALL DELAY
SPLK #0179H,CODE1 ;第一位显示E OUT CODE1,LEDADDR CALL DELAY
SPLK #0271H,CODE1 ;第二位显示F OUT CODE1,LEDADDR CALL DELAY b LEFT
DELAY: LAR AR6,#4000 DELAY1 MAR *,AR7 LAR AR7, #100 DELAY2: NOP NOP BANZ DELAY2 MAR *,AR6 BANZ DELAY1 RET END .CMD文件的如下:: MEMORY { PAGE 0 : VECS : origin =0000h , length = 0040h /* PROGRAM */ PVECS : origin =0044h , length = 0100h /* Peripheral Interrupt Vectors */ PROG : origin = 08000h , length = 1000h /* FLASH on Chip*/ PAGE 1 : MMRS : origin = 0000h ,length = 005Fh /* MMRS*/ B2 : origin = 0060h ,length = 0020h/* DARAM B2 BLOCK*/ B01 : origin = 0200h ,length = 0080h/* DARAM B0 BLOCK*/ B02 : origin = 0280h ,length = 0080h B11 : origin = 0300h ,length = 0080h/* DARAM B1 BLOCK*/ B12 : origin = 0380h ,length = 0080h SARAM1 : origin = 0800h ,length = 0080h/* SARAM BLOCK*/ SARAM3 : origin = 0900h ,length = 0100h/* SARAM BLOCK*/ SARAM5 : origin = 0A00h ,length = 0200h/* SARAM BLOCK*/ SARAM7 : origin = 0C00h ,length = 0080h/* SARAM BLOCK*/ SARAM9 : origin = 0D00h ,length = 0300h/* SARAM BLOCK*/ } /*-------------------------------------------------------------------------*/ /* SECTIONS ALLOCATION */ /*-------------------------------------------------------------------------*/ SECTIONS { .reset : { } > VECS PAGE 0 /* Interrupt Vector Table*/ .pvecs : { } > PVECS PAGE 0 /* Peripheral INTERRUPT VECTOR TABLE*/ /*.const : LOAD = PROG PAGE 0, RUN= B01 PAGE 1*/
.text : { } > PROG PAGE 0 /* CODE */ .data : { } > PROG PAGE 0 /* FFT */ twiddles: { } > PROG PAGE 0 /* FFT */ fftprog : { } > PROG PAGE 0 /* FFT */ .cinit : { } > PROG PAGE 0 .b2 : { } > B2 PAGE 1 /* 保存ST0,ST1*/ .context: { } > B01 PAGE 1 /* 保存contex的内容 */ .stack : { } > B01 PAGE 1 /* 保存堆栈stack的内容*/ .bss : { } > B2 PAGE 1 /* 存放液晶显示定义的寄存器及一些常用寄存器*/
.data0 : { } > B02 PAGE 1 /* FFT Working Space--c2cx0032.ASM */
.data1 : { } > B11 PAGE 1 /* FFT Working Space--c2cx0032.ASM */ twid : { } > B11 PAGE 1 /* FFT--c2cx0032.ASM */ .fftvar : { } > B11 PAGE 1 /* FFT--INIT-FFT.ASM(17 words)*/ .xtdata : { } > SARAM1 PAGE 1 /* 存放第1种工作情况的系统参数 */ .yxdata : { } > SARAM3 PAGE 1 /* 存放第1种工作情况的运行参数 */ .uidata : { } > SARAM5 PAGE 1 /* 存放第1种工作情况的电压、电流、 功率、电能参数*/ .gzdata : { } > SARAM7 PAGE 1 /* 记录第1种工作情况的故障参数 */ .ad : { } > SARAM9 PAGE 1 /* 存放A/D采集的16通道的参数 */ } /*剩余空间,380-3ff,f00-fff*/
|