亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? flash_ctr.asm

?? 使用凌陽(yáng)單片機(jī)的多命令語(yǔ)音識(shí)別范例
?? ASM
字號(hào):


.DEFINE C_SIOCLOCK           	0x0010;     // CPUCLOCK/8
.define	B_Busy					0x80

.const C_Program_Time			=60			//60us
.const C_SectorErase_Time		=400		//60us*400=24ms
.const C_MassErase_Time			=1166		//60us*1166=70ms

.include hardware.inc	
.CODE
.PUBLIC		_SP_SIOInitial;
_SP_SIOInitial:	.PROC

		 	//系統(tǒng)時(shí)鐘設(shè)定
		 	r1 = 0x0098;    		 		//Fosc=49mHz 
		 	[P_SystemClock] = r1;
	 	
			r1 = [P_IOB_Dir];
			r1 |= 1;						//set bit0 output for sck
			[P_IOB_Dir] = r1;
			
			r1 = [P_IOB_Attrib];
			r1 |= 1;						//buffer output
			[P_IOB_Attrib] = r1;
			
			r1 = [P_IOB_Buffer];
			r1 |= 1;						//output high
			[P_IOB_Data] = r1;
		 	retf
.ENDP
//////////////////////////////////////////////////////////////////
// Function: Send A Byte to Serial Flash
// Syntax: SP_SIOSendAByte(AddressLow,AddressHigh,  data)
// c level public
// Used register: r1,r2,r3
//////////////////////////////////////////////////////////////////
.public _SP_SIOSendAByte;
_SP_SIOSendAByte: .PROC
F_SIOSendAByte:
	    PUSH BP,BP TO [SP];
	    BP = SP + 1;
		R1 = [BP+3];
	    [P_SIO_Addr_Low]=r1;        // input SFLASH low address
	    r1=r1 lsr 4;         		// right shift 8
	    r1=r1 lsr 4;
	    [P_SIO_Addr_Mid]=r1; 		// input SFLASH mid address
	    R1 = [BP+4];                // Port direction
	    r1=r1&0x0007;  				// input SFLASH hi address
	    [P_SIO_Addr_High]=r1;
        r1=0x00C3+C_SIOCLOCK;
        [P_SIO_Ctrl]=r1;        	// clk=CPUclk/8, 24 bit address  ;write
        [P_SIO_Start]=r1;       	// enable write mode
        R1 = [BP+5];
        [P_SIO_Data]=r1;        	// state to transmit data
L_WaitSIOSendReady:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOSendReady
        [P_SIO_Stop]=r1;            //disable write mode
        call  F_Delay_Program_Time
        POP BP,BP FROM [SP];
        retf;
        .ENDP;


//////////////////////////////////////////////////////////////////
// Function: Read A Byte to Serial Flash
// Syntax: SP_SIOReadAByte(AddressLow, AddressHigh)
// c level public
// Used register: r1,r2,r3
// Return register: r1
//////////////////////////////////////////////////////////////////         

.public _SP_SIOReadAByte;
_SP_SIOReadAByte: .PROC
F_SIOReadAByte:
        PUSH BP,BP TO [SP];
        BP = SP + 1;
        R1 = [BP+3];
        [P_SIO_Addr_Low]=r1; 		// input SFLASH low address
        r1=r1 lsr 4;
        r1=r1 lsr 4;
        [P_SIO_Addr_Mid]=r1; 		// input SFLASH mid address
        R1 = [BP+4];                // Port direction
        r1=r1&0x0007;  				// input SFLASH hi address
        [P_SIO_Addr_High]=r1;
        r1=0x0083+C_SIOCLOCK;
        [P_SIO_Ctrl]=r1;            // clk=CPUclk/16, 24 bit address  ;read
        [P_SIO_Start]=r1;           // enable read mode
        r2=[P_SIO_Data];            // Clear SFLASH buffer
L_WaitSIOReadReady1:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOReadReady1
        r1=[P_SIO_Data];          	// Read exact Data
L_WaitSIOReadReady2:                // Wait read stop
        r2=[P_SIO_Start];
        test    r2,0x0080
        jnz     L_WaitSIOReadReady2
        [P_SIO_Stop]=r2;            // disable read mode
        POP BP,BP FROM [SP];
        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:
        PUSH BP,BP TO [SP];
        BP = SP + 1;
        r1=0x00C3+C_SIOCLOCK;
        [P_SIO_Ctrl]=r1;            // clk=CPUclk/8, 24 bit address  ;write
        R1 = [BP+3];
        [P_SIO_Addr_Low]=r1;  		// input Sflash low address
        r1=r1 lsr 4;          		// right shift 8
        r1=r1 lsr 4;
        [P_SIO_Addr_Mid]=r1;  		// input SFLASH mid address
        R1 = [BP+4];                // Port direction
        r1=r1&0x0007;  				// input SFLASH hi address
        [P_SIO_Addr_High]=r1;
        
        [P_SIO_Start]=r1;           // enable write mode
        R1 = [BP+5];
        [P_SIO_Data]=r1;            //start to transmit low byte
