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

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

?? i2c.inc

?? 51系列模擬I2C通訊
?? INC
字號:
;******************************************************************************
;	I2C.INC
;	標準80C51模擬I2C總線程序(主模式)
;	Copyright (c) 2006,廣州周立功單片機發展有限公司
;	All rights reserved.
;	本程序僅供學習參考,不提供任何可靠性方面的擔保;請勿用于商業目的
;******************************************************************************


;******************************************************************************
;模擬I2C總線基本用法:
;	用$INCLUDE(I2C.INC)命令包含本文件,或者直接復制并插入本文件全部內容
;	在主程序開始處,應當調用一次I2C_Init()
;	發送和接收數據請直接使用I2C_Puts()和I2C_Gets()
;	I2C總線管腳以及延時等參數請根據實際情況修改
;******************************************************************************


;******************************************************************************
;模擬I2C總線的管腳定義
;******************************************************************************
I2C_SCL		BIT	P1.6	;定義I2C總線時鐘信號
I2C_SDA		BIT	P1.7	;定義I2C總線數據信號


;******************************************************************************
;函數:void I2C_Delay()
;功能:模擬I2C總線延時
;說明:請根據具體情況調整延時值
;******************************************************************************
I2C_Delay:
	PUSH	0x02
	MOV	R2, #10
	DJNZ	R2, $
	POP	0x02
	RET


;******************************************************************************
;函數:void I2C_Init()
;功能:I2C總線初始化,使總線處于空閑狀態
;說明:在主程序的開始處,應當執行一次本函數
;******************************************************************************
I2C_Init:
	SETB	I2C_SCL
	CALL	I2C_Delay
	SETB	I2C_SDA
	CALL	I2C_Delay
	RET


;******************************************************************************
;函數:void I2C_Start()
;功能:產生I2C總線的起始條件
;說明:
;	SCL處于高電平期間,當SDA出現下降沿時啟動I2C總線
;	本函數也用來產生重復起始條件
;******************************************************************************
I2C_Start:
	SETB	I2C_SDA
	CALL	I2C_Delay
	SETB	I2C_SCL
	CALL	I2C_Delay
	CLR	I2C_SDA
	CALL	I2C_Delay
	CLR	I2C_SCL
	CALL	I2C_Delay
	RET


;******************************************************************************
;函數:void I2C_Write(byte dat)
;功能:向I2C總線寫1個字節的數據
;參數:dat(R7)是要寫到總線上的數據
;******************************************************************************
I2C_Write:
	PUSH	0x02
	MOV	R2, #8
	MOV	A, R7
I2C_Write_Loop:
	MOV	C, ACC.7
	MOV	I2C_SDA, C
	ADD	A, ACC
	SETB	I2C_SCL
	CALL	I2C_Delay
	CLR	I2C_SCL
	CALL	I2C_Delay
	DJNZ	R2, I2C_Write_Loop
	POP	0x02
	RET


;******************************************************************************
;函數:byte I2C_Read()
;功能:從從機讀取1個字節的數據
;返回:ACC = 讀取的1個字節數據
;******************************************************************************
I2C_Read:
	PUSH	0x02
	MOV	R2, #8
	SETB	I2C_SDA		;在讀取數據之前,要把SDA拉高,使之處于輸入狀態
I2C_Read_Loop:
	SETB	I2C_SCL
	CALL	I2C_Delay
	ADD	A, ACC
	JNB	I2C_SDA, I2C_Read_Next
	INC	A
I2C_Read_Next:
	CLR	I2C_SCL
	CALL	I2C_Delay
	DJNZ	R2, I2C_Read_Loop
	POP	0x02
	RET


;******************************************************************************
;函數:bit I2C_GetAck()
;功能:讀取從機應答位(應答或非應答),用于判斷:從機是否成功接收主機數據
;返回:
;	CY = 0:從機應答
;	CY = 1:從機非應答
;說明:從機在收到每一個字節后都要產生應答位,主機如果收到非應答則應當終止傳輸
;******************************************************************************
I2C_GetAck:
	SETB	I2C_SDA
	CALL	I2C_Delay
	SETB	I2C_SCL
	CALL	I2C_Delay
	MOV	C, I2C_SDA
	CLR	I2C_SCL
	CALL	I2C_Delay
	RET


