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

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

?? i2c24xx.asm

?? I2C程序
?? ASM
字號:
;=============================================================================
;軟件模擬I2C總線對24XX01/02/04/08/16/32/64系列串行EEPROM進行讀寫程序
;說明:24XX01的頁操作緩沖區是8字節,24XX02/04/08/16的頁操作緩沖區是16字節
;     24XX32/64的頁操作緩沖區是32字節
;=============================================================================
SCL			BIT		P1.0		;24系列串行EEPROM的時序控制端
SDA			BIT		P1.1		;24系列串行EEPROM的數據控制端
WP			BIT		P1.2		;24系列串行EEPROM的數據寫操作使能控制端
;
EEPROM_ACK_LABL		BIT		MAIN_LABL0.0	;24系列串行EEPROM寫應答標志位,“0”表示正確應答
RCV_RUN_LABL		BIT		MAIN_LABL0.1	;24系列串行EEPROM讀請求標志位,“0”表示允許讀數據
I2C_24XX_TYPE_LABL	BIT		MAIN_LABL0.2	;24系列串行EEPROM的器件類型標志位,“0”表示為24XX01/02/04/08/16,“1”表示為24XX32/64
;
I2C_24XX_SLAVE_ADDR	EQU		10100000B	;24系列串行EEPROM的器件從設備當前地址
;
;=============================================================================
; 延時子程序
;=============================================================================
DELAY5US:	MOV	R5,#3
		DJNZ	R5,$
		RET
;=============================================================================
;發送I2C起始位程序
;=============================================================================
START_I2C:	SETB	SDA				;發送起始條件的數據信號
		NOP
		SETB	SCL				;發送起始條件的時鐘信號
		CALL	DELAY5US
		CLR	SDA				;發送起始信號
		CALL	DELAY5US
		CLR	SCL				;鉗住I2C總線準備發送或接收數據
		RET
;=============================================================================
;發送I2C停止位程序
;=============================================================================
STOP_I2C:	CLR	SDA				;發送停止條件的數據信號
		NOP
		SETB	SCL				;發送停止條件的時鐘信號
		CALL	DELAY5US
		SETB	SDA				;發送I2C總線停止信號
		CALL	DELAY5US
		RET
;
;=============================================================================
;發送一個字節數據或地址給被控器(24XX01/02/04/08/16/32/64系列串行EEPROM)程序
;入口:待發送的數據在ACC中(被控制器的地址當前已指定)
;出口:標志位EEPROM_ACK_LABL=0表示發送數據正常,EEPROM_ACK_LABL=1表示發送數據失敗、被控器無應答或損壞
;=============================================================================
SENT_BYTE:	MOV	R7,#08H				;要傳送的數據長度為8位
SENT_BYTE_01:	RLC	A				;要發送的數據左移,發送位入C
		JC	SENT_BYTE_02			;發送位為“1”轉發送數據位“1”
		CLR	SDA				;發送數據位“0”
		JMP	SENT_BYTE_03			;轉發送數據位
SENT_BYTE_02:	SETB	SDA				;發送數據位“1”
		NOP
SENT_BYTE_03:	NOP
		SETB	SCL				;置時鐘線為高通知被控器開始接收數據位
		CALL	DELAY5US
		CLR	SCL				;鉗住總線準備接收下一個數據位
		DJNZ	R7,SENT_BYTE_01			;8位沒發送完繼續發送
		CLR	EEPROM_ACK_LABL			;預先清發送數據狀態標志
		MOV	R6,#6
SENT_BYTE_04:	NOP
		NOP
		SETB	SDA				;8位發送完后釋放數據線準備收應答位
		NOP
		NOP
		SETB	SCL				;開始接收應答信號
		NOP
		NOP
		JNB	SDA, SENT_BYTE_END		;判斷是否接收到應答信號正常轉SENT_BYTE_END
		DJNZ	R6,SENT_BYTE_04
		SETB	EEPROM_ACK_LABL			;未收到應答置位錯誤標志
SENT_BYTE_END:	NOP
		CLR	SCL				;發送結束鉗住總線準備下一步發送或接收數據或進行其它處理
		RET