L_WaitSIOSendReadyLB:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOSendReadyLB
      
        [P_SIO_Stop]=r1;            // disable write mode
        call  F_Delay_Program_Time 

         R1 = [BP+3];
         r1+=1;
        [P_SIO_Addr_Low]=r1; 		// input SFLASH low address
             
        [P_SIO_Start]=r1;           //enable write mode
        r1=[BP+5]; 
        r1=r1 lsr 4;         		// right shift 8
        r1=r1 lsr 4;
        [P_SIO_Data]=r1;            //start to transmit high byte
L_WaitSIOSendReadyHB:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOSendReadyHB
        [P_SIO_Stop]=r1;            //disable write mode
		call  F_Delay_Program_Time 
		POP BP,BP FROM [SP];
        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:
        PUSH BP,BP TO [SP];
        BP = SP + 1;
        r4=0x00FF;
        R1 = [BP+3];
        [P_SIO_Addr_Low]=r1; 		// input SFLASH low address
        r1=r1 lsr 4;
        r1=r1 lsr 4;
        [P_SIO_Addr_Mid]=r1; 		// input SFLASH mid address
        R1 = [BP+4];                // Port direction
        r1=r1&0x0007;  				// input SFLASH hi address
        [P_SIO_Addr_High]=r1;
        r1=0x0083;  				// C_SIOCLOCK 0x0010
        [P_SIO_Ctrl]=r1;           	// clk=CPUclk/16, 24 bit address  ;read
        [P_SIO_Start]=r1;       	// enable read mode
        r2=[P_SIO_Data];          	// Clear SFLASH buffer
L_WaitSIOReadReady1LB:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOReadReady1LB
        
        r2=r4&[P_SIO_Data];          // Read exact Low Byte
L_WaitSIOReadReady2LB:               // Wait read stop
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOReadReady2LB
        
        r3=r4&[P_SIO_Data];          // Read exact High Byte

L_WaitSIOReadReady2HB:               // Wait read stop
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOReadReady2HB
       
        [P_SIO_Stop]=r1;             // disable read mode
 
        r3=r3 lsl 4;     			 //shift left 8
        r1=r3 lsl 4;
        r1|=r2;         			 //return data
        POP BP,BP FROM [SP];
        retf;
        .ENDP;




///////////////////////////////////////////////////////////////
//Function : Mass Erase for S_Flash
// Syntax: SIOMassErase()
// Used register: r1,r2
///////////////////////////////////////////////////////////////

.public _SP_SIOMassErase;
_SP_SIOMassErase: .PROC
F_SIOMassErase:
        push r1,r2 to [sp];
        r1=0x00C0+C_SIOCLOCK;
        [P_SIO_Ctrl]=r1;            // clk=CPUclk/8, 16 bit address  ;write
        r2=0x0000;
        [P_SIO_Addr_Low]=r2; 		// input SFLASH low address
        r2=0x00C0;
        [P_SIO_Addr_Mid]=r2; 		// input SFLASH mid address
        r2=0x00C0;
       [P_SIO_Addr_High]=r2; 
        [P_SIO_Start]=r1;           // enable write mode
        r1=0;                       // A7~A0 = 0
        [P_SIO_Data]=r1;            // state to transmit data

L_WaitSIOSendReadyMass:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOSendReadyMass
		[P_SIO_Stop]=r1;
        call    F_Delay_MassErase_Time
        pop r1,r2 from [sp];
        retf;
        .ENDP;

///////////////////////////////////////////////////////////////
//Function : Sector Erase for S_Flash (Page Size 1K)
// Syntax: SP_SIOSectorErase(Sector)
// Used register: r1,r2
///////////////////////////////////////////////////////////////
.public _SP_SIOSectorErase;
_SP_SIOSectorErase: .PROC
SP_SIOSectorErase:
        PUSH BP,BP TO [SP];
        BP = SP + 1;
 
        R1 = [BP+3];
        r1=r1&0x00ff;
        r1=r1 lsl 3;
        r1=r1|0x8000;
        [P_SIO_Addr_Low]=r1; 	// input SFLASH low address ;for A15 and A10
        r1=r1 lsr 4;
        r1=r1 lsr 4;
        [P_SIO_Addr_Mid]=r1; 	// input SFLASH mid address ;for A16
        r1=0x00C0+C_SIOCLOCK;
        [P_SIO_Ctrl]=r1;        // clk=CPUclk/8, 16 bit address  ;write
        [P_SIO_Start]=r1;       // enable write mode
        r1=0;                   // A7~A0 = 0
        [P_SIO_Data]=r1;        // state to transmit data

