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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 4096.asm

?? SPR4096A FLASH的擦除及其讀寫 // SPR4096 的FLASH存儲開機次數 // 涉及的庫: CMacro1016.lib // 組成文件: main.c // 4096
?? 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
//======================================================
// 函數名稱:	_SP_SIOInitial
// 實現功能:    SIO初始化
// 入口參數:   無
// 出口參數:   無
// 破壞寄存器:  r1
//======================================================
.PUBLIC		_SP_SIOInitial;
_SP_SIOInitial:	.PROC
		 	r1  =  0x0098;    		 			//系統時鐘設定,Fosc = 49MHz 
		 	[P_SystemClock]  =  r1;
			r1  =  0x803;						//IOB0:SCK,IOB1:SDA,IOB11:CF7
			[P_IOB_Dir]  =  r1;
			[P_IOB_Attrib]  =  r1;			
			[P_IOB_Buffer]  =  r1;			
		 	retf
.ENDP

//======================================================
// 函數名稱:	_SP_SIOSendAByte
// 實現功能:    往SPR4096寫入一個Byte的數據
// 入口參數:   ulAddr為寫入的地址,uiData為寫入的數據
// 出口參數:   無
// 破壞寄存器:  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;        			// 傳輸數據
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;


//======================================================
// 函數名稱:	_SP_SIOReadAByte
// 實現功能:    從SPR4096讀出一個Byte的數據
// 入口參數:   ulAddr為讀出的地址
// 出口參數:   讀出的數據
// 破壞寄存器:  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];          		// 讀數據
L_WaitSIOReadReady2:               
	        r2 = [P_SIO_Start];
	        test    r2,B_Busy
	        jnz     L_WaitSIOReadReady2
	        [P_SIO_Stop] = r2;            		// 禁止讀模式
	        pop bp,bp from [SP];
	        retf;
.ENDP;

//======================================================
// 函數名稱:	_SP_SIOSendAWord
// 實現功能:    往SPR4096寫入一個Word的數據
// 入口參數:   ulAddr為寫入的地址,uiData為寫入的數據
// 出口參數:   無
// 破壞寄存器:  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;            		// 傳輸數據,低字節
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;            		// 傳輸數據,高字節
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;


//======================================================
// 函數名稱:	_SP_SIOReadAWord
// 實現功能:    從SPR4096讀出一個Word的數據
// 入口參數:   ulAddr為讀出的地址
// 出口參數:   讀出的數據
// 破壞寄存器:  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];          		// 讀數據,低字節
L_WaitSIOReadReady2LB:               
	        r1 = [P_SIO_Start];
	        test    r1,0x0080
	        jnz     L_WaitSIOReadReady2LB
	        
	        r3 = r4&[P_SIO_Data];          		// 讀數據,高字節

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 存放的是讀出的數據
	        pop bp,bp from [SP];
	        retf;
.ENDP;


//======================================================
// 函數名稱:	_SP_SIOMassErase
// 實現功能:    擦除SPR4096的所有扇區
// 入口參數:   無
// 出口參數:   無
// 破壞寄存器:  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;            	// 傳輸數據

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;

//======================================================
// 函數名稱:	_SP_SIOSectorErase
// 實現功能:    擦除SPR4096的一個扇區
// 入口參數:   uiSector,為扇區的編號,0~255可選
// 出口參數:   無
// 破壞寄存器:  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;        		// 傳輸數據

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;



//======================================================
// 函數名稱:	F_Delay_MassErase_Time
// 實現功能:    擦除全部扇區的延時
// 入口參數:   無
// 出口參數:   無
// 破壞寄存器:  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

//======================================================
// 函數名稱:	F_Delay_SectorErase_Time
// 實現功能:    擦除一個扇區的延時
// 入口參數:   無
// 出口參數:   無
// 破壞寄存器:  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