;
;=============================================================================
;從被控制器(24XX01/02/04/08/16/32/64系列串行EEPROM)讀取一個字節數據程序
;入口:RCV_RUN_LABL為是否允許后續再次讀取數據標志位(被控制器的地址當前已指定)
;出口:讀取的數據存放在ACC中
;=============================================================================
RCV_BYTE:	SETB	SDA				;置數據線為輸入方式
		MOV	R7,#08H				;要傳送的數據長度為8位
RCV_BYTE_01:	NOP
		CLR	SCL				;置時鐘線為低準備接收數據位
		CALL	DELAY5US
		SETB	SCL				;置時鐘線為高使數據線上數據有效
		CALL	DELAY5US
		CLR	C				;準備將接收的數據位放入ACC中
		JNB	SDA,RCV_BYTE_02			;讀數據位若為“0”則置C=0并轉RCV_BYTE_02接收數據位
		SETB	C				;讀數據位若為“1”則置C=1
RCV_BYTE_02:	RLC	A				;接收的數據位放入ACC中
		NOP
		NOP
		DJNZ	R7,RCV_BYTE_01			;8位沒收完繼續接收
		CLR	SCL				;8位接收完置時鐘線和數據線為低準備發送應答或非應答信號
		NOP
		NOP
		NOP
		CLR	SDA
		JNB	RCV_RUN_LABL,RCV_BYTE_03	;判斷是否需要繼續接收字節數據若需要則轉RCV_BYTE_03發送應答位
		SETB	SDA				;發送非應答信號
RCV_BYTE_03:	NOP					;以下程序發送應答位
		NOP
		SETB	SCL				;置時鐘線為高使應答位有效
		CALL	DELAY5US
		CLR	SCL				;清時鐘線鉗住I2C總線以便繼續接收字接數據或發送停止條件
		CLR	RCV_RUN_LABL			;清接收非應答標志
		NOP
		NOP
		CLR	SDA
		RET
;
;=============================================================================
;向被控制器(24XX01/02/04/08/16/32/64系列串行EEPROM)寫入多個字節數據程序
;入口:DPTR為待寫入的數據的首地址,R0為待寫入數據的存儲緩存區首地址,R2為待寫入數據的字節數,
;     I2C_24XX_TYPE_LABL為當前24系列串行EEPROM的器件類型,“0”表示為24XX01/02/04/08/16,“1”表示為24XX32/64
;出口:數據寫入正常,標志位EEPROM_ACK_LABL=0;否則EEPROM_ACK_LABL=1
;說明:24XX01的頁操作緩沖區是8字節,24XX02/04/08/16的頁操作緩沖區是16字節
;     24XX32/64的頁操作緩沖區是32字節
;     一次此操作過程只能對本頁內地址進行數據的寫入且字節數不能超過該器件頁緩沖區的字節數。
;=============================================================================
WR_24XX_DATA:	CLR	WP				;寫數據使能允許
		CALL	START_I2C			;發送I2C 總線起始條件
		JB	I2C_24XX_TYPE_LABL,WR_24XX_DATA_01;判斷當前24系列串行EEPROM的器件類型,“0”表示為24XX01/02/04/08/16,“1”表示為24XX32/64
		MOV	A,DPH				;待寫入數據的高位地址
		ANL	A,#0FH				;屏蔽高位地址中的無效數據
		CLR	C				;確定寫操作命令標志
		RLC	A
		ORL	A,#I2C_24XX_SLAVE_ADDR		;被控器總線地址,帶寫入數據的高位地址及寫命令
		CALL	SENT_BYTE			;發送被控器總線地址及數據高位地址及命令
		JB	EEPROM_ACK_LABL,WR_24XX_DATA_END
		SJMP	WR_24XX_DATA_02
