📄 initialization.asm
字号:
******************************************************************************/
/////////////////////////////////////////////////////////////////////
// input: p0: clear ram length, p1: clear ram start address
/////////////////////////////////////////////////////////////////////
.global ClearMemory_Byte4;
ClearMemory_Byte4:
r0=0;
[ --SP ]=lc1;
[ --SP ]=lt1;
[ --SP ]=lb1;
LSETUP(ClearMemory_Byte4LoopStart,ClearMemory_Byte4LoopEnd) LC0=P1;
ClearMemory_Byte4LoopStart:
ClearMemory_Byte4LoopEnd:
[ p1++ ]=r0;
lb1=[ SP++ ];
lt1=[ SP++ ];
lc1=[ SP++ ];
rts;
ClearMemory_Byte4.end:
/////////////////////////////////////////////////////////////////////
// input: p0: clear ram length, p1: clear ram start address
/////////////////////////////////////////////////////////////////////
.global ClearMemory_Byte2;
ClearMemory_Byte2:
r0=0;
[ --SP ]=lc1;
[ --SP ]=lt1;
[ --SP ]=lb1;
LSETUP(ClearMemory_Byte2LoopStart,ClearMemory_Byte2LoopEnd) LC0=P1;
ClearMemory_Byte2LoopStart:
ClearMemory_Byte2LoopEnd:
w[ p1++ ]=r0;
lb1=[ SP++ ];
lt1=[ SP++ ];
lc1=[ SP++ ];
rts;
ClearMemory_Byte2.end:
.global ClearDSPCore;
ClearDSPCore:
r0=0;r1=0;r2=0;r3=0;
r4=0;r5=0;r6=0;r7=0;
p0=0;p1=0;p2=0;p3=0;p4=0;p5=0;
i0=r0;i1=r0;i2=r0;i3=r0;
m0=r0;m1=r0;m2=r0;m3=r0;
b0=r0;b1=r0;b2=r0;b3=r0;
l0=r0;l1=r0;l2=r0;l3=r0;
rts;
ClearDSPCore.end:
/*****************************************************************************
Function: AllPfLedBlink
//
Description: All Led blinks, 50ms on, 50ms off, 4 times
******************************************************************************/
.global AllPfLedBlink;
AllPfLedBlink:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0xffff;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0x0000;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0xffff;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0x0000;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0xffff;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0x0000;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0xffff;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = 0x0000;
w[p0] = r1.l;
ssync;
r0.l=50;
call MsDelay;
RETS = [ SP++ ];
rts;
AllPfLedBlink.end:
/*****************************************************************************
Function: Init_EBIU //
//
Description: This function initializes and enables asynchronous memory
banks in External Bus Interface Unit so that Flash A can be
accessed. //
******************************************************************************/
.global Init_EBIU;
Init_EBIU:
[ --SP ] = RETS;
p0.h = hi(EBIU_AMBCTL0);
p0.l = lo(EBIU_AMBCTL0);
r0.l = amb0_timing;
r0.h = amb1_timing;
[p0] = r0;
ssync;
p0.h = hi(EBIU_AMBCTL1);
p0.l = lo(EBIU_AMBCTL1);
r0.l = amb2_timing;
r0.h = amb3_timing;
[p0] = r0;
ssync;
// set asynch mem global ctrl reg
p0.h = hi(EBIU_AMGCTL);
p0.l = lo(EBIU_AMGCTL);
r0.l = w[p0];
r1 = en_async_mem;
r0 = r0 | r1;
w[p0] = r0; // enable asynch mem
ssync;
RETS = [ SP++ ];
RTS;
Init_EBIU.END:
/*****************************************************************************
Description: PF Led 0 On/Off/Tgl
******************************************************************************/
.global Led0On;
Led0On:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitclr(r1,12);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led0On.end:
.global Led0Off;
Led0Off:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitset(r1,12);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led0Off.end:
.global Led0Tgl;
Led0Tgl:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_T);
p0.h = hi(FIO_FLAG_T);
r1=0;
bitset(r1,12);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led0Tgl.end:
/*****************************************************************************
Description: PF Led 1 On/Off/Tgl
******************************************************************************/
.global Led1On;
Led1On:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitclr(r1,13);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led1On.end:
.global Led1Off;
Led1Off:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitset(r1,13);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led1Off.end:
.global Led1Tgl;
Led1Tgl:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_T);
p0.h = hi(FIO_FLAG_T);
r1=0;
bitset(r1,13);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led1Tgl.end:
/*****************************************************************************
Description: PF Led 2 On/Off/Tgl
******************************************************************************/
.global Led2On;
Led2On:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitclr(r1,14);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led2On.end:
.global Led2Off;
Led2Off:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitset(r1,14);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led2Off.end:
.global Led2Tgl;
Led2Tgl:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_T);
p0.h = hi(FIO_FLAG_T);
r1=0;
bitset(r1,14);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led2Tgl.end:
/*****************************************************************************
Description: PF Led 3 On/Off/Tgl
******************************************************************************/
.global Led3On;
Led3On:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitclr(r1,15);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led3On.end:
.global Led3Off;
Led3Off:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitset(r1,15);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led3Off.end:
.global Led3Tgl;
Led3Tgl:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_T);
p0.h = hi(FIO_FLAG_T);
r1=0;
bitset(r1,15);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
Led3Tgl.end:
/*****************************************************************************
PKTENDOut: to give PF4 a NEG pulse which is about 500ns wide
******************************************************************************/
.global PKTENDOut;
PKTENDOut:
[ --SP ] = RETS;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitclr(r1,4);
w[p0] = r1.l;
ssync;
p0.l = lo(FIO_FLAG_D);
p0.h = hi(FIO_FLAG_D);
r1.l = w[p0];
bitset(r1,4);
w[p0] = r1.l;
ssync;
RETS = [ SP++ ];
rts;
PKTENDOut.end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -