freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機(jī)應(yīng)用技術(shù)第9章(編輯修改稿)

2025-06-17 11:46 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 。 STOP: CLR SDA SETB SCL NOP ; NOP的數(shù)目根據(jù)時(shí)鐘頻率確定 NOP ;此處用 NOP來(lái)延時(shí) SETB SDA NOP NOP CLR SDA CLR SCL RET I2C總線的軟件模擬 4. I2C總線上的第 9個(gè)時(shí)鐘脈沖對(duì)應(yīng)于應(yīng)答位,當(dāng)該位為低電平表示應(yīng)答 ACK,當(dāng)該位為高電平表示非應(yīng)答 ACK。 I2C總線的應(yīng)答位和非應(yīng)答位如下圖所示。發(fā)送 ACK和 ACK子程序如下。 發(fā)送 A CK 發(fā)送 A CK SDA SCL I2C總線的軟件模擬 (1) 發(fā)送應(yīng)答位 ACK 由上圖可知,當(dāng)發(fā)送應(yīng)答位 ACK時(shí),只需將 SDA設(shè)為低電平、SCL設(shè)為高電平,其區(qū)間的長(zhǎng)短根據(jù)晶振的頻率確定,即改變下列子程序中的 NOP數(shù)即可達(dá)到要求,發(fā)送 ACK子程序如下: YACK: CLR SDA SETB SCL NOP ; NOP的數(shù)目根據(jù)時(shí)鐘頻率確定 NOP ;此處用 NOP來(lái)延時(shí) CLR SCL SETB SDA RET I2C總線的軟件模擬 (2) 發(fā)送非應(yīng)答位 由上圖可知,當(dāng)發(fā)送非應(yīng)答位 ACK時(shí),只需將 SDA設(shè)為高電平、 SCL設(shè)為高電平,其區(qū)間的長(zhǎng)短根據(jù)晶振的頻率確定,即改變下列子程序中的 NOP數(shù)即可達(dá)到要求,發(fā)送 ACK子程序如下: YNACK: SETB SDA SETB SCL NOP ; NOP的數(shù)目根據(jù)時(shí)鐘頻率確定 NOP ;此處用 NOP來(lái)延時(shí) CLR SCL CLR SDA RET I2C總線的軟件模擬 根據(jù) I2C總線協(xié)議,在接收到一個(gè)字節(jié)后,要發(fā)送一個(gè)應(yīng)答位以供檢查,此時(shí)可設(shè)置一個(gè)標(biāo)志位表示應(yīng)答狀態(tài)。當(dāng)檢查結(jié)果為正常應(yīng)答時(shí),則標(biāo)志位置 0;否則,標(biāo)志位置 0。應(yīng)答位檢查子程序如下: TACK: SETB SDA ;設(shè)置 SDA為輸入方式 SETB SCL ;產(chǎn)生第 9個(gè)時(shí)鐘脈沖 NOP ; NOP的數(shù)目根據(jù)時(shí)鐘頻率確定 NOP ;此處用 NOP來(lái)延時(shí) CLR 30H MOV C, SDA JNC TEND ;若正常應(yīng)答,則轉(zhuǎn)移 SETB 30H TEND: CLR SCL RET I2C總線的軟件模擬 根據(jù) I2C總線協(xié)議,數(shù)據(jù)在時(shí)鐘線為低電平時(shí)變化,高電平時(shí)穩(wěn)定,每一個(gè)時(shí)鐘脈沖傳送一位。模擬 I2C總線的 SDA接在并行口線,并口中無(wú)移位寄存器,要通過(guò)指令完成移位后再?gòu)?SDA串行輸出。 I2C總線的字節(jié)數(shù)據(jù)傳送如下圖所示。將待發(fā)送的字節(jié)存于累加器 A中,字節(jié)數(shù)據(jù)發(fā)送子程序如下: S CL S DA 起始 停止 1 A CK 2 I2C總線的軟件模擬 WOBYT: MOV R4, 08H ;要發(fā)送的數(shù)據(jù)長(zhǎng)度為 8位 LOOP2: RLC A ;將待發(fā)送的位送入位 CY中 JC LOOP1 ; CY位為 1轉(zhuǎn)到 LOOP1 CLR SDA ;置為低電平,發(fā)送 0 SETB SCL ;時(shí)鐘高電平數(shù)據(jù)保持?jǐn)?shù)據(jù)穩(wěn)定 NOP ;調(diào)節(jié) NOP的個(gè)數(shù),使延時(shí) ≥ s NOP CLR SCL ;時(shí)鐘脈沖變?yōu)榈碗娖?,?zhǔn)備改變數(shù)據(jù) DJNZ R4, LOOP2 ;若 8位未發(fā)送完,轉(zhuǎn) LOOP2繼續(xù) RET ; 8位發(fā)送完成返回 LOOP1: SETB SDA ;置為高電平,發(fā)送 1 SETB SCL ;時(shí)鐘為高電平保持?jǐn)?shù)據(jù)穩(wěn)定 NOP ;調(diào)節(jié) NOP的個(gè)數(shù),使延時(shí) ≥ s NOP CLR SCL ;時(shí)鐘脈沖變?yōu)榈碗娖?,?zhǔn)備改變數(shù)據(jù) CLR SDA ;將數(shù)據(jù)改為低電平 DJNZ R4, LOOP2 ;若 8位未發(fā)送完,轉(zhuǎn) LOOP2繼續(xù) RET ; 8位發(fā)送完成返回 字節(jié)數(shù)據(jù)發(fā)送子程序 I2C總線的軟件模擬 根據(jù) I2C總線協(xié)議,數(shù)據(jù)必須在時(shí)鐘處于高電平期間,數(shù)據(jù)穩(wěn)定時(shí)才能讀取數(shù)據(jù),在經(jīng)過(guò)八次的時(shí)鐘轉(zhuǎn)換后,讀出八位即一個(gè)字節(jié)數(shù)據(jù)。 I2C總線起始字節(jié)如下圖所示。將讀出的字節(jié)數(shù)據(jù)存于 R5中,接收字節(jié)數(shù)據(jù)子程序如下: A C K 起始字節(jié) S C L S D A 起始 停止 1 2 7 8 9 I2C總線的軟件模擬 接收字節(jié)數(shù)據(jù)子程序 ROBYT: MOV R4, 08H ;要接收的數(shù)據(jù)長(zhǎng)度為 8位 LOOP3: SETB SDA ;設(shè)置 SDA為輸入方式 SETB SCL ; SDA上數(shù)據(jù)有效 MOV C, SDA ;讀入 SDA引腳狀態(tài) MOV A, R5 ;將存放結(jié)果送入 A中 RLC A ;將讀出的 1位移入 A中 MOV R5, A CLR SCL ;一個(gè)脈沖結(jié)束, SDA上數(shù)據(jù)無(wú)效 DJNZ R4, LOOP3 ;未讀完 8位,轉(zhuǎn)到 LOOP3 RET ;讀完返回 I2C總線的軟件模擬 在完成上述模擬子程序后,根據(jù) I2C總線協(xié)議,可編寫多個(gè)字節(jié)數(shù)據(jù)發(fā)送子程序。要發(fā)送的字節(jié)數(shù)存放在 R5中,要發(fā)送的數(shù)據(jù)塊的第一個(gè)數(shù)據(jù)的地址為 40H,外圍器件的地址存放在 60H中,參考程序如下: WDBYT: LCALL START ;起始 WLP1: MOV A, 60H ;設(shè) 60H為存放的控制字 LCALL WOBYT ;發(fā)送讀控制字節(jié) LCALL TACK ;檢查應(yīng)答位 JB 30H, WLP1 ;無(wú)應(yīng)答位,重發(fā) MOV R0, 40H ; 40H為第一個(gè)數(shù)據(jù)的首地址 WLP2: MOV A, @ R0 ;讀一個(gè)字節(jié)數(shù)據(jù) LCALL WOBYT ;發(fā)送 LCALL TACK ;檢查應(yīng)答位 JB 30H, WLP1 ;無(wú)應(yīng)答位,重發(fā) INC R0 ;指向下一個(gè)要發(fā)送的數(shù)據(jù) DJNZ R5, WLP2 ;要發(fā)送數(shù)據(jù)未發(fā)完,再發(fā)送 LCALL STOP ;全部數(shù)據(jù)發(fā)完,停止 RET ;返回 I2C總線的軟件模擬 根據(jù) I2C總線協(xié)議,同樣可編寫多個(gè)字節(jié)數(shù)據(jù)接收子程序。要接收的字節(jié)數(shù)存放在 R5中,要接收的數(shù)據(jù)塊存放的首地址為 50H,外圍器件的地址存放在 60H中,參考程序如下: RDBYT: LCALL START ;起始 RLP1: MOV A, 60H ;設(shè) 60H為存放的控制字 LCALL WOBYT ;發(fā)送讀控制字節(jié) LCALL TACK ;檢查應(yīng)答位 JB 30H, RLP1 ;無(wú)應(yīng)答位,重發(fā) MOV R0, 50H ; 50H為第一個(gè)數(shù)據(jù)的首地址 RLP2: LCALL ROBYT ;讀入一個(gè)字節(jié) MOV @R0, A DJNZ R5, RLP3 ;要接收數(shù)據(jù)未讀完,再讀入 LCALL YNACK ;發(fā)送非應(yīng)答位 LCALL STOP ;全部數(shù)據(jù)發(fā)完,停止 RET ;返回 RLP3: LCALL YACK ;發(fā)送應(yīng)答位 INC R0 ;指向下一個(gè)要存放數(shù)據(jù)的地址 SJMP RLP2 ;調(diào)節(jié) NOP的個(gè)數(shù),使延時(shí) ≥ s I2C串行擴(kuò)展應(yīng)用實(shí)例 【 例 2】 將 AT89C2051片內(nèi) RAM40H~ 47H單元中的八個(gè) 8位數(shù)據(jù)通過(guò) I2C總線接口傳送到存儲(chǔ)器 AT24C01的 50H~ 57H單元中。 解: AT24C01是 Atmel公司生產(chǎn)的具有 I2C總線接口的 E2PROM,是目前應(yīng)用較多的 AT24C 系列存儲(chǔ)器中的一種,芯片存儲(chǔ)容量為 1Kb(128 8位 )。 AT24C01引腳如下圖所示。 其引腳定義如下: ? SCL:串行時(shí)鐘端。 ? SDA:串行數(shù)據(jù)端,漏極開路, 需接上拉電阻到 VCC。 ? WP:寫保護(hù), 當(dāng) WP為高電平時(shí)存儲(chǔ)器只讀; 當(dāng) WP為低電平時(shí)存儲(chǔ)器可讀可寫。 ? A2~ A0:芯片地址。 1 2 3 4 5 6 7 8 A0 A1 V SS V CC A2 S CA S CL WP I2C串行擴(kuò)展應(yīng)用實(shí)例 AT89C2051與 AT24C01通過(guò)串行總線接口傳送數(shù)據(jù)的接線如下圖所示。因 AT89C2051沒(méi)有 I2C總線接口,可用軟件的辦法來(lái)模擬 I2C總線操作。 I2C總線的時(shí)鐘線 SCL, I2C總線的數(shù)據(jù)線 SDA。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1