⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initialization.asm

📁 dsp转换USB通讯程序样例
💻 ASM
📖 第 1 页 / 共 2 页
字号:
******************************************************************************/	


/////////////////////////////////////////////////////////////////////
// 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 + -