協議實驗報告(共8頁)_第1頁
協議實驗報告(共8頁)_第2頁
協議實驗報告(共8頁)_第3頁
協議實驗報告(共8頁)_第4頁
協議實驗報告(共8頁)_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上 協議 1、 實驗目的1、熟悉協議;2、掌握接口EEPROM的讀寫方法;3、掌握利用I/O來實現信令。二、實驗內容實驗提供I2C協議庫(光盤/I2C軟件包)。將A2區的P16、P17連接D5區的SCL、SDA,短接JP1跳線。1、寫入24WC02的80H號字節地址,并讀取進行驗證;2、連續寫入24WC02的80H號字節地址開始一頁的內容,并讀取進行驗證。三、protel電原理圖四、程序流程圖1、單字節2、頁五、匯編程序1、單字節;平臺定義變量ACK BIT 10H ;應答標志位SLA DATA 51H ;器件從地址SUBA DATA 52H ;器件子地址NUMBYTE

2、 DATA 10H ;讀寫的字節數;使用前定義常量SDA EQU P1.7; I2C 總線定義SCL EQU P1.6MTD EQU 30H ;發送數據緩沖區首址 (緩沖區30H 3FH)MRD EQU 40H ;接收數據緩沖區首址緩沖區 40 4FH;定義器件地址PCF8574 EQU 40HSAA1064 EQU 70HCSI24WCXX EQU 0A0HORG 0000HAJMP MAINORG 0080HMAIN: MOV SLA, #0A0HCLR ACKMOV SUBA, #80HMOV NUMBYTE, #01HMOV A, #00HMOV P3, AMOV A, #55HPUS

3、H ACCLCALL START ;起動總線MOV A,SLALCALL WRBYTE ;發送器件從地址LCALL CACKJNB ACK,RE1 ;無應答則跳轉MOV A,SUBALCALL WRBYTE ;發送器件子地址LCALL CACKJNB ACK,RE1 ;無應答則跳轉POP ACC ;寫數據LCALL WRBYTELCALL CACKJNB ACK,RE11LCALL STOPSJMP MAIN2RE1:POP ACCLCALL STOPSJMP MAINRE11:LCALL STOPSJMP MAINMAIN2:LCALL START ;起動總線MOV A,SLALCALL W

4、RBYTE ;發送器件從地址LCALL CACKJNB ACK,RE2 ;無應答則跳轉MOV A,SUBALCALL WRBYTE ;發送器件子地址LCALL CACKJNB ACK,RE2 ;無應答則跳轉LCALL STARTMOV A,SLA ;發送器件從地址INC ALCALL WRBYTELCALL CACKJNB ACK,RE2LCALL RDBYTE ;進行讀字節操作LCALL MNACK ;發送非應信號LCALL STOPSJMP MAIN3RE2:LCALL STOPSJMP MAIN2MAIN3:MOV P3, ASJMP $INCLUDE (VI2C_ASM.ASM) ;包

5、含VIIC 軟件包;END2、 頁;平臺定義變量ACK BIT 20H ;應答標志位SLA DATA 50H ;器件從地址SUBA DATA 51H ;器件子地址NUMBYTE DATA 52H ;讀寫的字節數;使用前定義常量SDA EQU P1.7 ; I2C 總線定義SCL EQU P1.6MTD EQU 30H ;發送數據緩沖區首址緩沖區30H3FHMRD EQU 40H ;接收數據緩沖區首址緩沖區40H4FHORG 8000H ;采用軟件調試法AJMP MAINORG 8080HMAIN: MOV R4,#0F0H ;延時等待其它芯片復位好DJNZ R4,$MOV SP,#60H ;設

6、置堆棧指針MOV 3FH,#00H ;給MTD賦值MOV 30H,#01H MOV 31H,#02H MOV 32H,#03HMOV 33H,#04HMOV 34H,#05HMOV 35H,#05HMOV 36H,#07HMOV 37H,#08HMOV 38H,#09HMOV 39H,#0AHMOV 3AH,#0BHMOV 3BH,#0CHMOV 3CH,#0DHMOV 3DH,#0EHMOV 3EH,#0FHMOV SLA,#0A0H ;設置寫的從地址MOV SUBA,#80H ;設置子地址MOV NUMBYTE,#10H ;設置字節數,這里因為讀寫一頁字節,所以為10H(16)LCALL

7、IWRNBYTE ;調用寫EEPROM程序MOV A,#01HLCALL IRDNBYTE ;調用讀EEPROM程序MOV A,#33H;$INCLUDE (VI2C_ASM.ASM) ;I2C軟件包;END6、 實驗記錄1、第一個實驗程序運行完成后,打開“memory window”,在查詢欄輸入所要查看的地址空間。輸入發送緩沖區首地址“D:30H”,該地址處顯示的數據為“55”;輸入接收緩沖區首地址“D:40H”,該地址處顯示的數據為“55”。2、第二個實驗程序運行完成后,同樣使用“memory window”查看發送、接收緩沖區內的數據。D:30HD:3FH中儲存的數據為“00 01 0

8、2 . 0E 0F”;D:40HD:4FH中儲存的數據同樣是“00 01 02 . 0E 0F”。7、 實驗分析 1、協議的基本工作原理如下:以啟動信號START來掌管總線,以停止信號STOP來釋放總線; 每次通訊以START開始,以STOP結束; 啟動信號START后緊接著發送一個地址字節,其中7位為被控器件的地址碼,一位為讀/寫控制位R/W,R/W位為0表示由主控向被控器件寫數據,R/W為1表示由主控向被控器件讀數據;當被控器件檢測到收到的地址與自己的地址相同時,在第9個時鐘期間反饋應答信號 每個數據字節在傳送時都是高位(MSB)在前。協議通訊過程分為寫通訊和讀通訊兩部分,其過程如下。寫通

