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

📄 st39vf040.lst

📁 用凌阳的十六位单片机SPCE061A做得语音开发板,可以录播WMA格式的音乐,外挂ST39VF040存储,可以存几十首歌,有音频编解码代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
000094B7 40 F0 43 95        		CALL Delay200uS
000094B9 40 F0 8E 94        		CALL  ProtectDisable
000094BB 40 F0 BF 94        	 	CALL  Write_ST39VF040_One_Byte;
000094BD A8 90              	    POP R1,R5 FROM [SP]
000094BE 90 9A              	RETF    
                            	//----------------------------------------------------------------------
                            	Write_ST39VF040_One_Byte:
000094BF A8 DA              		PUSH R1,R5 TO [SP];		
000094C0 14 99 05 70        		R4 = [P_IOB_Data]
000094C2 0C B9 FF 0F        	    R4 &= 0x0FFF
000094C4 0C A9 00 F0        		R4 |= (AE_BIT_DIS|RE_BIT_DIS|WE_BIT_DIS|CE_BIT_DIS) //ALE=1,CE=1,WE=1,OE=1
000094C6 0C B9 F8 FF        	    R4 &= 0xFFF8	
000094C8 02 A9              		R4 |= R2
000094C9 1C D9 05 70        		[P_IOB_Data] = R4    //write AddrH
000094CB 19 D3 00 70        		[P_IOA_Data] = R1   	//write AddrL
                            	
000094CD 0C B9 FF 0F        	    R4 &= 0x0FFF
000094CF 0C A9 00 E0        		R4 |= (RE_BIT_DIS|WE_BIT_DIS|CE_BIT_DIS) //ALE=0,CE=1,WE=1,OE=1
000094D1 1C D9 05 70        	    [P_IOB_Data] = R4    //change to data
                            	    
000094D3 09 B3 00 FF        	    R1 &=0xFF00
000094D5 03 A3              	    R1 |=R3
000094D6 19 D3 00 70        	    [P_IOA_Data] = R1   	//data output 
                            	
000094D8 0C B9 FF 0F        	    R4 &= 0x0FFF
000094DA 0C A9 00 20        		R4 |= (RE_BIT_DIS) //ALE=0,CE=0,WE=0,OE=1
000094DC 1C D9 05 70        	    [P_IOB_Data] = R4 
                            	
000094DE 40 F0 4A 95        	    CALL Delay100uS
                            	    
000094E0 0C B9 FF 0F        	    R4 &= 0x0FFF
000094E2 0C A9 00 F0        	    R4 |= (AE_BIT_DIS|WE_BIT_DIS|CE_BIT_DIS|RE_BIT_DIS) //ALE=1,CE=1,WE=1,OE=1
000094E4 1C D9 05 70        	    [P_IOB_Data] = R4 
                            	
000094E6 A8 90              		POP R1,R5 FROM [SP];
000094E7 90 9A              	RETF
                            	//----------------------------------------------------------------------
                            	_Read_ST39VF040_One_Word:
000094E8 A0 DA              	    PUSH R2,R5 TO [SP]
000094E9 00 9B              	    R5 = SP
000094EA 07 92              	    R1 = [R5 + 7] //	[AddrL] = R1
000094EB 08 94              	    R2 = [R5 + 8] //    [AddrH] = R2 
000094EC 40 F0 03 95        	    CALL Read_ST39VF040_One_Byte; 
000094EE 13 97 FB 01        	    R3 = [Read_Byte];               //read Data 
000094F0 1B D7 FC 01        	    [Read_Byte2]=R3;
000094F2 09 43 FF FF        	    CMP R1,0xFFFF;
000094F4 03 4E              	    JNE	INC_Addr;
000094F5 40 92              		R1=0x0000;
000094F6 41 04              		R2+=1;
000094F7 01 EE              		jmp GetNextByte;
                            	INC_Addr:
000094F8 41 02              		R1+=1;
                            	GetNextByte:
000094F9 40 F0 03 95        		CALL Read_ST39VF040_One_Byte; 
000094FB 11 93 FB 01        		R1=[Read_Byte]; 
000094FD 59 93              		R1=R1 LSL 4;
000094FE 59 93              		R1=R1 LSL 4;
000094FF 11 03 FC 01        		R1+=[Read_Byte2];
00009501 A0 92              	    POP R2,R5 FROM [SP]
00009502 90 9A              	RETF 
                            	//----------------------------------------------------------------------
                            	Read_ST39VF040_One_Byte:
