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

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

?? 4096.asm

?? 利用sunplus16位單片機實現(xiàn)USB接口的全套技術(shù)資料
?? ASM
字號:
//======================================================
// 文件名稱:	4096.asm
// 功能描述:   SPR4096的讀寫、擦除 
// 完成日期:   2005-10-25
//======================================================
.DEFINE		P_IOB_Data				0x7005
.DEFINE		P_IOB_Buffer			0x7006
.DEFINE		P_IOB_Dir				0x7007
.DEFINE		P_IOB_Attrib			0x7008
.DEFINE		P_SystemClock			0x7013
//	Serial	functions control registers
.DEFINE		P_SIO_Data				0x701A
.DEFINE		P_SIO_Addr_Low			0x701B
.DEFINE		P_SIO_Addr_Mid			0x701C
.DEFINE		P_SIO_Addr_High			0x701D
.DEFINE		P_SIO_Ctrl				0x701E
.DEFINE		P_SIO_Start				0x701F
.DEFINE		P_SIO_Stop				0x7020

.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

.CODE
//======================================================
// 函數(shù)名稱:	_SP_SIOInitial
// 實現(xiàn)功能:    SIO初始化
// 入口參數(shù):   無
// 出口參數(shù):   無
// 破壞寄存器:  r1
//======================================================
.PUBLIC		_SP_SIOInitial;
_SP_SIOInitial:	.PROC
			r1 = [P_IOB_Dir]					//IOB0:SCK,IOB1:SDA
			r1 |= 0x0001
			[P_IOB_Dir] = r1
			r1 = [P_IOB_Attrib]
			r1 |= 0x0003
			[P_IOB_Attrib] = r1
			r1 = [P_IOB_Buffer]
			r1 |= 0x0001
			[P_IOB_Buffer] = r1
		 	retf
.ENDP

//======================================================
// 函數(shù)名稱:	_SP_SIOSendAByte
// 實現(xiàn)功能:    往SPR4096寫入一個Byte的數(shù)據(jù)
// 入口參數(shù):   ulAddr為寫入的地址,uiData為寫入的數(shù)據(jù)
// 出口參數(shù):   無
// 破壞寄存器:  r1
//======================================================
.PUBLIC _SP_SIOSendAByte;
_SP_SIOSendAByte: .PROC
F_SIOSendAByte:
		    push bp,bp to [SP];
		    bp  =  SP + 1;
			r1  =  [bp+3];
		    [P_SIO_Addr_Low] = r1;        		// FLASH低地址
		    r1 = r1 lsr 4;         		
		    r1 = r1 lsr 4;
		    [P_SIO_Addr_Mid] = r1; 				// FLASH中地址
		    r1  =  [bp+4];                
		    r1 = r1&0x0007;  					// FLASH高地址
		    [P_SIO_Addr_High] = r1;
	        r1 = 0x00C3+C_SIOCLOCK;
	        [P_SIO_Ctrl] = r1;        			// clk = CPUclk/8, 24位地址 
	        [P_SIO_Start] = r1;       			// 寫模式使能
	        r1  =  [bp+5];
	        [P_SIO_Data] = r1;        			// 傳輸數(shù)據(jù)
L_WaitSIOSendReady:
	        r1 = [P_SIO_Start];
	        test    r1,B_Busy
	        jnz     L_WaitSIOSendReady
	        [P_SIO_Stop] = r1;            		// 禁止寫模式
	        call  F_Delay_Program_Time
	        pop bp,bp from [SP];
	        retf;
.ENDP;


