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

📄 divide.eve

📁 DSP中YSS920B开发板工具程序
💻 EVE
字号:
//           僒儞僾儖僾儘僌儔儉 Divide.eve
//
// 妱嶼婍(DIV) 傪梡偄偨僾儘僌儔儉偱偡丅
// CNT0 傪 16 僒儞僾儖枅偵僀儞僋儕儊儞僩偟丄妱嶼婍偵偰 0x0001/CNT0
// 傪寁嶼偟偨寢壥傪 SDI0 偺 Lch 偵弌椡偟傑偡丅
// 妱嶼婍偺暘曣 (DIVB) 偼惓丄偐偮暘巕 (DIVA) 傛傝戝偒偔側偔偰偼偄偗
// 側偄偺偱丄CNT0 偼 0x0002 偐傜僀儞僋儕儊儞僩偝偣丄0x000A 偺師偼 
// 0x0002 偵栠傞傛偆僾儘僌儔儈儞僌偝傟偰偄傑偡丅偮傑傝丄弌椡偼
//   0x0001/0x0002
//   0x0001/0x0003
//   0x0001/0x0004
//        :
//   0x0001/0x0009
//   0x0001/0x000A
//   0x0001/0x0002
// 偲側傝傑偡丅
//
// 僆僔儘僗僐乕僾偱 SDO0 Lch 弌椡偺攇宍傪娤應偡傞偲丄
//   y=1/x (2=<x=<10)
// 偺孞傝曉偟攇宍傪妋擣偱偒傑偡丅
//
// 偙偺僾儘僌儔儉傪傾僙儞僽儔 EveAsm.exe 偱傾僙儞僽儖偡傞偙偲偵傛傝
// Divide.datEve 偑嶌惉偝傟傑偡丅
//
// -----------------------------------------------------------------
//
//           Sample program  Divide.eve
//
// This is the program using Divider DIV.
// After incrementing CNT0 by every 16 sample and caluculating 0x0001/CNT0 
// in DIV, the result is output from Lch.
// Because the denominator DIVB should be bigger than zero and the numerator
// DIVA, CNT0 is programmed to be incremented from 0x0002 and returned to 
// 0x0002 after 0x000A. So the output becomes as below.
//   0x0001/0x0002
//   0x0001/0x0003
//   0x0001/0x0004
//        :
//   0x0001/0x0009
//   0x0001/0x000A
//   0x0001/0x0002
//
// When seeing the SDO0 Lch output by oscilloscope, the repeated wave of
//   y=1/x (2=<x=<10)
// is confirmed.
//
// Divide.datEve is assembled from this program by executing EveAsm.exe.



// -----------------------------------------------------------------
// -----------------------------------------------------------------
// -----------------------------------------------------------------

#define ERAM_TYPE NO_ERAM             //奜晅 RAM 側偟

//============================================================
//                  EVE Program
//                       Divide
//============================================================

// COEF define
	CDat	P0.5		(-1, 0x4000);		// +0.5
	CDat	M0.5		(-1, 0xC000);		// -0.5

// Inner DATA define
	DAdr	Dtmp		(0);				// temporary 梡

//------------------------------------------------------------
//       幚峴僐儅儞僪僽儘僢僋
//  	|   ERAM            |   BUS             |   MAC/JMP   
//------------------------------------------------------------
		;					Dtmp = CNT1;		ACC0 = Dtmp * P0.5;				// CNT1 偺晞崋 check丅
		CNT1--;				;					;								// CNT1 傪 -1丅
		;					REG0 = 0x000A;		;								// REG0=10 傪 set 偟偰偍偔丅
		;					;					;
		;					;					;
		;					;					if (ACC>=0) jmp end;			// CNT1>=0 側傜偦偺傑傑 end 傊丅
		;					CNT1 = 0x000F;		;								// CNT1<0 側傜 CNT1=15 偲 set 偟偰 CAL 傊丅
//------------------------------------------------------------
CAL:	;					Dtmp = REG0;		ACC0 = Dtmp * P0.5;				// 10-CNT0 偺晞崋 check丅
		;					Dtmp = CNT0;		ACC0+= Dtmp * M0.5;				//
		;					;					;
		;					;					;
		;					;					;
		;					;					;
		;					;					if (ACC>=0) jmp divide;			// 10>=CNT0 側傜偦偺傑傑 divide 傊丅
		;					CNT0 = 0x0002;		;								// 10<CNT0 偺偲偒偼 CNT=0x0002 偲偟偰 divide 傊丅
//------------------------------------------------------------
divide:	;					DIVB = CNT0;		;								// DIVB = CNT0丅
		;					DIVA = 0x0001;		;								// DIVA = 0x0001

⌨️ 快捷键说明

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