;******************************************************************************
;函數:void I2C_PutAck(bit ack)
;功能:主機產生應答位(應答或非應答),用于通知從機:主機是否成功接收從機數據
;參數:
;	ack(CY) = 0:主機應答
;	ack(CY) = 1:主機非應答
;說明:主機在收到每一個字節后都要產生應答,在收到最后一個字節后,應當產生非應答
;******************************************************************************
I2C_PutAck:
	MOV	I2C_SDA, C
	CALL	I2C_Delay
	SETB	I2C_SCL
	CALL	I2C_Delay
	CLR	I2C_SCL
	CALL	I2C_Delay
	RET


;******************************************************************************
;函數:void I2C_Stop()
;功能:產生I2C總線的停止條件
;說明:SCL處于高電平期間,當SDA出現上升沿時停止I2C總線
;******************************************************************************
I2C_Stop:
	CLR	I2C_SDA
	CALL	I2C_Delay
	SETB	I2C_SCL
	CALL	I2C_Delay
	SETB	I2C_SDA
	CALL	I2C_Delay
;延時程序段(對于某些器件來說在下一次產生Start之前額外增加一定的延時是必須的)
	PUSH	0x00
	MOV	R0, #15
I2C_Stop_Loop:
	NOP
	NOP
	DJNZ	R0, I2C_Stop_Loop
	POP	0x00
;返回
	RET


;******************************************************************************
;函數:I2C_Puts(byte SlaveAddr, byte SubAddr, byte size, byte *dat)
;功能:主機通過I2C總線向從機發送多個字節的數據
;參數:
;	SlaveAddr(R7):從機地址(高7位是從機地址,最低位是讀寫標志)
;	SubAddr(R6):從機的子地址
;	size(R5):數據大?。ㄒ宰止澯嫞?;	*dat(R4):要發送的數據
;返回:
;	CY = 0:發送成功
;	CY = 1:在發送過程中出現異常
;******************************************************************************
I2C_Puts:
;確保從機地址最低位是0
	ANL	0x07, #0xFE
;啟動I2C總線
	CALL	I2C_Start
;發送從機地址并判斷應答位
	CALL	I2C_Write
	CALL	I2C_GetAck
	JNC	I2C_Puts_LB1
	CALL	I2C_Stop
	SETB	C
	RET
I2C_Puts_LB1:
;發送子地址并判斷應答位
	MOV	A, R6
	MOV	R7, A
	CALL	I2C_Write
	CALL	I2C_GetAck
	JNC	I2C_Puts_LB2
	CALL	I2C_Stop
	SETB	C
	RET
I2C_Puts_LB2:
;發送數據(每發送一個字節都要判斷一次應答位)
	PUSH	0x00
	MOV	A, R4
	MOV	R0, A
I2C_Puts_Loop:
	MOV	A, @R0
	INC	R0
	MOV	R7, A
	CALL	I2C_Write
	CALL	I2C_GetAck
	JNC	I2C_Puts_LB3
	CALL	I2C_Stop
	SETB	C
	POP	0x00
	RET
I2C_Puts_LB3:
	DJNZ	R5, I2C_Puts_Loop
	POP	0x00
;發送完畢,停止I2C總線,返回
	CALL	I2C_Stop
	CLR	C
	RET


;******************************************************************************
;函數:I2C_Gets(byte SlaveAddr, byte SubAddr, byte size, byte *dat)
;功能:主機通過I2C總線從從機接收多個字節的數據
;參數:
;	SlaveAddr(R7):從機地址(高7位是從機地址,最低位是讀寫標志)
;	SubAddr(R6):從機的子地址
;	size(R5):數據大?。ㄒ宰止澯嫞?;	*dat(R4):保存接收到的數據
;返回:
;	CY = 0:接收成功
;	CY = 1:在接收過程中出現異常
;******************************************************************************
I2C_Gets:
;確保從機地址最低位是0
	ANL	0x07, #0xFE