WR_24XX_DATA_01:MOV	A,#I2C_24XX_SLAVE_ADDR		;被控器總線地址
		CLR	C				;確定寫操作命令標志
		MOV	ACC.0,C				;確定被控器總線地址及寫命令
		CALL	SENT_BYTE			;發送被控器總線地址及命令
		JB	EEPROM_ACK_LABL,WR_24XX_DATA_END
		MOV	A,DPH				;待寫入數據的高位地址
		CALL	SENT_BYTE			;發送待寫入數據的高位地址
		JB	EEPROM_ACK_LABL,WR_24XX_DATA_END
WR_24XX_DATA_02:MOV	A,DPL				;待寫入的數據首字節地址低位字節
		CALL	SENT_BYTE			;發送待寫入數據的低位地址
		JB	EEPROM_ACK_LABL,WR_24XX_DATA_END
WR_24XX_DATA_03:MOV	A,@R0
		CALL	SENT_BYTE			;發送待寫入的數據字節
		JB	EEPROM_ACK_LABL,WR_24XX_DATA_END
		INC	R0
		DJNZ	R2,WR_24XX_DATA_03
		CALL	STOP_I2C			;發送I2C 總線停止條件
		MOV	R7,#28H				;延時10ms,等待數據寫完
		MOV	R6,#00H
WR_24XX_DATA_04:DJNZ	R6,WR_24XX_DATA_04
		DJNZ	R7,WR_24XX_DATA_04
WR_24XX_DATA_END:
		SETB	WP				;寫數據使能禁止
		RET
;
;=============================================================================
;從被控制器(24XX01/02/04/08/16/32/64系列串行EEPROM)中讀取多個字節數據程序
;入口:DPTR為預讀取的數據的首地址,R2為需要讀取數據的字節數 
;     I2C_24XX_TYPE_LABL為當前24系列串行EEPROM的器件類型,“0”表示為24XX01/02/04/08/16,“1”表示為24XX32/64
;出口:R0為讀取的數據存儲緩存區
;說明:24XX01的頁操作緩沖區是8字節,24XX02/04/08/16的頁操作緩沖區是16字節
;     24XX32/64的頁操作緩沖區是32字節
;     一次此操作過程只能對本頁內地址進行數據的讀取且字節數不能超過該器件頁緩沖區的字節數。
;=============================================================================
RD_24XX_DATA:	CALL	START_I2C			;發送I2C 總線起始條件
		JB	I2C_24XX_TYPE_LABL,RD_24XX_DATA_01;判斷當前24系列串行EEPROM的器件類型,“0”表示為24XX01/02/04/08/16,“1”表示為24XX32/64
		MOV	A,DPH				;待寫入數據的高位地址
		ANL	A,#0FH				;屏蔽高位地址中的無效數據
		CLR	C				;確定寫操作命令標志
		RLC	A	
		ORL	A,#I2C_24XX_SLAVE_ADDR		;被控器總線地址,帶寫入數據的高位地址及寫命令
		CALL	SENT_BYTE			;發送被控器總線地址及數據高位地址及命令
		JB	EEPROM_ACK_LABL,RD_24XX_DATA_END
		SJMP	RD_24XX_DATA_02
RD_24XX_DATA_01:MOV	A,#I2C_24XX_SLAVE_ADDR		;被控器總線地址
		CLR	C				;確定寫操作命令標志
		MOV	ACC.0,C				;確定被控器總線地址及寫命令
		CALL	SENT_BYTE			;發送被控器總線地址及命令
		JB	EEPROM_ACK_LABL,RD_24XX_DATA_END
		MOV	A,DPH				;待寫入數據的高位地址
		CALL	SENT_BYTE			;發送待寫入數據的高位地址
		JB	EEPROM_ACK_LABL,RD_24XX_DATA_END
RD_24XX_DATA_02:MOV	A,DPL				;待寫入的數據首字節地址低位字節
		CALL	SENT_BYTE			;發送地址低位字節
		JB	EEPROM_ACK_LABL,RD_24XX_DATA_END
		CALL	START_I2C			;重復發送I2C 總線起始條件
		JB	I2C_24XX_TYPE_LABL,RD_24XX_DATA_03;判斷當前24系列串行EEPROM的器件類型,“0”表示為24XX01/02/04/08/16,“1”表示為24XX32/64
		MOV	A,DPH				;待讀取數據的高位地址
		ANL	A,#0FH				;屏蔽高位地址中的無效數據
		SETB	C				;確定讀操作命令標志
		RLC	A
		ORL	A,#I2C_24XX_SLAVE_ADDR		;被控器總線地址,帶寫入數據的高位地址及寫命令
		SJMP	RD_24XX_DATA_04