L_WaitSIOSendReadyPage1:
        r1=[P_SIO_Start];
        test    r1,0x0080
        jnz     L_WaitSIOSendReadyPage1
        [P_SIO_Stop]=r1;        
        call    F_Delay_SectorErase_Time
        POP BP,BP FROM [SP];
        retf;
        .ENDP;



//=======================================================================================
//FunctionName:F_Delay_MassErase_Time
//Description:
//Author:
//Date:
//Destroy:
//Input:
//Return:
//========================================================================================
.public F_Delay_MassErase_Time;
F_Delay_MassErase_Time:
		r2=C_MassErase_Time;		
?L_Wait_MassErase_Time_Over:							       
		call	F_Delay_Program_Time;
		r2-=1;						
		jnz ?L_Wait_MassErase_Time_Over;		
		retf;						
//=======================================================================================
//FunctionName:F_Delay_SectorErase_Time
//Description:
//Author:
//Date:
//Destroy:
//Input:
//Return:
//========================================================================================
.public F_Delay_SectorErase_Time;
F_Delay_SectorErase_Time:
		r2=C_SectorErase_Time;				//6	
?L_Wait_SectorErase_Time_Over:							       
		call	F_Delay_Program_Time;
		r2-=1;								//3					
		jnz ?L_Wait_SectorErase_Time_Over;	//5	
		retf;						
//=======================================================================================
//FunctionName:F_Delay_Program_Time
//Description:
//Author:
//Date:
//Destroy:
//Input:
//Return:
//========================================================================================
.public F_Delay_Program_Time;
F_Delay_Program_Time:
		r1=C_Program_Time;			//6
