bootblink.asm

来自「ADI 公司的DSP ADSP21262 EZ-KIT LITE开发板的全部源代」· 汇编 代码 · 共 324 行

ASM
324
字号
///////////////////////////////////////////////////////////////////////////////////////
//NAME:     bootblink.asm
//DATE:     10/16/03
//PURPOSE:  Program boots from external parallel serial port flash device and blinks LEDs
//
//USAGE:    Build program (.ldr) use FlashProgrammer plug-in utility (tools | FlashProgrammer)
//			to program the blink code into external serial port flash memory.
//			Use the Settings | bootload menu item to perform a boot load on the DSP
//			
////////////////////////////////////////////////////////////////////////////////////////
#include <def21262.h>



.section/pm seg_pm48;
start:

ustat1=dm(SYSCTL);
bit set ustat1 PPFLGS;
dm(SYSCTL)=ustat1;

bit set flags 0xAAAAAAAA;   // set flag3 as output
nop;nop;

bit clr flags 0x55555555;   // set flag3 high. (turn OFF LED)
bit set flags 0x00040000;

r0=1;
r1=1;
r4=0;

//Start the blink routine
top:
lcntr=50000000;
    do (pc,_loop_end) until lce;
_loop_end:    
    nop;
r2=FLAGS;

btst r2 by 30;
if not sz r2=bclr r2 by 30;

btst r2 by 16;
if not sz r2=bclr r2 by 16;

r0=pass r0;
if gt jump left;

right:
r2=rot r2 by -2; // set flag3 high. (turn OFF LED)
jump(pc,2);

left:
r2=rot r2 by 2; // set flag3 high. (turn OFF LED)

btst r2 by 18;
if not sz r2=bset r2 by 16;
if not sz r0=r1;

btst r2 by 28;
if not sz r2=bset r2 by 30;
if not sz r0=r4;

FLAGS=r2;

jump top;

//==============================================
// IVT code / FINAL_INIT payload
.section /pm   ivt_sec;

__EMUI:			// 0x00: Emulator interrupt (highest priority, read-only, non-maskable)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__RSTI:			// 0x04: Reset (read-only, non-maskable)
     	nop;
     	nop;
     	jump start;
     	jump (pc,0);
__IICDI:		// 0x08: Illegal Input Condition Detected
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SOVFI:		// 0x0C: Status loop or mode stack overflow or PC stack full
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__TMZHI:		// 0x10: Core timer interrupt (higher priority option)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__res0:			// 0x14: (reserved)
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__BKPI:			// 0x18: Hardware breakpoint interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__res1:			// 0x1C: (reserved)
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__IRQ2I:		// 0x20: IRQ2 is asserted
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__IRQ1I:		// 0x24: IRQ1 is asserted
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__IRQ0I:		// 0x28: IRQ0 is asserted
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__DAIHI:		// 0x2C: DAI interrupt (higher priority option)
        nop;
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SPIHI:		// 0x30: SPI transmit or receive (higher priority option)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__GPTMR0I:		// 0x34: General Purpose timer 0 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SP1I:			// 0x38: SPORT 1 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SP3I:			// 0x3C: SPORT 3 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SP5I:			// 0x40: SPORT 5 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SP0I:			// 0x44: SPORT 0 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SP2I:		  	// 0x48: SPORT 2 interrupt        
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SP4I: 		// 0x4C: SPORT 4 interrupt
        rti;
        jump (pc,0);		// bit clr LIRPTL SPITMSK;
        jump (pc,0);
        jump (pc,0);

__PPI:			// 0x50: Parallel port interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__GPTMR1I:		// 0x54: General Purpose timer 1 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__res2:			// 0x58: (reserved) 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__DAILI:		// 0x5C: DAI interrupt (lower priority option)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__res3:			// 0x60: reserved)
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__res4:			// 0x64: (reserved)
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__res5:			// 0x68: (reserved)
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__res6:			// 0x6C: (reserved)
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0); 
        jump (pc,0);

__GPTMR2I:		// 0x70: General Purpose timer 2 interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SPILI:		// 0x74: SPI transmit or receive (lower priority option)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__CB7I:			// 0x78: Circular buffer 7 overflow exception
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__CB15I:		// 0x7C: Circular buffer 15 overflow exception
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__TMZLI:		// 0x80: Core timer interrupt (lower priority option)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__FIXI:			// 0x84: Fixed-point overflow exception
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__FLTOI:		// 0x88: Floating-point overflow exception
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__FLTUI:		// 0x8C: Floating-point underflow exception
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);


__FLTII:		// 0x90: Floating-point invalid exception
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__EMULI:		// 0x94: Emulator low priority interrupt
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SFT0I:		// 0x98: User software interrupt 0        
		jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SFT1I:		// 0x9C: User software interrupt 1 
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SFT2I:		// 0xA0: User software interrupt 2 
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

__SFT3I:		// 0xA4: User software interrupt 3 (lowest priority)
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);
        jump (pc,0);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?