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

📄 sp_serialflashv1.lst

📁 C语言学习的一个不错的资料
💻 LST
📖 第 1 页 / 共 4 页
字号:
0000A079 0A C5 80 00        	        test    r2,0x0080
0000A07B 45 4E              	        jnz     L_WaitSIOReadReady2
0000A07C 1A D5 20 70        	        [P_SIO_Stop]=r2;            // disable read mode
0000A07E 88 98              	        POP BP,BP FROM [SP];
0000A07F 90 9A              	        retf;
                            	        .ENDP;
                            	
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Send A Word to Serial Flash
                            	// Syntax: SP_SIOSendAData(AddressLow,AddressHigh,  data) Address must be even
                            	// c level public
                            	// Used register: r1,r2,r3
                            	//////////////////////////////////////////////////////////////////
                            	.public _SP_SIOSendAWord;
                            	_SP_SIOSendAWord: .PROC
                            	F_SIOSendAWord:
0000A080 88 DA              	        PUSH BP,BP TO [SP];
0000A081 08 0B 01 00        	        BP = SP + 1;
                            	//        PUSH r1,r3 TO [SP];
0000A083 09 93 D3 00        	        r1=0x00C3+C_SIOCLOCK;
0000A085 19 D3 1E 70        	        [P_SIO_Ctrl]=r1;            // clk=CPUclk/8, 24 bit address  ;write
0000A087 03 92              	        R1 = [BP+3];
0000A088 19 D3 1B 70        	        [P_SIO_Addr_Low]=r1;  		// input Sflash low address
0000A08A 79 93              	        r1=r1 lsr 4;          		// right shift 8
0000A08B 79 93              	        r1=r1 lsr 4;
0000A08C 19 D3 1C 70        	        [P_SIO_Addr_Mid]=r1;  		// input SFLASH mid address
0000A08E 04 92              	        R1 = [BP+4];                // Port direction
0000A08F 47 B2              	        r1=r1&0x0007;  				// input SFLASH hi address
0000A090 19 D3 1D 70        	        [P_SIO_Addr_High]=r1;
                            	        
0000A092 19 D3 1F 70        	        [P_SIO_Start]=r1;           // enable write mode
0000A094 05 92              	        R1 = [BP+5];
0000A095 19 D3 1A 70        	        [P_SIO_Data]=r1;            //start to transmit low byte
                            	L_WaitSIOSendReadyLB:
0000A097 11 93 1F 70        	        r1=[P_SIO_Start];
0000A099 09 C3 80 00        	        test    r1,0x0080
0000A09B 45 4E              	        jnz     L_WaitSIOSendReadyLB
0000A09C 40 F0 4D A1        	        call    F_DelayPT           // Delay necessary for the writing   
0000A09E 40 F0 4D A1        	        call    F_DelayPT 
0000A0A0 40 F0 4D A1        	        call    F_DelayPT 
0000A0A2 40 F0 4D A1        	        call    F_DelayPT            //modify by abin
                            	     //   call    F_DelayPT            //modify by abin
                            	     //   call    F_DelayPT            //modify by abin
                            	        
0000A0A4 19 D3 20 70        	        [P_SIO_Stop]=r1;            // disable write mode
0000A0A6 03 92              	         R1 = [BP+3];
0000A0A7 41 02              	         r1+=1;
0000A0A8 19 D3 1B 70        	        [P_SIO_Addr_Low]=r1; 		// input SFLASH low address
                            	             
0000A0AA 19 D3 1F 70        	        [P_SIO_Start]=r1;           //enable write mode
0000A0AC 05 92              	        r1=[BP+5]; 
0000A0AD 79 93              	        r1=r1 lsr 4;         		// right shift 8
0000A0AE 79 93              	        r1=r1 lsr 4;
0000A0AF 19 D3 1A 70        	        [P_SIO_Data]=r1;            //start to transmit high byte
                            	L_WaitSIOSendReadyHB:
0000A0B1 11 93 1F 70        	        r1=[P_SIO_Start];
0000A0B3 09 C3 80 00        	        test    r1,0x0080
0000A0B5 45 4E              	        jnz     L_WaitSIOSendReadyHB
0000A0B6 40 F0 4D A1        	     	call    F_DelayPT          //modify by abin
0000A0B8 40 F0 4D A1        	      	call    F_DelayPT          //modify by abin
0000A0BA 40 F0 4D A1        	        call    F_DelayPT
0000A0BC 40 F0 4D A1        	        call    F_DelayPT
0000A0BE 19 D3 20 70        	        [P_SIO_Stop]=r1;            //disable write mode
                            	//        POP r1,r3 FROM [SP];
0000A0C0 88 98              	        POP BP,BP FROM [SP];
0000A0C1 90 9A              	        retf;
                            	        .ENDP;
                            	
                            	
                            	//////////////////////////////////////////////////////////////////
                            	// Function: Read A Word from Serial Flash
                            	// Syntax: SP_SIOReadAWord(AddressLow, AddressHigh)
                            	// c level public
                            	// Used register: r1,r2,r3,r4
                            	// Return register: r1
                            	//////////////////////////////////////////////////////////////////         
                            	
                            	.public _SP_SIOReadAWord;
                            	_SP_SIOReadAWord: .PROC
                            	F_SIOReadAWord:
0000A0C2 88 DA              	        PUSH BP,BP TO [SP];
0000A0C3 08 0B 01 00        	        BP = SP + 1;
                            	      //  PUSH r2,r4 TO [SP];   modify by 
0000A0C5 0C 99 FF 00        	        r4=0x00FF;
0000A0C7 03 92              	        R1 = [BP+3];
0000A0C8 19 D3 1B 70        	        [P_SIO_Addr_Low]=r1; 		// input SFLASH low address
0000A0CA 79 93              	        r1=r1 lsr 4;
0000A0CB 79 93              	        r1=r1 lsr 4;
0000A0CC 19 D3 1C 70        	        [P_SIO_Addr_Mid]=r1; 		// input SFLASH mid address
0000A0CE 04 92              	        R1 = [BP+4];                // Port direction
0000A0CF 47 B2              	        r1=r1&0x0007;  				// input SFLASH hi address
0000A0D0 19 D3 1D 70        	        [P_SIO_Addr_High]=r1;
                            	     //   r1=0x0083+C_SIOCLOCK;       // C_SIOCLOCK 0x0010
0000A0D2 09 93 83 00        	        r1=0x0083;    //+C_SIOCLOCK;       // C_SIOCLOCK 0x0010
0000A0D4 19 D3 1E 70        	        [P_SIO_Ctrl]=r1;           	// clk=CPUclk/16, 24 bit address  ;read
0000A0D6 19 D3 1F 70        	        [P_SIO_Start]=r1;       	// enable read mode
                            	        ////////
0000A0D8 12 95 1A 70        	        r2=[P_SIO_Data];          	// Clear SFLASH buffer
                            	        ////////
                            	L_WaitSIOReadReady1LB:
0000A0DA 11 93 1F 70        	        r1=[P_SIO_Start];
0000A0DC 09 C3 80 00        	        test    r1,0x0080
0000A0DE 45 4E              	        jnz     L_WaitSIOReadReady1LB
                            	        
                            	        
                            	        
0000A0DF 14 B5 1A 70        	        r2=r4&[P_SIO_Data];          // Read exact Low Byte
                            	L_WaitSIOReadReady2LB:               // Wait read stop
0000A0E1 11 93 1F 70        	        r1=[P_SIO_Start];
0000A0E3 09 C3 80 00        	        test    r1,0x0080
0000A0E5 45 4E              	        jnz     L_WaitSIOReadReady2LB
                            	        
                            	        
0000A0E6 14 B7 1A 70        	        r3=r4&[P_SIO_Data];          // Read exact High Byte
                            	
                            	L_WaitSIOReadReady2HB:               // Wait read stop
0000A0E8 11 93 1F 70        	        r1=[P_SIO_Start];
0000A0EA 09 C3 80 00        	        test    r1,0x0080
0000A0EC 45 4E              	        jnz     L_WaitSIOReadReady2HB
                            	       
0000A0ED 19 D3 20 70        	        [P_SIO_Stop]=r1;             // disable read mode
                            	 
0000A0EF 5B 97              	        r3=r3 lsl 4;     //shift left 8
0000A0F0 5B 93              	        r1=r3 lsl 4;
0000A0F1 02 A3              	        r1|=r2;         //return data
                            	       // POP r2,r4 FROM [SP];