;啟動I2C總線
	CALL	I2C_Start
;發送從機地址并判斷應答位
	CALL	I2C_Write
	CALL	I2C_GetAck
	JNC	I2C_Gets_LB1
	CALL	I2C_Stop
	SETB	C
	RET
I2C_Gets_LB1:
;發送子地址并判斷應答位
	PUSH	0x07
	MOV	A, R6
	MOV	R7, A
	CALL	I2C_Write
	POP	0x07
	CALL	I2C_GetAck
	JNC	I2C_Gets_LB2
	CALL	I2C_Stop
	SETB	C
	RET
I2C_Gets_LB2:
;發送重復起始條件
	CALL	I2C_Start
;發送從機地址并判斷應答位
	INC	R7		;從機地址(R7)的讀寫位置1,即準備讀數據
	CALL	I2C_Write
	CALL	I2C_GetAck
	JNC	I2C_Gets_LB3
	CALL	I2C_Stop
	SETB	C
	RET
I2C_Gets_LB3:
;接收數據
	PUSH	0x00
	MOV	A, R4
	MOV	R0, A
I2C_Gets_Loop:
	CALL	I2C_Read
	MOV	@R0, A
	INC	R0
	DJNZ	R5, I2C_Gets_LB4
	SETB	C
	CALL	I2C_PutAck
	SJMP	I2C_Gets_EndLoop
I2C_Gets_LB4:
	CLR	C
	CALL	I2C_PutAck
	SJMP	I2C_Gets_Loop
