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

📄 flashrom.lst

📁 C语言学习的一个不错的资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	.DEFINE C_LINE					0x0002 			//
                     <      	.endif
                     <      	//----------------------------------------------
                     <      	
                     <      	
                     <      	// Define for P_DAC_Ctrl
                     <      	//----------------------------------------------
                     <      	.if BODY_TYPE == SPCE061A
                     <      	.DEFINE	C_DAC1_Direct			0x0000;		// b8 b7: DAC1 latch
                     <      	.DEFINE C_DAC1_LatchA			0x0080;		// Latch data to DAC1 by TimerA 
                     <      	.DEFINE C_DAC1_LatchB			0x0100;		// Latch data to DAC1 by TimerB
                     <      	.DEFINE C_DAC1_LatchAB			0x0180;		// Latch data to DAC1 by TimerA or TimerB
                     <      	
                     <      	.DEFINE	C_DAC2_Direct			0x0000;		// b6 b5: DAC2 latch
                     <      	.DEFINE C_DAC2_LatchA			0x0020;		// Latch data to DAC2 by TimerA
                     <      	.DEFINE C_DAC2_LatchB			0x0040;		// Latch data to DAC2 by TimerB
                     <      	.DEFINE C_DAC2_LatchAB			0x0060;		// Latch data to DAC2 by TimerA or TimerB
                     <      	
                     <      	.DEFINE	C_ADC_Direct			0x0000;		// b4 b3: ADC latch
                     <      	.DEFINE C_ADC_LatchA			0x0008;		// Latch data to ADC by TimerA
                     <      	.DEFINE C_ADC_LatchB			0x0010;		// Latch data to ADC by TimerB
                     <      	.DEFINE C_ADC_LatchAB			0x0018;		// Latch data to ADC by TimerA or TimerB
                     <      	.endif
                     <      	
                     <      	.if BODY_TYPE == SPCE500A
                     <      	.DEFINE C_PushPull				0x0000 			// b0, (default) 
                     <      	.DEFINE C_DoubleEnd				0x0001 			// b0
                     <      	.DEFINE	C_DAC_Mode				0x0000 			// b1, (default)
                     <      	.DEFINE C_PWM_Mode				0x0002 			// b1
                     <      	
                     <      	.DEFINE	C_D1_Direct				0x0000 			// DAC1 latch
                     <      	.DEFINE C_D1_LatchA				0x0008 			// 
                     <      	.DEFINE C_D1_LatchB				0x0010 			//
                     <      	.DEFINE C_D1_LatchAB			0x0018 			//
                     <      	
                     <      	.DEFINE	C_D2_Direct				0x0000 			// DAC2 latch
                     <      	.DEFINE C_D2_LatchA				0x0020 			// 
                     <      	.DEFINE C_D2_LatchB				0x0040 			//
                     <      	.DEFINE C_D2_LatchAB			0x00C0 			//
                     <      	.endif
                     <      	//----------------------------------------------
                     <      	
                     <      	// Define for P_LVD_Ctrl
                     <      	//----------------------------------------------
                     <      	.if BODY_TYPE == SPCE061A
                     <      	.DEFINE C_LVD24V				0x0000;		// LVD = 2.4V; b1b0 
                     <      	.DEFINE C_LVD28V				0x0001;		// LVD = 2.8V
                     <      	.DEFINE C_LVD32V				0x0002;		// LVD = 3.2V
                     <      	.endif
                     <      	
                     <      	.if BODY_TYPE == SPCE500A
                     <      	.DEFINE C_LVD26V				0x0000 			// LVD = 2.6V 
                     <      	.DEFINE C_LVD30V				0x0001 			// LVD = 3.0V
                     <      	.DEFINE C_LVD36V				0x0002 			// LVD = 3.6V
                     <      	.DEFINE C_LVD40V				0x0003 			// LVD = 4.0V
                     <      	.endif
                     <      	
                     <      	.DEFINE C_LVD_Result			0x8000;		// b15 = 1: below the selected LVD level
                     <      	//----------------------------------------------
                     <      	
                     <      	
                     <      	// SPCE061 flash operation instruction definition
                     <      	//----------------------------------------------
                     <      	.if BODY_TYPE == SPCE061A
                     <      	.DEFINE C_EnableFlashAccess		0xAAAA;
                     <      	.DEFINE C_EraseFlashPage  		0x5511;
                     <      	.DEFINE C_ProgramFlash 	   		0x5533;
                     <      	.endif
                     <      	//----------------------------------------------
                     <      	
                     <      	
                     <      	
                     <      	//===============================================================
                     <      	// Sunplus APIs for SPCE 061A
                     <      	//===============================================================
                     <      	//////////////////////////////////////////////////
                     <      	// Note: This register will map to the P_INT_Ctrl
                     <      	//	(0x7010), The SACMvxx.lib use this register to
                     <      	//	combine with user's interrupt setting.
                     <      	//  In SPCE061, it is not necessary since the 
                     <      	//  P_INT_Mask(0x702D) already does this. It is for 
                     <      	//  compatibility to keep it here. 
                     <      	//////////////////////////////////////////////////
                     <      	//.EXTERNAL	R_InterruptStatus 
                     <      	
                     <      	//========================================================================================        
                     <      	// End of SPCE061A.inc
                     <      	//========================================================================================
                     <      	
                     <      	
                     <      	        