//======================================================
// 函數名稱:	F_Delay_Program_Time
// 實現功能:    寫入一個Byte的延時
// 入口參數:   無
// 出口參數:   無
// 破壞寄存器:  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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄女厕一区二区三区| 一区二区在线电影| 毛片不卡一区二区| 制服视频三区第一页精品| 日日夜夜精品视频免费| 8v天堂国产在线一区二区| 麻豆91免费看| 国产视频一区二区在线| 99久免费精品视频在线观看| 亚洲美女屁股眼交3| 在线免费观看日本欧美| 日韩不卡在线观看日韩不卡视频| 日韩三级中文字幕| 国产成a人无v码亚洲福利| 国产精品乱人伦| 欧美亚洲国产一区二区三区va | 毛片不卡一区二区| 久久这里只精品最新地址| 大陆成人av片| 亚洲已满18点击进入久久| 欧美一二三区在线观看| 国产999精品久久久久久绿帽| 成人欧美一区二区三区黑人麻豆| 欧美四级电影网| 久草精品在线观看| 最新不卡av在线| 91精品欧美福利在线观看| 国产激情一区二区三区| 一区二区欧美国产| 精品国产一二三| 99久久精品费精品国产一区二区| 日日摸夜夜添夜夜添精品视频 | 26uuu精品一区二区三区四区在线| 国产成人av电影免费在线观看| 亚洲精品视频一区二区| 日韩视频在线你懂得| 成人看片黄a免费看在线| 水蜜桃久久夜色精品一区的特点| 精品国产伦一区二区三区免费| 99久久国产综合精品麻豆| 日韩电影在线观看电影| 国产精品传媒在线| 日韩一区二区三区电影| 色哟哟亚洲精品| 激情丁香综合五月| 亚洲成人一区在线| 国产精品人妖ts系列视频| 7777精品伊人久久久大香线蕉| 成人av电影在线| 经典三级视频一区| 午夜精品一区在线观看| 国产精品美女久久久久久久| 精品久久99ma| 欧美精品一二三区| 色呦呦日韩精品| 成人激情小说乱人伦| 久久成人免费网站| 亚洲国产成人va在线观看天堂| 国产精品九色蝌蚪自拍| 久久久综合视频| 欧美一卡在线观看| 欧美伦理视频网站| 在线一区二区三区四区| 不卡在线观看av| 国产99久久久久久免费看农村| 免费观看成人av| 日本伊人午夜精品| 亚洲不卡一区二区三区| 一区二区三区 在线观看视频| 欧美极品少妇xxxxⅹ高跟鞋| 欧美精品一区二区三区视频| 欧美一区二区成人| 日韩一区二区影院| 91精品国产入口在线| 337p亚洲精品色噜噜噜| 欧美乱妇23p| 欧美三级电影网| 欧美日韩亚洲另类| 欧美日韩国产色站一区二区三区| 欧美在线观看视频一区二区三区| 97久久精品人人爽人人爽蜜臀| 成人av资源在线观看| av在线免费不卡| 91丨九色丨尤物| 在线精品视频小说1| 欧美在线综合视频| 在线亚洲欧美专区二区| 欧美性极品少妇| 欧美老肥妇做.爰bbww| 91麻豆精品国产91久久久使用方法| 91精品国产黑色紧身裤美女| 91精品国产aⅴ一区二区| 日韩欧美成人一区二区| 日韩精品中文字幕一区| 亚洲精品一区二区三区香蕉 | 国产三级精品三级| 国产精品视频免费看| 亚洲欧洲无码一区二区三区| 亚洲综合激情网| 日韩电影一区二区三区四区| 久久国产福利国产秒拍| 成人综合婷婷国产精品久久| 一本大道久久a久久精品综合| 欧美三级电影精品| 日韩视频一区二区三区| 欧美韩日一区二区三区| 亚洲一区二区三区四区的| 日韩精品视频网站| 国产成人精品综合在线观看| 色综合久久中文综合久久牛| 4438亚洲最大| 国产精品麻豆久久久| 丝袜美腿亚洲综合| 国产精品小仙女| 91九色最新地址| 欧美成人精品二区三区99精品| 中国av一区二区三区| 午夜精品免费在线| 国产成人在线影院 | 久久精品国产澳门| 成人99免费视频| 欧美一区二区三区在线视频| 中文字幕制服丝袜成人av| 污片在线观看一区二区| 国产91丝袜在线18| 欧美日韩亚洲综合在线| 国产网站一区二区三区| 亚洲二区在线观看| 成人美女视频在线观看18| 欧美一区二区三区四区在线观看| 欧美极品美女视频| 蜜桃av噜噜一区| 91麻豆自制传媒国产之光| 精品久久久久久久人人人人传媒 | 男女性色大片免费观看一区二区 | 91搞黄在线观看| 精品粉嫩超白一线天av| 亚洲国产另类av| 丁香婷婷综合激情五月色| 日韩一区二区三区在线| 亚洲伦理在线精品| 国产aⅴ综合色| 日韩精品最新网址| 亚洲国产精品一区二区久久| av激情综合网| 精品第一国产综合精品aⅴ| 午夜精品久久久久久久久| 91老师国产黑色丝袜在线| 国产午夜一区二区三区| 蜜臀久久久久久久| 欧美乱妇15p| 亚洲激情图片小说视频| 99久久99久久精品免费看蜜桃| 2017欧美狠狠色| 久久99精品国产麻豆婷婷洗澡| 欧美理论片在线| 亚洲午夜精品久久久久久久久| 99久久精品国产网站| 久久精品视频一区二区三区| 精品无人码麻豆乱码1区2区| 日韩西西人体444www| 天堂久久久久va久久久久| 欧美日韩小视频| 亚洲午夜影视影院在线观看| 色国产综合视频| 亚洲精品国产精华液| 99国产精品久久久久久久久久 | 暴力调教一区二区三区| 中文字幕乱码久久午夜不卡| 国产精品一区2区| 国产欧美一区二区三区鸳鸯浴 | 欧美精品免费视频| 亚洲va欧美va人人爽| 欧美日韩电影在线| 天天色天天爱天天射综合| 欧美一区二区国产| 激情图片小说一区| 国产偷v国产偷v亚洲高清| 成人亚洲一区二区一| 综合亚洲深深色噜噜狠狠网站| 91美女片黄在线观看91美女| 亚洲一区二区欧美| 91精品在线麻豆| 黄色精品一二区| 国产精品欧美一区喷水| 99re热视频精品| 亚洲一级片在线观看| 在线综合亚洲欧美在线视频 | 国产麻豆精品theporn| 亚洲国产高清在线| 99亚偷拍自图区亚洲| 亚洲永久免费av| 日韩欧美激情四射| 国产成人亚洲综合a∨婷婷 | 一区二区视频免费在线观看| 欧美精品三级在线观看| 国产高清精品网站| 亚洲视频每日更新| 日韩三级视频在线观看| 国产大陆精品国产|