9、訊過程:(1)主控在檢測到總線空閑的狀況下,首先發送一個START信號掌管總線;(2)發送一個地址字節(包括7位地址碼和一位R/W);(3)當被控器件檢測到主控發送的地址與自己的地址相同時發送一個應答信號(ACK);(4)主控收到ACK后開始發送第一個數據字節;(5)被控器收到數據字節后發送一個ACK表示繼續傳送數據,發送NACK表示傳送數據結束;(6)主控發送完全部數據后,發送一個停止位STOP,結束整個通訊并且釋放總線。 讀通訊過程:(1)主控在檢測到總線空閑的狀況下,首先發送一個START信號掌管總線;(2)發送一個地址字節(包括7位地址碼和一位R/W);(3)當被控器件檢測到主控發送的

10、地址與自己的地址相同時發送一個應答信號(ACK);(4)主控收到ACK后釋放數據總線,開始接收第一個數據字節;(5)主控收到數據后發送ACK表示繼續傳送數據,發送NACK表示傳送數據結束;(6)主控發送完全部數據后,發送一個停止位STOP,結束整個通訊并且釋放總線。 下圖所示為一次完整的通信過程的時序:圖中,SCL線上17位為7位地址碼,第8位為讀寫位RD,第9位為ACK應答位,緊接著的為第一個數據字節,然后是一位應答位,后面繼續第2個數據字節。如圖所示,主控器在檢測到總線空閑(數據線SDA和時鐘線SCL同時處于高電平狀態)時,首先發送一個啟動信號S(在時鐘線SCL保持高電平期間,數據線SDA

11、上電平被拉低),它標志著一次數據傳輸的開始。之后主控器發送一個地址字節包括7位地址碼和一個讀寫位。被控器收到地址字節后反饋一個應答信號ACK=0,主控器接收到ACK后開始發送第一個數據字節,被控器接收到第一個數據字節后,由反饋一個應答信號ACK=0。主控器收到應答信號后開始傳送第二個數據字節。依次循環,主控器發送完數據后,就發送一個停止信號P(SCL保持高電平期間,SDA被釋放,返回高電平),并釋放總線,使得總線返回空閑狀態。在通信過程應注意以下6點:(1)進行數據傳送時,在SCL為高電平期間,SDA線上電平必須保持穩定,只有SCL為低時,才允許SDA線上電平改變狀態。并且每個字節傳送時都是高

12、位在前。(2)對于應答信號,ACK=0時為有效應答位,說明接收器已經成功接收到該字節,若為1則說明接受不成功。(3)如果被控器需要延遲下一個下一個數據字節開始傳送的時間,可以通過把SCL電平拉低并保持來強制主控器進入等待狀態。(4)主控器完成一次通信后還想繼續占用總線在進行一次通信,而又不釋放總線,就要利用重啟動信號Sr。它既作為前一次數據傳輸的結束,又作為后一次傳輸的開始。(5)總線沖突時,按“低電平優先”的仲裁原則,把總線判給在數據線上先發送低電平的主器件。(6)在特殊情況下,若需禁止所有發生在I2C總線上的通信,可采用封鎖或關閉總線,具體操作為掛接在總線上的任一器件將SCL鎖定在低電平即

13、可。2、實驗中需要使用到I2C軟件庫,庫中包含了CAT24WC02讀寫數據的基本命令。匯編語言中調用軟件庫的指令為“include(文件名)”命令,該指令一般放在程序末尾。實驗中所需調用的函數庫文件名為“VI2C_ASM.ASM”,將其從光盤中復制到工程所在文件夾中,即可使用上述指令調用軟件包。完整的調用命令如下:$INCLUDE(VI2C_ASM.ASM);包含 I2C 模擬軟件包常用的四個命令如下:IRDBYTE (無子地址)讀單字節數據(現行地址讀)IWRBYTE (無子地址)寫單字節數據(現行地址寫)IRDNBYTE (有子地址)讀N字節數據(隨機地址讀)IWRNBYTE (有子地址)

14、寫N字節數據(隨要地址寫)在本實驗中,由于需要頁讀/寫,故采用IRDNBYTE與IWRNBYTE子程序。代碼如下:LCALL IWRNBYTE;調寫EEPROM子程序(隨機地址寫)及:LCALL IRDNBYTE;調寫EEPROM子程序(隨機地址讀)這兩個命令需要使用NUMBYTE來控制讀/寫的字節數。第一個實驗需要發送一個字節,即:MOV NUMBYTE,#01H;設置待發字節數為1第二個實驗要發送一頁數據,即16位:MOV NUMBYTE,#10H;設置待發字節數為163、實驗一中讀/寫的一位數據為55H,直接送入寄存器A:MOV A, #55H;將所要發送的數據放入發送緩沖區實驗二中需要讀/寫一頁16位數據,采用直接存入方法:MOV 3FH,#00H ;給MTD賦值MOV 30H,#01H MOV 31H,#02H MOV 32H,#03HMOV 33H,#04HMOV 34H,#05HMOV 35H,#05HMOV 36H,#07HMOV 37H,#08HMOV 38H,#09HMOV 39H,#0AHMOV 3AH,#0BHMOV 3BH,#0CHMOV 3CH,#0DHMOV 3DH,#0EHMOV 3EH,#0FH顯然,這是一種繁瑣的方法,改進的方法是采用循環遞減的方式將10H00H存入發送緩沖區MTD,代碼如下:MOV R1,#MTD;將R1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論