作者: 叶子 于 2007/8/13 9:23:50 发布:
汇编文件:
.include hardware.inc .code .public _main _main: call init_io call init_timer call init_zhongduan LOOP: r1=1 [P_Watchdog_Clear]=r1 jmp LOOP init_io: .proc PUSH r1,r5 to [sp] r1=0xff00 [P_IOA_Dir]=r1 [P_IOA_Attrib]=r1 r1=0x0 [P_IOA_Data]=r1 r1=0xf804 [P_IOB_Dir]=r1 r1=0xf800 [P_IOB_Attrib]=r1 r1=0x0000 [P_IOB_Data]=r1 POP r1,r5 from [sp] retf .endp init_timer: .proc PUSH r1,r5 to [sp] r1=0x0015 [P_TimerA_Ctrl]=r1 r1=0xffff-(256*1) [P_TimerA_Data]=r1 r1=0x0007 [P_TimerB_Ctrl]=r1 r1=0 [P_TimerB_Data]=r1 POP r1,r5 from [sp] retf .endp init_zhongduan: .proc PUSH r1,r5 to [sp] r1=0x1000 [P_INT_Ctrl]=r1 IRQ ON POP r1,r5 from [sp] retf .endp
C文件:
#include <SPCE061V004.H> unsigned int zixingma[]={0x3f00,0x0600,0x5b00,0x4f00,0x6600,0x6d00,0x7d00,0x0700,0x7f00,0x6f00}; unsigned int weima[]={0x8000,0x4000,0x2000,0x1000,0x0800}; unsigned int pinl,a,b,c,d,e; unsigned int i=0; void delay() { while(i<800) { i++; } } void xingwei(int x,int y) { *P_IOA_Data=x; *P_IOB_Data=y; } void IRQ1() __attribute__((ISR)); void IRQ1() { asm("IRQ OFF"); *P_TimerB_Ctrl=0x0006; pinl=*P_TimerB_Data; a=pinl/10000; b=pinl/1000%10; c=pinl/100%10; d=pinl%100/10; e=pinl%100%10; while(1) { xingwei(zixingma[a],weima[0]); delay(); xingwei(zixingma[b],weima[1]); delay(); xingwei(zixingma[c],weima[2]); delay(); xingwei(zixingma[d],weima[3]); delay(); xingwei(zixingma[e],weima[4]); delay(); } *P_INT_Clear=0x1000; asm("IRQ ON"); }
|