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

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

?? wreeprom.s

?? 基于ARM7的LPC21XX系列的部分匯編源碼
?? S
字號:
;******************************************************************************	
; 文件名:WREEPROM.S
; 功能:使用硬件I2C對CSI24WC02進行讀寫操作。若操作失敗,則進行報警。
;      使用查詢方式操作I2C。
; 說明:將跳線器JP9、J4_LED4短接。
;******************************************************************************	
			INCLUDE		LPC2294.INC	
			EXPORT  	MAIN

I2C_BASE	EQU		0xE001C000

LEDCON		EQU	    (1<<25)			; LED4控制,用于報警顯示

CSI24WC02	EQU	    0xA0			; 定義CSI24WC02從地址

RDBUF	    EQU     0x40002F00      ; 數據接收緩沖區
		
		
		    AREA   	WREEPROMC,CODE,READONLY 		    
		    CODE32					
MAIN 		LDR	    SP,=0x40003000	; 設置堆棧指針SP
		    LDR	    R0,=PINSEL0		; 設置I2C控制口有效
		    MOV	    R1,#0x50		
		    STR	    R1,[R0]

		    LDR	    R0,=IO0DIR		; 設置LED4控制口為輸出				
		    MOV	    R1,#LEDCON
		    STR	    R1,[R0]	
		    
		    BL		SYSCLK_INI		; 設置系統時鐘
		    
		    LDR     R0,=I2C_BASE
		    MOV     R1,#14
		    STR     R1,[R0,#0x10]   ; I2SCLH=14			
		    STR     R1,[R0,#0x14]   ; I2SCLL=14	
		    
		
		    ; 寫EEPROM
		    MOV	    R2,#CSI24WC02	; 器件從地址
		    MOV	    R3,#0x00		; 存儲地址
		    LDR	    R4,=WRDATA		; 所要寫的數據地址指針
		    MOV	    R5,#5			; 設置寫入EEPROM的數據個數
		    BL	    IWRNBYTE		; 調用IWRNBYTE
		    BL	    DELAYS			; 延時,等待寫周期結束
				
		    ; 讀出并校驗
		    MOV	    R2,#CSI24WC02	; 器件從地址
		    MOV	    R3,#0x00		; 存儲地址
		    LDR	    R4,=RDBUF		; 保存數據的緩沖區地址指針
		    MOV	    R5,#5			; 讀出數據個數
		    BL	    IRDNBYTE		; 調用IRDNBYTE
		    LDR	    R0,[R4]			; 取出數據
		    CMP	    R0,#0x58
		    BLNE	EEPROM_ERR		; 寫出錯,報警
		
		    LDR	    R0,=IO0CLR
		    MOV	    R1,#LEDCON	
		    STR	    R1,[R0]			; LED4控制I/O復位,即LED4點亮
		    B	    .


;******************************************************************************		
; 名稱:SYSCLK_INI
; 功能:設置系統時鐘。(M值為4,P值為2)
; 入口參數:無
; 出口參數:無
; 占用資源:R0、R1		
;******************************************************************************
SYSCLK_INI	
			LDR		R0,=VPBDIV
			MOV		R1,#0x00
			STR		R1,[R0]					; VPBDIV=0x00
			
			LDR		R0,=PLLCFG
			MOV		R1,#0x23
			STR		R1,[R0]					; PLLCFG=0x23,設置M值為4,P值為2
			LDR		R0,=PLLCON
			MOV		R1,#0x01
			STR		R1,[R0]					; PLLCON=0x01
			LDR		R0,=PLLFEED
			MOV		R1,#0xAA
			STR		R1,[R0]					; PLLFEED=0xAA
			MOV		R1,#0x55
			STR		R1,[R0]					; PLLFEED=0x55
WAIT_OK		LDR		R0,=PLLSTAT				
			LDR		R1,[R0]
			ANDS	R1,R1,#0x0400
			BEQ		WAIT_OK					; 等待PLL鎖定
			
			LDR		R0,=PLLCON
			MOV		R1,#0x03
			STR		R1,[R0]
			LDR		R0,=PLLFEED
			MOV		R1,#0xAA
			STR		R1,[R0]
			MOV		R1,#0x55
			STR		R1,[R0]	
			
			MOV		PC,LR
					    
		    
;******************************************************************************	
; 名稱:EEPROM_ERR
; 功能:出錯報警。本程序一直閃動LED報警。
; 入口參數:無
; 出口參數:無
; 占用資源:R0、R1、R7
;******************************************************************************
EEPROM_ERR
EEPROMER_L1	MOV	    R1,#LEDCON		; 設置GPIO控制參數
LEDSET		LDR	    R0,=IO0SET			
		    STR	    R1,[R0]			; LED4控制I/O置位,即LED4熄滅
		    BL	    DELAYS
		
LEDCLR		LDR	    R0,=IO0CLR
		    STR	    R1,[R0]			; LED4控制I/O復位,即LED4點亮
		    BL	    DELAYS
		    B	    EEPROMER_L1
		
		
;******************************************************************************		
; 名稱:DELAYS
; 功能:軟件延時
; 入口參數:無
; 出口參數:無
; 占用資源:R7
;******************************************************************************
DELAYS	
		    MOV	    R7,#0x000FF000	; 延時參數
DELAYS_L1	SUBS	R7,R7,#1		; R7 = R7-1
		    BNE	    DELAYS_L1       ; 判斷R7-1結果是否為0,若不為0則跳轉
		    MOV	    PC,LR			; 返回	
		
		    ALIGN				    ; 數據字對齊
		    LTORG				    ; 聲明文字池
		
		
WRDATA	    DCD  	0x58, 0x59, 0x60, 0x61, 0x62, 0x00			    
		


		
;******************************************************************************		
; 名稱:START_I2C
; 功能:起動總線
; 入口參數:無
; 出口參數:無
; 占用資源:R0、R1		
;******************************************************************************
START_I2C
		    LDR	    R0,=I2C_BASE
		
		    MOV	    R1,#0x2C
		    STR	    R1,[R0,#0x18]	; 清除所有標志位(I2CONCLR=0x2C)
		
		    MOV	    R1,#0x40
		    STR	    R1,[R0]			; 設置為主機(I2CONSET=0x40) 
		    MOV	    R1,#0x60		
		    STR	    R1,[R0]			; 起動總線,AA=0
START_I2CL1	LDR	    R1,[R0]			; 等待SI為1
		    ANDS	R1,R1,#0x08
		    BEQ	    START_I2CL1
		
		    MOV	    PC,LR			; 返回
	
	
;******************************************************************************		
; 名稱:SENDBYTE			
; 功能:發送一字節數據
; 入口參數:R2	要發送的數據,低8位有效
; 出口參數:無
; 占用資源:R0、R1、R2
;******************************************************************************
SENDBYTE
		    LDR	    R0,=I2C_BASE 
				
		    STR	    R2,[R0,#0x08]	; 發送數據,I2DAT=data
		    MOV	    R1,#0x28		
		    STR	    R1,[R0,#0x18]	; 清除標志位STA,SI(I2CONCLR=0x28)
		
SENDBYTE_L1	LDR	    R1,[R0]			; 等待SI為1
		    ANDS	R1,R1,#0x08
		    BEQ	    SENDBYTE_L1
		
		    MOV	    PC,LR
	
	
;******************************************************************************		
; 名稱:RCVBYTE_NA
; 功能;接上I2C總線上一字節數據,并發送非應答位
; 入口參數:無
; 出口參數:R2		讀出的數據
; 占用資源;R0、R1、R2
;******************************************************************************
RCVBYTE_NA		
		    LDR	    R0,=I2C_BASE	
		
		    MOV	    R1,#0x0C
		    STR	    R1,[R0,#0x18]	; 清零AA,即發送非應答位. 同時清除SI,允許接收數據(I2CONCLR=0x0C)
			
RCVBYTE_NAL1  
            LDR	    R1,[R0]			; 等待SI為1
		    ANDS	R1,R1,#0x08
		    BEQ	    RCVBYTE_NAL1
		    LDR	    R2,[R0,#0x08]	; 讀取接收到的數據		
		
		    MOV	    PC,LR
		
		
;******************************************************************************		
; 名稱:RCVBYTE_A
; 功能;接上I2C總線上一字節數據,并發送應答位
; 入口參數:無
; 出口參數:R2		讀出的數據
; 占用資源;R0、R1、R2
;******************************************************************************
RCVBYTE_A		
		    LDR	    R0,=I2C_BASE	
		
		    ; 置位AA,即發送應答位. 同時清除SI,允許接收數據(I2CONCLR=0x08)
		    MOV     R1,#0x04
		    STR		R1,[R0]
		    MOV	    R1,#0x08
		    STR	    R1,[R0,#0x18]	
			
RCVBYTE_AL1	LDR	    R1,[R0]			; 等待SI為1
		    ANDS	R1,R1,#0x08
		    BEQ	    RCVBYTE_AL1
		    LDR	    R2,[R0,#0x08]	; 讀取接收到的數據		
		
		    MOV	    PC,LR		
		

;******************************************************************************
; 名稱:STOP_I2C
; 功能:結束總線
; 入口參數:無
; 出口參數:無
; 占用資源:R0、R1
;******************************************************************************
STOP_I2C
		    LDR	    R0,=I2C_BASE	
		
		    MOV	    R1,#0x2C
		    STR	    R1,[R0,#0x18]	; 清除標志位STA,SI。(I2CONCLR=0x2C)	
		    MOV	    R1,#0x50
		    STR	    R1,[R0]			; 發送結束總線信號
		
		    MOV	    PC,LR
		
			
;******************************************************************************		
; 名稱:IWRBYTE
; 功能:向指定從機,發送一字節數據。(無子地址)
; 入口參數:R2		從要地址
;	   R3		所要發送的數據
; 出口參數:無
; 占用資源:R0、R1、R2、R3
;******************************************************************************
IWRBYTE
		    STMFD	SP!,{R0-R7,LR}
		
		    BL	    START_I2C		; 起動總線
		    BL	    SENDBYTE		; 發送從機地址
		    MOV	    R2,R3
		    BL	    SENDBYTE		; 發送數據
		    BL	    STOP_I2C		; 結束總線
		
		    LDMFD	SP!,{R0-R7,PC}	; 返回操作
		

;******************************************************************************
; 名稱:IWRNBYTE
; 功能:向指定從機,發送多字節數據。
; 入口參數:R2		從要地址
;	   R3		子地址
;	   R4		要發送的數據的地址指針
; 	   R5		要發送的數據個數
; 出口參數:無
; 占用資源:R0、R1、R2、R3、R4、R5
;******************************************************************************
IWRNBYTE
		    STMFD	SP!,{R0-R7,LR}
		    CMP	    R5,#0			; 參數過濾,若發送個數為0,則直接退出
		    BEQ	    IWRNBYTE_END
		
		    BL	    START_I2C		; 起動總線
		    BL	    SENDBYTE		; 發送從機地址
		    MOV	    R2,R3
		    BL	    SENDBYTE		; 發送子地址
		
IWRNBYTE_L1	LDR	    R2,[R4],#4		; 讀取要發送的數據,且R4 = R4 + 4
		    BL	    SENDBYTE		; 發送數據
		    SUBS	R5,R5,#1
		    BNE	    IWRNBYTE_L1
		
		    BL	    STOP_I2C		; 結束總線
		
IWRNBYTE_END	
            LDMFD	SP!,{R0-R7,PC}	; 返回操作
		

;******************************************************************************		
; 名稱:IRDBYTE
; 功能:向指定從機讀取一字節數據。(無子地址)
; 入口參數:R2		從要地址
; 出口參數:R2		讀出的數據
; 占用資源:R0、R1、R2
; 說明:本程序會對從機地址進行自動加1處理		
;******************************************************************************
IRDBYTE
		    STMFD	SP!,{R0,R1,R3-R7,LR}
		
		    ADD	    R2,R2,#1		; 設置為讀操作
		    BL	    START_I2C		; 起動總線
		    BL	    SENDBYTE		; 發送從機地址
		    BL	    RCVBYTE_NA		; 接收1字節數據,并發送非應答位
		    BL	    STOP_I2C		; 結束總線
				
		    LDMFD	SP!,{R0,R1,R3-R7,PC}		; 返回操作
		
		
;******************************************************************************		
; 名稱:IRDNBYTE
; 功能:向指定從機讀取多字節數據。
; 入口參數:R2		從要地址
;	   R3		子地址
;	   R4		要接收的數據的地址指針
; 	   R5		要發送的數據個數
; 出口參數:無
; 占用資源:R0、R1、R2、R3、R4、R5、R6
; 說明:本程序會對從機地址進行自動加1處理	
;******************************************************************************
IRDNBYTE
		    STMFD	SP!,{R0-R7,LR}
		    CMP	    R5,#0			; 入口參數過濾,若操作數據個數為0,直接退出
		    BEQ	    IRDNBYTE_END
		
		    BL	    START_I2C		; 起動總線
		    BL	    SENDBYTE		; 發送從機地址
		    MOV	    R6,R2			; 暫存從機地址
		    MOV	    R2,R3
		    BL	    SENDBYTE		; 發送子地址		
		    MOV	    R2,R6
				
		    BL	    START_I2C		; 重新啟動總線	
		    ADD	    R2,R2,#1
		    BL	    SENDBYTE		; 發送從機地址
		
IRDNBYTE_L2	CMP	    R5,#1
		    BLNE	RCVBYTE_A
		    BLEQ	RCVBYTE_NA
		    STR	    R2,[R4],#4		; 保存讀出的數據
		    SUBS	R5,R5,#1
		    BNE	    IRDNBYTE_L2		; 判斷是否讀完畢
	
		    BL	    STOP_I2C		; 結束總線		
		
IRDNBYTE_END	
            LDMFD	SP!,{R0-R7,PC} 
		
		
		    END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄页视频在线91| 成人动漫一区二区在线| 日本韩国欧美一区| 一区二区久久久| 欧美日韩黄视频| 美女视频黄 久久| 国产欧美一区二区精品仙草咪| 国产盗摄一区二区三区| 国产精品免费av| 欧美日韩在线播放三区四区| 美女在线观看视频一区二区| 久久综合狠狠综合久久综合88 | 欧美日本在线观看| 青青草国产成人av片免费| 久久精品男人天堂av| 91麻豆产精品久久久久久| 三级亚洲高清视频| 国产欧美日韩不卡| 久久久国产精华| 欧美一级高清片| 国产欧美视频一区二区| 免费一级片91| 欧美国产激情二区三区| 欧美调教femdomvk| 国产老肥熟一区二区三区| 亚洲欧美另类在线| 日韩欧美成人一区| 色婷婷综合久色| 国内精品伊人久久久久av影院| 中文字幕制服丝袜一区二区三区| 欧美日韩一区二区三区视频| 国产精品99久久久久久宅男| 成人免费一区二区三区视频| 日韩欧美一区在线观看| 国产999精品久久久久久| 亚洲一区二区中文在线| 国产日产欧美精品一区二区三区| 欧美日韩国产综合久久| 粉嫩一区二区三区性色av| 午夜精品一区在线观看| 久久麻豆一区二区| www.久久久久久久久| 成人动漫一区二区| 亚洲精品在线免费观看视频| 久久亚洲精精品中文字幕早川悠里| 国产亚洲精品久| 亚洲成人精品在线观看| 久久久久久久精| 91成人免费在线| 国产风韵犹存在线视精品| 日韩国产精品久久久| 国产日韩欧美激情| 欧美一区二区三区婷婷月色| 91最新地址在线播放| 国产麻豆欧美日韩一区| 日韩精彩视频在线观看| 一区二区三区91| 国产精品视频一二三| 日韩一区二区精品在线观看| 欧洲中文字幕精品| 国产成人亚洲综合a∨婷婷| 丁香网亚洲国际| 国产精品一区二区x88av| 成人欧美一区二区三区在线播放| 精品国产一区二区三区av性色 | 精品一区二区三区免费播放| 爽好久久久欧美精品| 一区二区三区精品| 国产精品久久久久毛片软件| 久久久久久综合| 亚洲精品在线网站| 精品卡一卡二卡三卡四在线| 日韩一本二本av| 欧美一区二区免费| 日韩一区二区精品在线观看| 欧美一级夜夜爽| 日韩一二三四区| 精品电影一区二区| 国产丝袜在线精品| 国产精品久久网站| 亚洲女人****多毛耸耸8| 亚洲免费资源在线播放| 一级做a爱片久久| 亚洲成人资源网| 日本在线不卡一区| 蜜桃精品视频在线| 国产一区二区三区精品视频| 国产成人亚洲精品狼色在线| 成人app网站| 91福利社在线观看| 91精品国产91久久久久久最新毛片 | 国产高清在线精品| 成人动漫在线一区| 国产99精品视频| 精品日韩在线一区| 欧美日韩国产欧美日美国产精品| 9191久久久久久久久久久| 日韩一区二区精品在线观看| 久久久国产午夜精品| 中文字幕一区二区三区精华液| 一区二区视频在线看| 岛国精品在线播放| 色欧美88888久久久久久影院| 欧美日韩一区二区在线观看视频 | 欧洲精品一区二区| 日韩亚洲电影在线| 欧美激情一区二区三区蜜桃视频| 亚洲欧美激情小说另类| 日韩av中文字幕一区二区| 国产91露脸合集magnet| 欧美性大战久久久| 久久久噜噜噜久噜久久综合| 亚洲三级电影网站| 青青青伊人色综合久久| 91在线精品秘密一区二区| 欧美一三区三区四区免费在线看| 国产欧美日韩亚州综合| 午夜激情一区二区| 成人午夜视频免费看| 欧美丰满美乳xxx高潮www| 欧美韩国日本综合| 免费观看日韩av| 99精品一区二区三区| 欧美α欧美αv大片| 亚洲精品成人悠悠色影视| 精品一区二区在线视频| 欧美调教femdomvk| 欧美国产综合一区二区| 蜜臀久久99精品久久久久久9| 99re热视频这里只精品| 26uuu另类欧美亚洲曰本| 亚洲一区二区三区在线看| 成人性视频免费网站| 制服丝袜激情欧洲亚洲| 一区二区三区四区不卡在线| 国产丶欧美丶日本不卡视频| 欧美一区二区三区在线电影| 日韩美女视频一区二区| 国产成人av电影在线| 日韩精品在线看片z| 日韩激情一二三区| 在线观看日韩毛片| 国产精品的网站| 国产精品一区二区三区网站| 精品久久久久久亚洲综合网| 日韩电影在线免费| 欧美三级视频在线播放| 中文字幕综合网| www.日韩av| 欧美高清一级片在线观看| 国产一区不卡视频| 久久这里只有精品视频网| 麻豆精品视频在线观看免费| 91精品国产免费| 日本成人中文字幕在线视频| 欧美顶级少妇做爰| 日韩av中文在线观看| 337p亚洲精品色噜噜狠狠| 亚洲高清视频在线| 精品国产一区久久| 蓝色福利精品导航| 91精品视频网| 青娱乐精品视频| 欧美大片在线观看| 国产一区在线看| 国产日产欧美精品一区二区三区| 国产91精品久久久久久久网曝门 | 不卡一区二区中文字幕| 国产精品久久久久7777按摩| 成人免费三级在线| 专区另类欧美日韩| 91国模大尺度私拍在线视频| 亚洲综合在线观看视频| 欧美日韩一区二区三区视频| 午夜成人免费视频| 日韩免费观看高清完整版| 国产久卡久卡久卡久卡视频精品| 国产午夜亚洲精品羞羞网站| av不卡免费电影| 午夜视频一区二区三区| 欧美一区二区三区成人| 国产一区二区看久久| 中文字幕亚洲成人| 欧美性大战久久久| 日韩高清不卡一区| 国产午夜精品一区二区三区四区| 成人免费视频免费观看| 亚洲一线二线三线视频| 日韩欧美激情四射| 国产99久久久久| 亚洲综合在线视频| 日韩欧美国产精品| a级精品国产片在线观看| 亚洲无人区一区| 日韩精品中文字幕一区| 成人动漫一区二区三区| 三级在线观看一区二区| 国产女人aaa级久久久级| 欧美视频一区二区三区在线观看 | 亚洲女性喷水在线观看一区|