//======================================================
// 函數(shù)名稱:	_SP_SIOReadAByte
// 實現(xiàn)功能:    從SPR4096讀出一個Byte的數(shù)據(jù)
// 入口參數(shù):   ulAddr為讀出的地址
// 出口參數(shù):   讀出的數(shù)據(jù)
// 破壞寄存器:  r1,r2,r3
//======================================================
.PUBLIC _SP_SIOReadAByte;
_SP_SIOReadAByte: .PROC
F_SIOReadAByte:
	        push bp,bp to [SP];
	        bp  =  SP + 1;
	        r1  =  [bp+3];
	        [P_SIO_Addr_Low] = r1; 				// FLASH低地址
	        r1 = r1 lsr 4;
	        r1 = r1 lsr 4;
	        [P_SIO_Addr_Mid] = r1; 				// FLASH中地址
	        r1  =  [bp+4];                
	        r1 = r1&0x0007;  					// FLASH高地址
	        [P_SIO_Addr_High] = r1;
	        r1 = 0x0083;
	        [P_SIO_Ctrl] = r1;            		// clk = CPUclk/16, 24位地址
	        [P_SIO_Start] = r1;           		// 讀模式使能
	        r2 = [P_SIO_Data];            		// 清buffer
L_WaitSIOReadReady1:
	        r1 = [P_SIO_Start];
	        test    r1,B_Busy
	        jnz     L_WaitSIOReadReady1
	        r1 = [P_SIO_Data];          		// 讀數(shù)據(jù)
L_WaitSIOReadReady2:               
	        r2 = [P_SIO_Start];
	        test    r2,B_Busy
	        jnz     L_WaitSIOReadReady2
	        [P_SIO_Stop] = r2;            		// 禁止讀模式
	        pop bp,bp from [SP];
	        retf;
.ENDP;

//======================================================
// 函數(shù)名稱:	_SP_SIOSendAWord
// 實現(xiàn)功能:    往SPR4096寫入一個Word的數(shù)據(jù)
// 入口參數(shù):   ulAddr為寫入的地址,uiData為寫入的數(shù)據(jù)
// 出口參數(shù):   無
// 破壞寄存器:  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位地址
	        r1  =  [bp+3];
	        [P_SIO_Addr_Low] = r1; 				// FLASH低地址
	        r1 = r1 lsr 4;
	        r1 = r1 lsr 4;
	        [P_SIO_Addr_Mid] = r1; 				// FLASH中地址
	        r1  =  [bp+4];                
	        r1 = r1&0x0007;  					// FLASH高地址
	        [P_SIO_Addr_High] = r1;
        
	        [P_SIO_Start] = r1;           		// 寫模式使能
	        r1  =  [bp+5];
	        [P_SIO_Data] = r1;            		// 傳輸數(shù)據(jù),低字節(jié)
L_WaitSIOSendReadyLB:
	        r1 = [P_SIO_Start];
	        test    r1,B_Busy
	        jnz     L_WaitSIOSendReadyLB
	      
	        [P_SIO_Stop] = r1;            		// 禁止寫模式
	        call  F_Delay_Program_Time 
	
	         r1  =  [bp+3];
	         r1+ = 1;
	        [P_SIO_Addr_Low] = r1; 				// FLASH低地址
	             
	        [P_SIO_Start] = r1;          	 	// 寫模式使能
	        r1 = [bp+5]; 
	        r1 = r1 lsr 4;         		
	        r1 = r1 lsr 4;
	        [P_SIO_Data] = r1;            		// 傳輸數(shù)據(jù),高字節(jié)
L_WaitSIOSendReadyHB:
        r1 = [P_SIO_Start];
        test    r1,B_Busy
        jnz     L_WaitSIOSendReadyHB
        [P_SIO_Stop] = r1;            			// 禁止寫模式
		call  F_Delay_Program_Time 
		pop bp,bp from [SP];
        retf;
.ENDP;