00008009                    	.TEXT
                            	//--------------------------------------------------------------------
                            	//-- Procedure: _SP_PageErase
                            	//-- Decription: Erase a page in flash
                            	//-- Syntax: SP_PageErase(page addr)
                            	//-- Parameter:
                            	//      R1 = page addr
                            	//-- Return:
                            	//      None
                            	//--------------------------------------------------------------------
                            	.PUBLIC _SP_PageErase
                            	_SP_PageErase: .proc
00008009 88 DA              	    PUSH BP,BP TO [SP];
0000800A 08 0B 01 00        	    BP = SP + 1;
0000800C 03 92              	    R1 = [BP+3];
                            	    
0000800D 40 F0 11 80        	    call F_PageErase;
                            	
0000800F 88 98              	    POP BP,BP FROM [SP];
00008010 90 9A              	    retf
                            	.endp
                            	//////////////////////////////////////////////////////////////////
                            	// F_PageErase
                            	// Function: Erase a flash page in SPCE061
                            	// R1: page address (0x8000~0xFFFF)
                            	// Used register: r1,r2
                            	//////////////////////////////////////////////////////////////////
                            	.PUBLIC F_PageErase
                            	F_PageErase: .PROC
00008011 88 D4              	  PUSH R2,R2 to [SP];
                            	//  INT OFF;
                            	  
00008012 01 95              	  R2 = R1;
                            	  // Enable Write/Erase
00008013 09 93 AA AA        	  R1 = C_EnableFlashAccess;
00008015 19 D3 55 75        	  [P_Flash_Ctrl] = R1;
                            	  // Erase instruction
00008017 09 93 11 55        	  R1 = C_EraseFlashPage;
00008019 19 D3 55 75        	  [P_Flash_Ctrl] = R1;
                            	  // Write any value to erase page  
0000801B C2 D2              	  [R2] = R1;  
                            	   
                            	//  INT FIQ,IRQ;
0000801C 88 92              	  POP R2,R2 from [SP]; 
0000801D 90 9A              	  retf;
                            	.endp
                            	
                            	//--------------------------------------------------------------------
                            	//-- Procedure: _SP_WriteWord
                            	//-- Syntax: SP_WriteWord(page addr,data)
                            	//-- Parameter:
                            	//      R1 = page addr
                            	//      R2 = data
                            	//-- Return:
                            	//      None
                            	//--------------------------------------------------------------------
                            	
                            	.PUBLIC _SP_WriteWord
                            	_SP_WriteWord: .proc
0000801E 88 DA              	    PUSH BP,BP TO [SP];
0000801F 08 0B 01 00        	    BP = SP + 1;
00008021 03 92              	    R1 = [BP+3];
00008022 04 94              	    R2 = [BP+4];
                            	    
00008023 40 F0 27 80        	    call F_WriteWord;
                            	
00008025 88 98              	    POP BP,BP FROM [SP];
00008026 90 9A              	    retf
                            	.endp
                            	//////////////////////////////////////////////////////////////////
                            	// F_WriteWord
                            	// Function: write a word to the flash of SPCE061
                            	// R1: page address (0x8000~0xFFFF)
                            	// R2: data to write
                            	// Used register: r1,r2,r3
                            	//////////////////////////////////////////////////////////////////
                            	.PUBLIC F_WriteWord
                            	F_WriteWord: .PROC
00008027 88 D6              	  PUSH R3,R3 to [SP];
                            	//  INT OFF;
                            	  
00008028 01 97              	  R3 = R1;
                            	  // Enable Write/Erase
00008029 09 93 AA AA        	  R1 = C_EnableFlashAccess;
0000802B 19 D3 55 75        	  [P_Flash_Ctrl] = R1;
                            	  // Program instruction
0000802D 09 93 33 55        	  R1 = C_ProgramFlash;
0000802F 19 D3 55 75        	  [P_Flash_Ctrl] = R1;
                            	  // Write Flash
00008031 C3 D4              	  [R3] = R2;  
                            	   
                            	//  INT FIQ,IRQ;
00008032 88 94              	  POP R3,R3 from [SP]; 
00008033 90 9A              	  retf;
                            	.ENDP
                            	
                            	//--------------------------------------------------------------------
                            	//-- Procedure: _SP_ReadWord
                            	//-- Syntax: SP_ReadWord(page addr)
                            	//-- Parameter:
                            	//      R1 = page addr
                            	//-- Return:
                            	//      R1 = data
                            	//--------------------------------------------------------------------
                            	
                            	.PUBLIC _SP_ReadWord
                            	
                            	_SP_ReadWord: .proc
00008034 88 DA              	    PUSH BP,BP TO [SP];
00008035 08 0B 01 00        	    BP = SP + 1;
00008037 03 92              	    R1 = [BP+3];
                            	    
00008038 40 F0 3C 80        	    call F_ReadWord;
                            	
0000803A 88 98              	    POP BP,BP FROM [SP];
0000803B 90 9A              	    retf
                            	.endp
                            	//////////////////////////////////////////////////////////////////
                            	// F_ReadWord
                            	// Function: read a word from the flash of SPCE061
                            	// R1: page address (0x8000~0xFFFF)
                            	// return: R1 the data red
                            	// Used register: r1,r2,r3
                            	//////////////////////////////////////////////////////////////////
                            	.PUBLIC F_ReadWord
                            	F_ReadWord: .PROC
0000803C 88 D4              	  PUSH R2,R2 to [SP];
                            	  // Read data
0000803D C1 94              	  R2 = [R1];
0000803E 02 93              	  R1 = R2;   
0000803F 88 92              	  POP R2,R2 from [SP]; 
00008040 90 9A              	  retf;
                            	.ENDP
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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