00009503 A8 DA              	    PUSH R1,R5 TO [SP]
00009504 14 99 05 70        	    R4 = [P_IOB_Data]
00009506 0C B9 FF 0F        	    R4 &= 0x0FFF
00009508 0C A9 00 F0        		R4 |= (AE_BIT_DIS|RE_BIT_DIS|WE_BIT_DIS|CE_BIT_DIS) //ALE=1,CE=1,WE=1,OE=1
0000950A 0C B9 F8 FF        	    R4 &= 0xFFF8	
0000950C 02 A9              		R4 |= R2
0000950D 1C D9 05 70        		[P_IOB_Data] = R4    //write AddrH
0000950F 19 D3 00 70        		[P_IOA_Data] = R1    //write AddrL
                            		 
00009511 0C B9 FF 0F        	    R4 &= 0x0FFF
00009513 0C A9 00 E0        		R4 |= (RE_BIT_DIS|WE_BIT_DIS|CE_BIT_DIS) //ALE=0,CE=1,WE=1,OE=1
00009515 1C D9 05 70        	    [P_IOB_Data] = R4    //change to data
                            	
00009517 15 9B 02 70        	    R5 = [P_IOA_Dir]
00009519 0D BB 00 FF        		R5 &= 0xFF00
0000951B 1D DB 02 70        		[P_IOA_Dir] = R5
                            	        
0000951D 0C B9 FF 0F        	    R4 &= 0x0FFF
0000951F 0C A9 00 40        		R4 |= (WE_BIT_DIS) //ALE=0,CE=0,WE=1,OE=0
00009521 1C D9 05 70        	    [P_IOB_Data] = R4 
                            	    
00009523 41 9A              	    R5=0x0001
00009524 1D DB 12 70        	    [P_Watchdog_Clear] = R5
                            	    
00009526 11 93 00 70        	    R1 = [P_IOA_Data]          //get data 
00009528 09 B3 FF 00        	    R1 &= 0x00FF 
0000952A 19 D3 FB 01        	    [Read_Byte] = R1;
                            	    
0000952C 15 9B 02 70        	    R5 = [P_IOA_Dir]
0000952E 0D AB FF 00        		R5 |= 0x00FF
00009530 1D DB 02 70        		[P_IOA_Dir] = R5
                            	    
00009532 0C B9 FF 0F        	    R4 &= 0x0FFF
00009534 0C A9 00 F0        		R4 |= (AE_BIT_DIS|WE_BIT_DIS|RE_BIT_DIS|CE_BIT_DIS) //ALE=1,CE=1,WE=1,OE=1
00009536 1C D9 05 70        	    [P_IOB_Data] = R4 
                            	
00009538 A8 90              	    POP R1,R5 FROM [SP]
00009539 90 9A              	    RETF     
                            	///////////////////////////////////////////////////////////////
                            	//Function : 100us Dealy for S_Flash programming time (base on CPUCLK= 24MHz)
                            	Delay11ms:
0000953A 88 D2              	        push r1,r1 to [sp];
                            	        //r1=17*10;
0000953B 09 93 90 01        	        r1=20*20;  // delay 
                            	L_LoopDelay11:
0000953D 40 F0 4A 95        	        call    Delay100uS;
0000953F 41 22              	        r1-=1;
00009540 44 4E              	        jne     L_LoopDelay11
00009541 88 90              	        pop r1,r1 from [sp];
00009542 90 9A              	        retf;
                            	
                            	
                            	///////////////////////////////////////////////////////////////
                            	//Function : 100us Dealy for S_Flash programming time (base on CPUCLK= 24MHz)
                            	Delay200uS:
00009543 88 D2              	        push r1 to [sp]; //7
00009544 09 93 64 00        	        r1=100;  //6
                            	L_DelayLoop2:
00009546 41 22              	        r1-=1;  //3
00009547 42 4E              	        jne     L_DelayLoop2;   //5
00009548 88 90              	        pop r1 from [sp];    //7
00009549 90 9A              	retf;      //12
                            	
                            	Delay100uS:
0000954A 88 D2              	        push r1 to [sp]; //7
0000954B 72 92              	        r1=50;  //6
                            	L_DelayLoop:
0000954C 41 22              	        r1-=1;  //3
0000954D 42 4E              	        jne     L_DelayLoop;   //5
0000954E 88 90              	        pop r1 from [sp];    //7
0000954F 90 9A              	retf; 
0 error(s), 0 warning(s).
























































































⌨️ 快捷键说明

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