//======================================================
// 函數(shù)名稱:	_SP_SIOReadAWord
// 實現(xiàn)功能:    從SPR4096讀出一個Word的數(shù)據(jù)
// 入口參數(shù):   ulAddr為讀出的地址
// 出口參數(shù):   讀出的數(shù)據(jù)
// 破壞寄存器:  r1,r2,r3,r4
//======================================================
.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; 				// FLASH低地址
	        r1 = r1 lsr 4;
	        r1 = r1 lsr 4;
	        [P_SIO_Addr_Mid] = r1; 				// FLASH中地址
	        r1  =  [bp+4];                
	        r1 = r1&0x0007;  					// FLASH高地址
	        [P_SIO_Addr_High] = r1;

	        r1 = 0x0083;  							
	        [P_SIO_Ctrl] = r1;           		// clk = CPUclk/16, 24 位地址
	        [P_SIO_Start] = r1;       			// 讀模式使能
	        r2 = [P_SIO_Data];          		// 清buffer
L_WaitSIOReadReady1LB:
	        r1 = [P_SIO_Start];
	        test    r1,B_Busy
	        jnz     L_WaitSIOReadReady1LB
	        
	        r2 = r4&[P_SIO_Data];          		// 讀數(shù)據(jù),低字節(jié)
L_WaitSIOReadReady2LB:               
	        r1 = [P_SIO_Start];
	        test    r1,0x0080
	        jnz     L_WaitSIOReadReady2LB
	        
	        r3 = r4&[P_SIO_Data];          		// 讀數(shù)據(jù),高字節(jié)

L_WaitSIOReadReady2HB:               
	        r1 = [P_SIO_Start];
	        test    r1,B_Busy
	        jnz     L_WaitSIOReadReady2HB
	       
	        [P_SIO_Stop] = r1;             		// 禁止讀模式
	 
	        r3 = r3 lsl 4;     			 
	        r1 = r3 lsl 4;
	        r1| = r2;         			 		// r1 存放的是讀出的數(shù)據(jù)
	        pop bp,bp from [SP];
	        retf;
.ENDP;


//======================================================
// 函數(shù)名稱:	_SP_SIOMassErase
// 實現(xiàn)功能:    擦除SPR4096的所有扇區(qū)
// 入口參數(shù):   無
// 出口參數(shù):   無
// 破壞寄存器:  r1
//======================================================
.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位地址
	        r2 = 0x0000;
	        [P_SIO_Addr_Low] = r2; 			// FLASH低地址
	        r2 = 0x00C0;
	        [P_SIO_Addr_Mid] = r2; 			// FLASH中地址
	        r2 = 0x00C0;
	       	[P_SIO_Addr_High] = r2; 
	        [P_SIO_Start] = r1;           	// 寫模式使能
	        r1 = 0;                       	// A7~A0  =  0
	        [P_SIO_Data] = r1;            	// 傳輸數(shù)據(jù)

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

//======================================================
// 函數(shù)名稱:	_SP_SIOSectorErase
// 實現(xiàn)功能:    擦除SPR4096的一個扇區(qū)
// 入口參數(shù):   uiSector,為扇區(qū)的編號,0~255可選
// 出口參數(shù):   無
// 破壞寄存器:  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; 			// FLASH低地址 ;給 A15 and A10
	        r1 = r1 lsr 4;
	        r1 = r1 lsr 4;
	        [P_SIO_Addr_Mid] = r1; 			// FLASH中地址 ;給 A16
	        r1 = 0x00C0+C_SIOCLOCK;
	        [P_SIO_Ctrl] = r1;        		// clk = CPUclk/8, 16位地址
	        [P_SIO_Start] = r1;       		// 寫模式使能
	        r1 = 0;                   		// A7~A0  =  0
	        [P_SIO_Data] = r1;        		// 傳輸數(shù)據(jù)

L_WaitSIOSendReadyPage1:
	        r1 = [P_SIO_Start];
	        test    r1,B_Busy
	        jnz     L_WaitSIOSendReadyPage1
	        [P_SIO_Stop] = r1;        
	        call    F_Delay_SectorErase_Time
	        pop bp,bp from [SP];
	        retf;
.ENDP;



//======================================================
// 函數(shù)名稱:	F_Delay_MassErase_Time
// 實現(xiàn)功能:    擦除全部扇區(qū)的延時
// 入口參數(shù):   無
// 出口參數(shù):   無
// 破壞寄存器:  r2
//======================================================
.PUBLIC F_Delay_MassErase_Time;
F_Delay_MassErase_Time:	.PROC
			r2 = C_MassErase_Time;		