I2C_Gets_EndLoop:
;接收完畢,停止I2C總線,返回
	CALL	I2C_Stop
	CLR	C
	POP	0x00
	RET

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品美女销魂一区二区三区免费| 99久久99久久精品国产片果冻| 狠狠色综合日日| 91视频观看视频| xfplay精品久久| 亚洲成人手机在线| 91麻豆免费在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 一区二区激情视频| 99久久久免费精品国产一区二区| 日韩女优av电影在线观看| 亚洲蜜桃精久久久久久久| 国产精品一二三| 欧美va亚洲va香蕉在线| 水野朝阳av一区二区三区| 99re视频这里只有精品| 欧美—级在线免费片| 麻豆成人在线观看| 777午夜精品免费视频| 一区二区三区精品在线观看| 成人午夜看片网址| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产视频一区不卡| 日韩avvvv在线播放| 欧美午夜精品免费| 亚洲免费av在线| 色综合天天在线| 国产精品白丝在线| youjizz国产精品| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品黄色在线观看| 国产精品羞羞答答xxdd| 久久先锋资源网| 精品中文字幕一区二区小辣椒| 欧美一级生活片| 免费观看在线综合| 精品日韩在线一区| 激情五月婷婷综合网| 久久亚洲一区二区三区明星换脸 | 国产精品家庭影院| av资源网一区| 一区二区三区四区精品在线视频| 色综合久久久久综合体| 亚洲一区在线播放| 欧美精品久久久久久久久老牛影院| 一区二区三区在线高清| 欧美视频精品在线观看| 人人超碰91尤物精品国产| 日韩免费一区二区| 国产成人精品综合在线观看| 国产精品美女久久久久久 | 91精品国产综合久久婷婷香蕉| 日韩国产在线一| 精品精品欲导航| zzijzzij亚洲日本少妇熟睡| 亚洲免费在线电影| 欧美一区二区三区视频免费播放| 久久精品999| 国产精品久久久久7777按摩| 91日韩一区二区三区| 日韩精品三区四区| 国产日韩欧美电影| 色av成人天堂桃色av| 美女视频网站久久| 国产日韩成人精品| 欧美日本视频在线| 韩国一区二区三区| 亚洲免费资源在线播放| 日韩欧美国产系列| 99免费精品视频| 日韩中文字幕91| 中国色在线观看另类| 在线播放日韩导航| www.亚洲精品| 麻豆91免费观看| 亚洲日本中文字幕区| 这里只有精品视频在线观看| 成人免费高清在线观看| 天天综合色天天综合色h| 中文字幕av一区二区三区高| 欧美乱熟臀69xxxxxx| 99视频在线观看一区三区| 男人操女人的视频在线观看欧美 | 一个色综合av| 国产欧美视频在线观看| 7777精品伊人久久久大香线蕉| 成a人片国产精品| 久久国产精品99精品国产| 一区二区在线电影| 日本一二三四高清不卡| 51久久夜色精品国产麻豆| 91网站在线播放| 日韩一级成人av| 日韩成人免费看| 国产欧美日韩亚州综合| 91精品国产综合久久精品麻豆 | 国产精品九色蝌蚪自拍| 欧美成人在线直播| 欧美日韩国产bt| 91久久国产综合久久| 99精品桃花视频在线观看| 国产麻豆精品在线| 美女脱光内衣内裤视频久久网站| 亚洲在线视频网站| 亚洲精品成人少妇| 国产精品久久久久婷婷二区次| 精品人在线二区三区| 欧美一区二区三区免费观看视频 | 97国产精品videossex| 国产精品一区在线| 激情成人综合网| 国内国产精品久久| 国产自产2019最新不卡| 麻豆免费看一区二区三区| 日本在线不卡视频一二三区| 日韩中文字幕亚洲一区二区va在线 | 亚洲一区二区五区| 一个色在线综合| 亚洲一区成人在线| 亚洲国产wwwccc36天堂| 亚洲午夜一区二区| 午夜精品一区二区三区三上悠亚| 在线观看视频一区二区| 成人免费视频播放| aaa欧美色吧激情视频| 成人三级在线视频| 成人激情小说网站| 欧美一卡二卡三卡四卡| 欧美福利视频导航| 日韩一卡二卡三卡| 久久久亚洲国产美女国产盗摄| wwww国产精品欧美| 中文欧美字幕免费| 亚洲欧洲综合另类| 亚洲成a人v欧美综合天堂下载| 丝袜美腿亚洲综合| 久久国产免费看| 成人在线视频一区| 日本国产一区二区| 欧美一区二区三区免费在线看| 精品国产凹凸成av人导航| 国产日韩精品一区二区三区在线| 国产精品国产三级国产专播品爱网 | 欧美va天堂va视频va在线| 国产午夜一区二区三区| 亚洲男人电影天堂| 蜜臀av性久久久久av蜜臀妖精 | 美女视频免费一区| 国产成人精品一区二| 91成人国产精品| 精品粉嫩超白一线天av| 综合久久给合久久狠狠狠97色| 亚洲va天堂va国产va久| 国产一区二区按摩在线观看| 91在线视频播放地址| 91精品国产入口在线| 久久久久久一二三区| 一二三区精品福利视频| 国产揄拍国内精品对白| 91国内精品野花午夜精品| 日韩精品自拍偷拍| 亚洲欧美日韩国产成人精品影院| 免费在线观看视频一区| 色综合久久天天| 久久久精品免费网站| 亚洲va欧美va人人爽| 大桥未久av一区二区三区中文| 9191久久久久久久久久久| 中文字幕亚洲一区二区va在线| 蜜臀a∨国产成人精品| 一区二区在线观看视频在线观看| 国模娜娜一区二区三区| 色av成人天堂桃色av| 2023国产精华国产精品| 亚洲午夜在线观看视频在线| 成人中文字幕合集| 欧美大胆人体bbbb| 香港成人在线视频| 91亚洲午夜精品久久久久久| 久久精品一二三| 日本成人在线看| 欧美优质美女网站| 136国产福利精品导航| 国产1区2区3区精品美女| 日韩欧美国产1| 日韩国产精品久久久久久亚洲| 日韩免费性生活视频播放| 亚洲一二三区在线观看| 不卡影院免费观看| 国产日韩三级在线| 国产精品正在播放| 久久网站最新地址| 激情六月婷婷综合| 日韩欧美国产一区二区在线播放| 国产成人精品网址| 91精品国产91热久久久做人人| 亚洲自拍欧美精品| 色老综合老女人久久久| 中文字幕中文字幕一区二区| 粉嫩av一区二区三区粉嫩|