RD_24XX_DATA_03:MOV	A,#I2C_24XX_SLAVE_ADDR		;被控器總線地址
		SETB	C				;確定讀操作命令標志
		MOV	ACC.0,C				;確定被控器總線地址及寫命令
RD_24XX_DATA_04:CALL	SENT_BYTE			;發送被控器總線地址及命令
		JB	EEPROM_ACK_LABL,RD_24XX_DATA_END
		CLR	RCV_RUN_LABL			;預設置允許后續繼續接收數據
RD_24XX_DATA_05:DJNZ	R2,RD_24XX_DATA_06
		SETB	RCV_RUN_LABL			;設置禁止后續繼續接收數據
		CALL	RCV_BYTE			;接收數據	
		MOV	@R0,A
		INC	R0
		CALL	STOP_I2C			;發送I2C 總線停止條件
		SJMP	RD_24XX_DATA_END
RD_24XX_DATA_06:CALL	RCV_BYTE			;接收數據	
		MOV	@R0,A
		INC	R0
		SJMP	RD_24XX_DATA_05
RD_24XX_DATA_END:
		RET
;





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久蜜臀粉嫩 | 美女视频黄 久久| 欧美日本视频在线| 丝袜美腿成人在线| 精品久久久影院| 成人自拍视频在线| 亚洲午夜激情网页| 久久综合中文字幕| 色先锋aa成人| 精品亚洲欧美一区| 一区二区三区中文字幕电影| 在线亚洲+欧美+日本专区| 精品一区二区三区免费视频| 国产精品毛片大码女人| 日韩一区二区三区免费观看| 成人免费毛片片v| 日本伊人色综合网| 亚洲色图制服丝袜| 久久奇米777| 欧美另类z0zxhd电影| 99国内精品久久| 国产乱码字幕精品高清av| 亚洲午夜国产一区99re久久| 久久久久久久久岛国免费| 欧美丰满嫩嫩电影| 色综合久久天天综合网| 国产精品12区| 久久精品理论片| 亚洲成人在线网站| 亚洲欧美日韩精品久久久久| 国产片一区二区三区| 欧美成人高清电影在线| 欧美人妇做爰xxxⅹ性高电影| 国产91丝袜在线观看| 久久99精品久久久久久国产越南| 亚洲午夜羞羞片| 亚洲色大成网站www久久九九| 久久久另类综合| 精品国精品国产| 在线成人午夜影院| 欧美日韩另类一区| 色素色在线综合| 91视频一区二区三区| 成人动漫一区二区在线| 国产美女视频一区| 狠狠狠色丁香婷婷综合激情| 美女看a上一区| 免费国产亚洲视频| 黄色小说综合网站| 国产一区二区三区免费看| 久久国产精品72免费观看| 三级久久三级久久久| 日本一区中文字幕| 欧美a一区二区| 另类的小说在线视频另类成人小视频在线 | 亚洲免费看黄网站| 亚洲精选视频在线| 亚洲精品中文在线影院| 亚洲黄色尤物视频| 午夜欧美在线一二页| 日本欧美韩国一区三区| 久久精品国产一区二区三区免费看| 蜜臀av一区二区在线观看| 久久超碰97中文字幕| 国产精一品亚洲二区在线视频| 国产精品一区二区免费不卡| 成人教育av在线| 色狠狠av一区二区三区| 欧美日韩二区三区| 欧美videos中文字幕| 亚洲国产精品av| 樱花影视一区二区| 日韩av一区二区在线影视| 蜜臂av日日欢夜夜爽一区| 成人午夜免费av| 欧美乱熟臀69xxxxxx| 日韩精品一区二区在线| 亚洲国产成人午夜在线一区| 国产精品不卡在线| 青青国产91久久久久久| 粉嫩av一区二区三区| 欧美日韩国产美女| 国产日韩在线不卡| 亚洲一二三区在线观看| 久久精品久久综合| 色婷婷久久久综合中文字幕| 69久久99精品久久久久婷婷| 国产日韩欧美一区二区三区综合| 亚洲欧美电影一区二区| 久久99精品一区二区三区三区| 成人福利电影精品一区二区在线观看| 欧美亚洲综合网| 国产色91在线| 石原莉奈在线亚洲二区| av电影在线不卡| 日韩欧美国产系列| 亚洲国产美女搞黄色| 成人在线视频一区二区| 精品嫩草影院久久| 亚洲va在线va天堂| 91免费看片在线观看| 日韩三级视频在线观看| 一个色在线综合| 成人免费毛片高清视频| 精品日韩在线观看| 亚洲一区二区三区四区不卡| av电影在线观看一区| 国产欧美日本一区视频| 久久99久久99精品免视看婷婷| 欧美美女网站色| 亚洲卡通欧美制服中文| 国产91色综合久久免费分享| 欧美一区二区三区四区五区 | 日韩欧美国产1| 舔着乳尖日韩一区| 在线观看免费一区| 亚洲精品菠萝久久久久久久| eeuss鲁片一区二区三区| 久久久综合九色合综国产精品| 男女男精品网站| 日韩一区二区三区电影| 奇米四色…亚洲| 日韩一区二区三区免费观看| 日韩精品电影一区亚洲| 精品视频1区2区3区| 亚洲欧洲综合另类在线| 97久久超碰国产精品| 亚洲情趣在线观看| 91久久久免费一区二区| 日韩理论片在线| 在线亚洲免费视频| 五月天亚洲精品| 欧美一卡2卡3卡4卡| 麻豆成人91精品二区三区| 日韩女优毛片在线| 国产精品一区二区久久不卡| 国产亚洲福利社区一区| 成人污视频在线观看| 国产精品久久久久久妇女6080| 成人午夜在线视频| 有码一区二区三区| 91精品福利在线一区二区三区| 六月婷婷色综合| 国产精品天干天干在线综合| 91社区在线播放| 午夜精品久久久久久久蜜桃app| 欧美一区二区三区视频在线| 国产精品自拍在线| 国产精品国产三级国产a| 欧美日韩一区高清| 国产一区二区剧情av在线| 亚洲国产精品激情在线观看| 91麻豆国产自产在线观看| 亚洲mv在线观看| 久久精品视频网| 在线观看一区不卡| 狠狠久久亚洲欧美| 一区二区三区四区亚洲| 26uuu成人网一区二区三区| 暴力调教一区二区三区| 视频一区中文字幕| 国产精品福利电影一区二区三区四区| 欧美日韩一区二区在线观看| 国产精品一区在线观看你懂的| 亚洲综合视频在线| 国产亚洲综合性久久久影院| 欧洲一区二区av| 粉嫩av一区二区三区粉嫩| 亚洲成av人在线观看| 国产精品久久久久影院老司 | 中文字幕亚洲一区二区av在线| 欧美日本国产视频| 一本色道久久综合狠狠躁的推荐| 蜜桃视频在线观看一区| 一区二区三区在线观看欧美| 国产日韩三级在线| 337p粉嫩大胆噜噜噜噜噜91av| 欧美私人免费视频| 欧美美女一区二区在线观看| 国产成人免费视频网站| 精品无人区卡一卡二卡三乱码免费卡 | 日韩你懂的在线播放| 欧美在线免费观看亚洲| 不卡的av电影| 国产一区二区在线影院| 视频一区在线播放| 五月天激情综合网| 亚洲一区在线观看免费 | 欧美日韩国产天堂| 色综合中文字幕国产 | 国产精品卡一卡二卡三| 精品日韩欧美一区二区| 欧美一区二区三区小说| 欧美嫩在线观看| 欧美三级电影一区| 在线观看91精品国产入口| 在线亚洲高清视频| 色噜噜狠狠成人网p站| 99久久久无码国产精品| 成人av午夜影院|