0000A0F2 88 98              	        POP BP,BP FROM [SP];
0000A0F3 90 9A              	        retf;
                            	        .ENDP;
                            	
                            	///////////////////////////////////////////////////////////////
                            	//Function : Page Erase for S_Flash (Page Size 1K)
                            	// Syntax: SP_SIOPageErase(Page)
                            	// Used register: r1,r2
                            	///////////////////////////////////////////////////////////////
                            	.public _SP_SIOPageErase;
                            	_SP_SIOPageErase: .PROC
                            	F_SIOPageErase:
0000A0F4 88 DA              	                PUSH BP,BP TO [SP];
0000A0F5 08 0B 01 00        	        BP = SP + 1;
                            	 
0000A0F7 03 92              	        R1 = [BP+3];
0000A0F8 49 93              	        r1=r1 lsl 2;      		// 1K page size
0000A0F9 09 B3 FF 01        	        r1=r1&0x01FF;
0000A0FB 09 A3 00 80        	        r1=r1|0x8000;
0000A0FD 19 D3 1B 70        	        [P_SIO_Addr_Low]=r1; 	// input SFLASH low address ;for A15 and A10
0000A0FF 79 93              	        r1=r1 lsr 4;
0000A100 79 93              	        r1=r1 lsr 4;
0000A101 19 D3 1C 70        	        [P_SIO_Addr_Mid]=r1; 	// input SFLASH mid address ;for A16
0000A103 09 93 D0 00        	        r1=0x00C0+C_SIOCLOCK;
0000A105 19 D3 1E 70        	        [P_SIO_Ctrl]=r1;        // clk=CPUclk/8, 16 bit address  ;write
0000A107 19 D3 1F 70        	        [P_SIO_Start]=r1;       // enable write mode
0000A109 40 92              	        r1=0;                   // A7~A0 = 0
0000A10A 19 D3 1A 70        	        [P_SIO_Data]=r1;        // state to transmit data
                            	
                            	L_WaitSIOSendReadyPage:
0000A10C 11 93 1F 70        	        r1=[P_SIO_Start];
0000A10E 09 C3 80 00        	        test    r1,0x0080
0000A110 45 4E              	        jnz     L_WaitSIOSendReadyPage
0000A111 19 D3 20 70        	        [P_SIO_Stop]=r1;         //disable write mode
                            	
0000A113 40 F0 3D A1        	        call    F_Delay11ms
                            	        
0000A115 88 98              	        POP BP,BP FROM [SP];
0000A116 90 9A              	        retf;
                            	        .ENDP;
                            	
                            	
                            	///////////////////////////////////////////////////////////////
                            	//Function : Mass Erase for S_Flash
                            	// Syntax: SIOMassErase()
                            	// Used register: r1,r2
                            	///////////////////////////////////////////////////////////////
                            	
                            	.public _SP_SIOMassErase;
                            	_SP_SIOMassErase: .PROC
                            	F_SIOMassErase:
0000A117 90 D4              	        push r1,r2 to [sp];
0000A118 09 93 D0 00        	        r1=0x00C0+C_SIOCLOCK;
0000A11A 19 D3 1E 70        	        [P_SIO_Ctrl]=r1;            // clk=CPUclk/8, 16 bit address  ;write
0000A11C 40 94              	        r2=0x0000;
0000A11D 1A D5 1B 70        	        [P_SIO_Addr_Low]=r2; 		// input SFLASH low address
0000A11F 0A 95 C0 00        	        r2=0x00C0;
0000A121 1A D5 1C 70        	        [P_SIO_Addr_Mid]=r2; 		// input SFLASH mid address
0000A123 0A 95 C0 00        	        r2=0x00C0;
0000A125 1A D5 1D 70        	       [P_SIO_Addr_High]=r2; 
                            	//        r1=0x00C0+C_SIOCLOCK;
                            	  //      [P_SIO_Ctrl]=r1;            // clk=CPUclk/8, 16 bit address  ;write
0000A127 19 D3 1F 70        	        [P_SIO_Start]=r1;           // enable write mode

⌨️ 快捷键说明

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