?L_Wait_MassErase_Time_Over:							       
			call	F_Delay_Program_Time;
			r2- = 1;						
			jnz ?L_Wait_MassErase_Time_Over;		
			retf;						
.ENDP

//======================================================
// 函數(shù)名稱:	F_Delay_SectorErase_Time
// 實現(xiàn)功能:    擦除一個扇區(qū)的延時
// 入口參數(shù):   無
// 出口參數(shù):   無
// 破壞寄存器:  r2
//======================================================
.PUBLIC F_Delay_SectorErase_Time;
F_Delay_SectorErase_Time: .PROC
			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;						
.ENDP

//======================================================
// 函數(shù)名稱:	F_Delay_Program_Time
// 實現(xiàn)功能:    寫入一個Byte的延時
// 入口參數(shù):   無
// 出口參數(shù):   無
// 破壞寄存器:  r1
//======================================================
.PUBLIC F_Delay_Program_Time;
F_Delay_Program_Time: .PROC
			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
.ENDP

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国模大尺度一区二区三区| 国产网站一区二区三区| 亚洲午夜激情av| 在线一区二区三区四区| 亚洲国产欧美另类丝袜| 欧美视频一区在线观看| 午夜精品aaa| 日韩一区二区影院| 国产精品中文字幕日韩精品| 国产视频不卡一区| 一本久久综合亚洲鲁鲁五月天 | 91麻豆精品国产91久久久| 日本成人在线不卡视频| 亚洲精品一区二区三区在线观看| 国产成人在线影院| 一区二区三区久久| 91精品欧美综合在线观看最新| 紧缚奴在线一区二区三区| 国产精品乱码人人做人人爱| 欧美综合在线视频| 精品一区免费av| 亚洲视频一二三| 日韩一区二区三区四区五区六区 | 国产欧美一区二区三区鸳鸯浴| av综合在线播放| 亚洲国产aⅴ成人精品无吗| 精品免费日韩av| 91麻豆免费在线观看| 日日摸夜夜添夜夜添精品视频 | 东方aⅴ免费观看久久av| 一二三四区精品视频| 久久蜜桃一区二区| 欧美午夜精品久久久久久孕妇| 久久国产人妖系列| 一区二区三区产品免费精品久久75| 久久一夜天堂av一区二区三区| 色94色欧美sute亚洲线路二| 麻豆国产精品视频| 一级日本不卡的影视| 久久色.com| 欧美精品vⅰdeose4hd| 成人av第一页| 久久国内精品视频| 婷婷久久综合九色综合绿巨人 | 欧美性高清videossexo| 国产成人午夜片在线观看高清观看| 亚洲一区二区三区四区在线| 国产日韩精品一区二区三区在线| 欧美日韩国产免费一区二区 | 香蕉加勒比综合久久| 国产精品久久久久久久浪潮网站| 日韩午夜激情免费电影| 日本电影亚洲天堂一区| 懂色av一区二区三区免费看| 麻豆精品视频在线观看| 午夜免费欧美电影| 亚洲欧美日韩电影| 国产精品理论在线观看| 久久久精品国产99久久精品芒果| 日韩视频一区二区三区 | gogo大胆日本视频一区| 国产毛片精品一区| 麻豆久久久久久| 日产欧产美韩系列久久99| 亚洲欧美激情插| 亚洲天堂免费在线观看视频| 亚洲国产精品v| 日本一区二区免费在线 | 亚洲欧洲av一区二区三区久久| 精品日韩av一区二区| 欧美一区二区三区在线视频| 精品视频1区2区| 欧美人动与zoxxxx乱| 欧美色综合影院| 欧美亚日韩国产aⅴ精品中极品| 色欧美日韩亚洲| 91福利视频在线| 欧美亚洲综合久久| 欧美日本国产视频| 日韩一区二区视频| 精品国产一区二区三区久久久蜜月| 欧美一级日韩不卡播放免费| 欧美一区二区三区性视频| 制服丝袜亚洲精品中文字幕| 91精品国产综合久久久久久久 | 欧美日韩二区三区| 3atv在线一区二区三区| 欧美大片国产精品| 国产欧美精品区一区二区三区| 国产精品久久一级| 亚洲精品网站在线观看| 亚洲午夜电影在线| 青青草97国产精品免费观看无弹窗版| 日韩av电影一区| 国产成人丝袜美腿| 91久久线看在观草草青青| 欧美三级中文字| 欧美mv日韩mv国产| 中文字幕免费不卡在线| 亚洲一区精品在线| 日韩国产高清影视| 国产成人在线视频网站| 色综合久久久久久久久久久| 欧美久久一二三四区| 久久综合久久鬼色| 亚洲欧美日韩国产综合| 日韩精品成人一区二区三区| 国产一区二区在线观看视频| 99久久er热在这里只有精品15| 欧美性感一类影片在线播放| 精品国产一区二区三区四区四| 国产精品色哟哟| 婷婷亚洲久悠悠色悠在线播放| 国产乱子轮精品视频| 91免费版在线看| 欧美成人一区二区三区| 综合婷婷亚洲小说| 美女mm1313爽爽久久久蜜臀| 91在线国产观看| 日韩精品最新网址| 亚洲人精品一区| 黄网站免费久久| 91麻豆免费观看| 欧美videos中文字幕| 亚洲蜜臀av乱码久久精品蜜桃| 美脚の诱脚舐め脚责91| 色综合久久综合网欧美综合网| 日韩午夜三级在线| 亚洲自拍另类综合| 成人免费毛片app| 91麻豆精品国产综合久久久久久| 国产精品久久久久aaaa| 日av在线不卡| 91福利视频在线| 中文字幕一区二区三区在线观看| 久久国产精品99久久人人澡| 欧美在线观看一区| 国产精品三级电影| 韩国女主播一区二区三区| 精品视频1区2区| 亚洲三级久久久| 高清久久久久久| 精品国一区二区三区| 日韩精品成人一区二区三区| 在线观看视频一区| 中文字幕不卡在线播放| 精品在线播放午夜| 日韩欧美一级二级三级| 亚洲va国产天堂va久久en| 色综合激情五月| 国产精品麻豆视频| 国产99久久久国产精品免费看| 亚洲精品在线观| 极品尤物av久久免费看| 日韩欧美视频在线| 日产精品久久久久久久性色| 欧美日韩国产一二三| 亚洲在线免费播放| 色婷婷综合久久久| 亚洲天堂免费在线观看视频| 成人一区二区三区视频 | 成人精品视频网站| 国产精品麻豆一区二区| 成人黄色在线网站| 欧美高清在线精品一区| 成人a免费在线看| 国产精品乱人伦中文| 成人精品免费看| 国产精品久久夜| 9人人澡人人爽人人精品| 中文字幕中文字幕在线一区| 粗大黑人巨茎大战欧美成人| 亚洲国产精品v| 91丨porny丨最新| 亚洲免费在线电影| 在线观看www91| 午夜av一区二区| 日韩精品综合一本久道在线视频| 日本不卡高清视频| 久久亚洲一区二区三区明星换脸| 国产一区二区三区精品视频| 国产午夜精品福利| 国产99久久久精品| 亚洲激情图片一区| 91精品久久久久久久99蜜桃| 精品一区二区在线播放| 国产欧美视频一区二区| av成人老司机| 亚洲国产欧美在线| 日韩美女天天操| 成人丝袜视频网| 一区二区三区小说| 91精品国产一区二区| 国产精品一区二区男女羞羞无遮挡| 欧美国产欧美综合| 日本高清免费不卡视频| 琪琪一区二区三区| 国产精品天干天干在观线| 欧美主播一区二区三区美女| 蜜臀av一区二区在线免费观看|