?L_Wait_Program_Time_Over:							//52cycle,1us @ 49Mhz       
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		nop;						//4
		r1-=1;						//3
		jnz ?L_Wait_Program_Time_Over;		//5
		retf;						//12

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清一级片在线| 日本乱人伦aⅴ精品| 亚洲视频在线一区二区| 欧美一级黄色片| 91丝袜高跟美女视频| 国产在线播放一区三区四| 亚洲综合免费观看高清完整版在线| 26uuu国产电影一区二区| 欧美这里有精品| 成人av网站免费观看| 狠狠色狠狠色合久久伊人| 亚洲高清中文字幕| 亚洲视频一区在线| 久久亚洲精精品中文字幕早川悠里| 欧美日韩精品欧美日韩精品一综合| 国产精品1024| 国产在线播放一区三区四| 日韩电影在线一区二区三区| 亚洲男人的天堂在线观看| 国产婷婷色一区二区三区四区| 日韩一区二区免费在线观看| 欧美日韩综合在线免费观看| 一本色道亚洲精品aⅴ| 99精品视频在线观看| 粉嫩aⅴ一区二区三区四区| 韩国三级电影一区二区| 免费成人在线观看| 日韩av高清在线观看| 亚洲成人你懂的| 亚洲福利视频一区二区| 亚洲午夜在线电影| 亚洲国产精品久久人人爱蜜臀| 亚洲三级在线看| 亚洲女同ⅹxx女同tv| 亚洲三级久久久| 亚洲天堂a在线| 亚洲人123区| 亚洲国产视频在线| 亚洲成国产人片在线观看| 亚洲成人免费影院| 日韩国产成人精品| 日本不卡一区二区三区高清视频| 视频一区中文字幕国产| 日本aⅴ免费视频一区二区三区 | 欧美大白屁股肥臀xxxxxx| 欧美日韩一区二区三区在线| 欧美日韩免费观看一区二区三区| 欧美在线观看18| 91精品国产综合久久蜜臀| 日韩亚洲欧美成人一区| 精品国产一区二区在线观看| 久久久美女毛片| 国产精品的网站| 亚洲国产色一区| 人人爽香蕉精品| 国产尤物一区二区在线| 丁香网亚洲国际| 色噜噜狠狠成人网p站| 精品视频一区三区九区| 精品日韩成人av| 中文字幕一区在线观看| 亚洲国产成人av| 国产自产高清不卡| 91在线国产观看| 欧美日韩一级大片网址| 精品女同一区二区| 国产精品美女久久久久aⅴ国产馆| 亚洲少妇30p| 美国十次了思思久久精品导航| 国产成人av影院| 欧美三级韩国三级日本三斤| 日韩精品一区二区三区老鸭窝 | 日韩综合在线视频| 久久99久久99精品免视看婷婷| 国产99精品在线观看| 欧美亚洲国产怡红院影院| 日韩精品一区二区三区在线| 日韩一区在线免费观看| 日韩福利电影在线| 99久久99久久精品国产片果冻| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲黄一区二区三区| 欧美aaaaaa午夜精品| 成人a级免费电影| 911国产精品| 亚洲色图丝袜美腿| 精品综合久久久久久8888| 91麻豆国产自产在线观看| 日韩免费性生活视频播放| 一区二区中文视频| 韩国一区二区在线观看| 欧美色男人天堂| 中文字幕日韩一区| 久久不见久久见免费视频7 | 91色porny蝌蚪| 欧美成人aa大片| 一区二区在线观看av| 国产一区二区三区免费看| 欧美日产在线观看| 亚洲素人一区二区| 国产成a人亚洲精| 精品日韩99亚洲| 午夜欧美一区二区三区在线播放| 成人短视频下载| 久久精品一区蜜桃臀影院| 视频一区欧美精品| 在线一区二区视频| 综合欧美一区二区三区| 国产精品资源在线观看| 日韩免费电影一区| 五月综合激情婷婷六月色窝| 99精品在线免费| 国产精品久久久久久久浪潮网站| 久久精品99国产国产精| 欧美日韩亚洲综合| 亚洲美女在线国产| 91一区一区三区| 国产精品美女久久久久久2018| 精品影视av免费| 欧美成人性战久久| 免费高清在线视频一区·| 欧美久久久久久久久中文字幕| 一区二区三区欧美亚洲| 99久久久精品| 国产精品久久久久久久久免费相片| 国产在线乱码一区二区三区| 日韩免费一区二区| 裸体在线国模精品偷拍| 欧美一区二区三区在线电影| 丝袜诱惑制服诱惑色一区在线观看| 日本精品一区二区三区高清| 一区二区三区免费网站| 在线一区二区三区| 亚洲欧美日韩电影| 欧美午夜精品久久久久久超碰| 一区二区成人在线| 欧美三区在线观看| 婷婷六月综合网| 4hu四虎永久在线影院成人| 婷婷综合另类小说色区| 欧美一区二区三区四区久久| 日韩不卡手机在线v区| 日韩精品综合一本久道在线视频| 捆绑调教一区二区三区| 欧美mv日韩mv国产| 国产91综合一区在线观看| 国产精品麻豆欧美日韩ww| 91蜜桃网址入口| 亚洲gay无套男同| 欧美一区二区精美| 国产美女主播视频一区| 国产精品久久二区二区| 91免费观看在线| 午夜a成v人精品| 精品国产免费人成在线观看| 国产成人综合在线| 亚洲欧美日韩国产一区二区三区 | 日韩美女精品在线| 欧美无砖砖区免费| 久久精品国产精品亚洲精品| 久久精品一区蜜桃臀影院| 99re成人精品视频| 日韩精品一卡二卡三卡四卡无卡| www成人在线观看| zzijzzij亚洲日本少妇熟睡| 亚洲不卡一区二区三区| 精品噜噜噜噜久久久久久久久试看| 粗大黑人巨茎大战欧美成人| 亚洲欧美国产三级| 欧美videos大乳护士334| 成人午夜看片网址| 亚洲bt欧美bt精品| 久久久99精品久久| 91久久精品日日躁夜夜躁欧美| 蜜臀va亚洲va欧美va天堂| 欧美国产一区二区在线观看| 欧美曰成人黄网| 国产成人啪午夜精品网站男同| 一区二区三区中文字幕电影| 精品成人免费观看| 在线视频你懂得一区| 国产精一区二区三区| 亚洲图片一区二区| 国产欧美综合在线| 777午夜精品视频在线播放| 成人深夜视频在线观看| 午夜日韩在线观看| 亚洲婷婷综合久久一本伊一区| 精品国产免费一区二区三区四区| 在线看国产日韩| 成人av一区二区三区| 欧美a级一区二区| 亚洲香肠在线观看| 国产精品国产三级国产三级人妇| 日韩一区二区电影在线| 欧洲av在线精品| 99免费精品视频| 国产精品一级二级三级| 视频在线观看国产精品| 亚洲一区二区在线视频|