串行總線技術(shù)_第1頁
串行總線技術(shù)_第2頁
串行總線技術(shù)_第3頁
串行總線技術(shù)_第4頁
串行總線技術(shù)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2021-12-151單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計 電子工業(yè)出版社電子工業(yè)出版社 , 2009.72021-12-1522021-12-1532021-12-1542021-12-1552021-12-156起始位停止位P空閑位D0D1D2D3D4D5D6D72021-12-157起始標(biāo)志起始標(biāo)志地址場地址場控制場控制場信息場信息場幀校驗(yàn)場幀校驗(yàn)場結(jié)束標(biāo)志結(jié)束標(biāo)志01111110ACIFC01111110模式模式開始標(biāo)志開始標(biāo)志地址地址功能代碼功能代碼數(shù)據(jù)數(shù)量數(shù)據(jù)數(shù)量校驗(yàn)碼校驗(yàn)碼結(jié)束標(biāo)志結(jié)束標(biāo)志ASCII:2字符字符2字符字符n字符字符2字符字符LRCCR,LARTU無無1

2、字節(jié)字節(jié)1字節(jié)字節(jié)n字節(jié)字節(jié)2字節(jié)字節(jié)CRC無無2021-12-1582021-12-1592021-12-15102021-12-15112021-12-15122021-12-15132021-12-15142021-12-15152021-12-15162021-12-1517從設(shè)備2從設(shè)備1從設(shè)備NSCKMOSIMISO主設(shè)備(MCU)SS2SS1SSNMISO MOSI SCKMISO MOSI SCKMISO MOSI SCKI/O1I/O2I/ON SPI 8位移位寄存器位移位寄存器 SPI 8位移位寄存器位移位寄存器 MSB 主設(shè)備主設(shè)備 LSB MSB 從設(shè)備從設(shè)備 LSB

3、SPI時鐘發(fā)生器時鐘發(fā)生器MOSI MISOMOSI MISOMISO MOSIMISO MOSICLK CLK CLKCLKSPISPI總線原理總線原理 主設(shè)備和從設(shè)備的兩個移位寄存器可以看作是一個主設(shè)備和從設(shè)備的兩個移位寄存器可以看作是一個16bits16bits的循環(huán)移位寄存器,當(dāng)數(shù)據(jù)從主設(shè)備移位傳送到的循環(huán)移位寄存器,當(dāng)數(shù)據(jù)從主設(shè)備移位傳送到從設(shè)備的同時,數(shù)據(jù)也以相反的方向移入。這意味著在從設(shè)備的同時,數(shù)據(jù)也以相反的方向移入。這意味著在一個移位周期中,主設(shè)備和從設(shè)備的數(shù)據(jù)相互交換。一個移位周期中,主設(shè)備和從設(shè)備的數(shù)據(jù)相互交換。2021-12-15192021-12-1520從機(jī)2從機(jī)1

4、從機(jī)NSKSISO主機(jī)(MCU)CS2CS1CSNSISOSKI/O1I/O2I/ONSISOSKSISOSK2021-12-1521狀態(tài)寄存器狀態(tài)寄存器SPSTATSPSTAT、數(shù)據(jù)寄存器、數(shù)據(jù)寄存器SPDATSPDAT通過軟件向相應(yīng)位寫入通過軟件向相應(yīng)位寫入“1 1”可將可將 SPIF SPIF 和和 WCOL WCOL 標(biāo)志清零。標(biāo)志清零。D7D6D5D4D3D2D1D0SPCTLSSIGSPENDORGMSTRCPOLCPHASPR1SPR0SPSTATSPIFWCOLSPDATD7D6D5D4D3D2D1D00E1H0E1H 0E3H0E3H 0E3H0E3H 2021-12-152

5、2SCLKCONVSTAD7810MISO(P2.3)SCK(P2.5)GNDDOUTP2.6VIN-VIN+GNDVDDVREF+P89LPC933VDDVIN-12345678CONVST高速模式DB9DB0CONVST低速模式SCLKDOUTAD7810AD7810工作模式與時序工作模式與時序2021-12-1523#include /* LPC900 單片機(jī)的單片機(jī)的SFR 與標(biāo)準(zhǔn)與標(biāo)準(zhǔn)80C51 兼容兼容 */#include /* C51內(nèi)部函數(shù)描述內(nèi)部函數(shù)描述 */#define uint unsigned intsfr SPTCL = 0 xe2; /* 定義控制寄存器定義控制

6、寄存器 */sfr SPSTAT = 0 xe1; /* 定義狀態(tài)寄存器定義狀態(tài)寄存器 */sfr SPDAT = 0 xe3; /* 定義數(shù)據(jù)寄存器定義數(shù)據(jù)寄存器 */sbit CONVST = P26; /*定義轉(zhuǎn)換控制引腳定義轉(zhuǎn)換控制引腳 */自動低功耗模式自動低功耗模式A/D轉(zhuǎn)換轉(zhuǎn)換C51/ /* * 啟動啟動AD7810AD7810轉(zhuǎn)換一次,返回值為轉(zhuǎn)換結(jié)果轉(zhuǎn)換一次,返回值為轉(zhuǎn)換結(jié)果 * */ /uint ad7810()uint ad7810() uint x;uint x;SPCTL= 0 xd1;SPCTL= 0 xd1;/ /* * 設(shè)置為主機(jī),確定時鐘模式及速率設(shè)置為主機(jī),

7、確定時鐘模式及速率 * */ /SPSTAT=0 xc2 ; SPSTAT=0 xc2 ; / /* * 向標(biāo)志位寫向標(biāo)志位寫1 1,清除標(biāo)志,清除標(biāo)志 * */ /CONVST=1; CONVST=1; / /* * 喚醒器件并啟動喚醒器件并啟動A/DA/D轉(zhuǎn)換轉(zhuǎn)換 * */ /CONVST=0;CONVST=0;_nop_();_nop_();_nop_(); _nop_(); / /* * 等待等待A/DA/D轉(zhuǎn)換結(jié)束轉(zhuǎn)換結(jié)束 * */ /SPDAT= 0 xff; SPDAT= 0 xff; / /* * 發(fā)送任意數(shù)據(jù),啟動發(fā)送任意數(shù)據(jù),啟動SPI SPI 接收高接收高8 8位數(shù)據(jù)位數(shù)

8、據(jù) * */ /while (SPSTAT=127) ;/while (SPSTAT=127) ;/* * SPI SPI接收未結(jié)束,等待接收未結(jié)束,等待 * */ /SPSTAT=0 xc2 ; SPSTAT=0 xc2 ; / /* * 向標(biāo)志位寫向標(biāo)志位寫1 1,清除標(biāo)志,清除標(biāo)志 * */ /x= SPDATx= SPDAT* *4; 4; / /* * 讀取高讀取高8 8位數(shù)據(jù)位數(shù)據(jù) * */ /SPDAT= 0 xff; SPDAT= 0 xff; / /* * 發(fā)送任意數(shù)據(jù),啟動發(fā)送任意數(shù)據(jù),啟動SPI SPI 接收低接收低8 8位數(shù)據(jù)位數(shù)據(jù) * */ /while (SPSTA

9、T=127); /while (SPSTAT=127); /* * SPI SPI接收未結(jié)束,等待接收未結(jié)束,等待 * */ /SPSTAT=0 xc2 ; SPSTAT=0 xc2 ; / /* * 向標(biāo)志位寫向標(biāo)志位寫1 1,清除標(biāo)志,清除標(biāo)志 * */ /x = x+SPDAT/64; x = x+SPDAT/64; / /* * 讀取低讀取低2 2位數(shù)據(jù),與高位數(shù)據(jù),與高8 8位數(shù)據(jù)合并位數(shù)據(jù)合并* */ /return(x);return(x); 2021-12-1524E E2 2PROMPROM,可通過,可通過ORGORG管腳配置成管腳配置成1281281616或或2562568

10、 8兩種結(jié)構(gòu),兩種結(jié)構(gòu),ORGORG端接端接VCCVCC或懸空時,輸出為或懸空時,輸出為16bits16bits;接;接GNDGND時,輸出為時,輸出為8bits8bits。P1.0P1.2AT89S51DISKCSP1.1DOP1.3VCCGNDAT93C46VCCORGDCGND812345672021-12-1525指令指令起始起始位位操作操作碼碼地址位地址位數(shù)據(jù)位數(shù)據(jù)位指令功能指令功能8 168 16READ110A6A 5A0從指定的單元讀數(shù)從指定的單元讀數(shù)EWEN10011xxxxx 11xxxx允許擦允許擦/寫操作指令寫操作指令ERASE111A6A 5A0擦除指定單元擦除指定單

11、元WRIET101A6A 5A0D7D0 D15D0寫入指定存儲單元寫入指定存儲單元ERAL10010 xxxxx 10 xxxx擦除存儲器所有單元擦除存儲器所有單元WRAL10001xxxxx 01xxxxD7D0 D15D0寫入存儲器所有單元寫入存儲器所有單元EWDS10000 xxxxx 00 xxxx禁止擦禁止擦/寫操作指令寫操作指令2021-12-15262021-12-15272021-12-15282021-12-15291SCLSDA起始信號23456789應(yīng)答非應(yīng)答2021-12-1530數(shù)據(jù)寄存器數(shù)據(jù)寄存器S1DATS1DAT:發(fā)送發(fā)送/ /接收一個數(shù)據(jù)字節(jié)的寄存器,接收一

12、個數(shù)據(jù)字節(jié)的寄存器,P89C66xP89C66x通過通過該寄存器向總線移位發(fā)送數(shù)據(jù)或從總線接收數(shù)據(jù)該寄存器向總線移位發(fā)送數(shù)據(jù)或從總線接收數(shù)據(jù)。0DAH 0D8H 0DBH D7D6D5D4D3D2D1D0S1ADRGCS1DATD7D6D5D4D3D2D1D0S1CONCR2ENS1STASTOSIAACR1CR0S1SATSD4SD3SD2SD1SD00000D9H 2021-12-1531狀態(tài)寄存器狀態(tài)寄存器S1SATS1SAT:S1STAS1STA是一個只讀寄存器,高是一個只讀寄存器,高5 5位有效,存放了位有效,存放了2626個個I2CI2C總線的狀態(tài)碼,其中在主發(fā)送方式下,可產(chǎn)生總線

13、的狀態(tài)碼,其中在主發(fā)送方式下,可產(chǎn)生7 7個總線狀態(tài)碼;在個總線狀態(tài)碼;在主接收方式下,可產(chǎn)生主接收方式下,可產(chǎn)生5 5個總線狀態(tài)碼;在從接收方式下,可產(chǎn)生個總線狀態(tài)碼;在從接收方式下,可產(chǎn)生9 9個總個總線狀態(tài)碼;在從發(fā)送方式下,可產(chǎn)生線狀態(tài)碼;在從發(fā)送方式下,可產(chǎn)生5 5個總線狀態(tài)碼。個總線狀態(tài)碼。SIO1SIO1的中斷入口地的中斷入口地址為址為002BH002BH,中斷服務(wù)程序根據(jù)這些狀態(tài)碼進(jìn)行相應(yīng)的處理。,中斷服務(wù)程序根據(jù)這些狀態(tài)碼進(jìn)行相應(yīng)的處理。0DAH 0D8H 0DBH D7D6D5D4D3D2D1D0S1ADRGCS1DATD7D6D5D4D3D2D1D0S1CONCR2ENS

14、1STASTOSIAACR1CR0S1SATSD4SD3SD2SD1SD00000D9H 2021-12-1532#include #include / / * * P89C668 P89C668的硬件的硬件I2CI2C定義與定義與8XC5528XC552的一樣的一樣 * */ /#define uchar unsigned char#define uchar unsigned char/ /* * 申請占用總線,進(jìn)行申請占用總線,進(jìn)行I I2 2C C時鐘速率、使能、發(fā)送起始信號等初始化時鐘速率、使能、發(fā)送起始信號等初始化* */ /void GetBus()void GetBus() S1

15、CON=0 xc5;S1CON=0 xc5; / /* * 設(shè)置時鐘為設(shè)置時鐘為100k100k, MCUMCU主頻為主頻為12M12M, ENS1ENS1和和AAAA置位置位 * */ /STA=1;STA=1; / /* * 申請成為主機(jī),起動總線申請成為主機(jī),起動總線 * */ /while(SI=0); /while(SI=0); /* * 等待起始位的發(fā)送等待起始位的發(fā)送 * */ / / /* * 發(fā)送數(shù)據(jù)函數(shù),用于向總線發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)函數(shù),用于向總線發(fā)送數(shù)據(jù) * */ /void SendByte(uchar c)void SendByte(uchar c) S1DAT=c;S

16、1DAT=c;S1CON=0 xc5;S1CON=0 xc5; / /* * 清除清除SISI位等位等 * */ /while(SI=0); /while(SI=0); /* * 等待數(shù)據(jù)發(fā)送完成等待數(shù)據(jù)發(fā)送完成 * */ / P89C66xP89C66x單片機(jī)單片機(jī)I I2 2C C通信主方式通信主方式C51C51語言程序語言程序2021-12-1533/ /* * 向無子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù),從器件地址向無子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù),從器件地址slasla(最低位為(最低位為0 0),),待發(fā)送的數(shù)據(jù)為待發(fā)送的數(shù)據(jù)為c c;如果返回;如果返回1 1,表示操作成功,否則操作有誤,表示操作

17、成功,否則操作有誤 * */ /bit ISendByte(uchar sla,uchar c)bit ISendByte(uchar sla,uchar c) GetBus();GetBus();/ /* * 啟動總線啟動總線 * */ /SendByte(sla);SendByte(sla);/ /* * 發(fā)送器件地址發(fā)送器件地址, ,若無應(yīng)答則返回若無應(yīng)答則返回 * */ /if (S1STA!=0 x18) if (S1STA!=0 x18) S1CON=0 xd5; return(0);S1CON=0 xd5; return(0);SendByte(c);SendByte(c);/

18、/* * 發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) * */ /if (S1STA!=0 x28) if (S1STA!=0 x28) S1CON=0 xd5; return(0);S1CON=0 xd5; return(0);S1CON=0 xd5;S1CON=0 xd5;/ /* * 結(jié)束總線結(jié)束總線 * */ /return(1);return(1); 2021-12-1534/ /* * 向無子地址器件讀字節(jié)數(shù)據(jù)函數(shù),從器件地址向無子地址器件讀字節(jié)數(shù)據(jù)函數(shù),從器件地址slasla(最低位為(最低位為0 0),返),返回字節(jié)值在回字節(jié)值在c c;如果返回;如果返回1 1,表示操作成功,否則操作有誤,表示操作成功

19、,否則操作有誤 * */ /bit IRcvByte(uchar sla,ucharbit IRcvByte(uchar sla,uchar* *c)c) GetBus();GetBus();/ / * * 啟動總線啟動總線 * */ /SendByte(sla+1);SendByte(sla+1);/ /* * 發(fā)送器件地址發(fā)送器件地址 * */ /if (S1STA!=0 x40) if (S1STA!=0 x40) S1CON=0 xd5; return(0);S1CON=0 xd5; return(0);S1CON=0 xc1; S1CON=0 xc1; / /* * 接收一字節(jié)數(shù)據(jù)即

20、發(fā)送非應(yīng)答位接收一字節(jié)數(shù)據(jù)即發(fā)送非應(yīng)答位 * */ /while(SI=0);while(SI=0);/ /* * 等待接收數(shù)據(jù)等待接收數(shù)據(jù) * */ /if (S1STA!=0 x58) if (S1STA!=0 x58) S1CON=0 xd5; return(0);S1CON=0 xd5; return(0);* *c=S1DAT;c=S1DAT;/ /* * 讀取數(shù)據(jù)讀取數(shù)據(jù) * */ /S1CON=0 xd5;S1CON=0 xd5;/ /* * 結(jié)束總線結(jié)束總線 * */ /return(1);return(1); 2021-12-1535。2021-12-1536D7D6D5D4

21、D3D2D1D0地址字節(jié)地址字節(jié)01011AD1AD00控制字節(jié)控制字節(jié)R2R1R0RSTPDA02021-12-1537SCL SCL BIT BITP1.0P1.0; ; 定義定義I I2 2C C串行時鐘線串行時鐘線SDA SDA BIT BIT P1.1P1.1; ; 定義定義I I2 2C C串行數(shù)據(jù)線串行數(shù)據(jù)線START: SETB START: SETB SDASDA; ; 產(chǎn)生開始條件子程序產(chǎn)生開始條件子程序 SETB SETB SCLSCL; ; 釋放總線釋放總線 NOP NOP; ; 延時降低總線速率延時降低總線速率 CLR CLR SDASDA; ; 產(chǎn)生開始條件產(chǎn)生開始

22、條件 NOP NOP CLR CLR SCLSCL; ; 數(shù)據(jù)修改準(zhǔn)備數(shù)據(jù)修改準(zhǔn)備 RET RET軟件模擬軟件模擬I I2 2C C接口程序設(shè)計接口程序設(shè)計 STOP: CLR STOP: CLR SDASDA; ; 產(chǎn)生結(jié)束條件子程序產(chǎn)生結(jié)束條件子程序 NOP NOP SETB SETB SCLSCL; ; 準(zhǔn)備產(chǎn)生結(jié)束條件準(zhǔn)備產(chǎn)生結(jié)束條件 NOP NOP SETB SETB SDASDA; ; 產(chǎn)生結(jié)束條件產(chǎn)生結(jié)束條件 NOP NOP RET RET2021-12-1538; ; 接收接收MAX517MAX517應(yīng)答信號子程序,返回時應(yīng)答結(jié)果在應(yīng)答信號子程序,返回時應(yīng)答結(jié)果在CyCy中中A

23、CK: ACK: CLR CLR SCLSCL; ; 保證時鐘為低保證時鐘為低 SETB SETB SDASDA SETB SETB SCLSCL; ; 釋放總線釋放總線 NOP NOP MOV MOV C, SDAC, SDA; ; 接收接收MAX517MAX517應(yīng)答信號應(yīng)答信號 CLR CLR SCLSCL RET RET; ; 發(fā)送字節(jié)子程序,待發(fā)送數(shù)據(jù)在發(fā)送字節(jié)子程序,待發(fā)送數(shù)據(jù)在ACCACC中,返回應(yīng)答在中,返回應(yīng)答在CyCy中中OUTBYTE: OUTBYTE: MOV MOV R0, #8R0, #8; ; 輸出一個字節(jié)輸出一個字節(jié)LOOP0: LOOP0: CLR CLR S

24、CLSCL; ; 保證時鐘為低保證時鐘為低RLC RLC A A; ; 一位數(shù)據(jù)送入一位數(shù)據(jù)送入CyCy中中MOV MOV SDA, CSDA, C; ; 準(zhǔn)備發(fā)送一位數(shù)據(jù)準(zhǔn)備發(fā)送一位數(shù)據(jù)NOPNOPSETBSETBSCLSCL; ; 發(fā)送一位數(shù)據(jù)發(fā)送一位數(shù)據(jù)NOPNOPCLR CLR SCLSCL; ; 一位數(shù)據(jù)發(fā)送完成一位數(shù)據(jù)發(fā)送完成DJNZ DJNZ R0, LOOP0R0, LOOP0LCALLLCALLACKACK; ; 接收應(yīng)答信號接收應(yīng)答信號RETRET2021-12-1539; MAX517; MAX517輸出轉(zhuǎn)換子程序,輸出數(shù)據(jù)在輸出轉(zhuǎn)換子程序,輸出數(shù)據(jù)在ACCACC中,返回

25、中,返回Cy=0Cy=0時發(fā)送正確時發(fā)送正確OUT517: OUT517: PUSH ACCPUSH ACC; ; 保存輸出數(shù)據(jù)保存輸出數(shù)據(jù) LCALL STARTLCALL START; ; 輸出開始條件輸出開始條件 MOVMOVA, #01011010BA, #01011010B ; MAX517; MAX517地址字節(jié)內(nèi)容地址字節(jié)內(nèi)容LCALLLCALLOUTBYTEOUTBYTE; ; 輸出地址字節(jié)輸出地址字節(jié)JC JC OUTENDOUTEND; ; 無應(yīng)答,提前結(jié)束無應(yīng)答,提前結(jié)束MOV MOV A, #00HA, #00H; ; 控制字節(jié)控制字節(jié)LCALLLCALLOUTBYTE

26、OUTBYTE; ; 輸出控制字節(jié)輸出控制字節(jié)JC JC OUTENDOUTEND; ; 無應(yīng)答,提前結(jié)束無應(yīng)答,提前結(jié)束POPPOPACCACC; ; 恢復(fù)輸出數(shù)據(jù)恢復(fù)輸出數(shù)據(jù)LCALLLCALLOUTBYTEOUTBYTE; ; 輸出輸出DACDAC數(shù)據(jù)數(shù)據(jù)PUSHPUSHACCACCOUTEND: OUTEND: POPPOPACCACCLCALLLCALLSTOPSTOP; ; 輸出結(jié)束條件輸出結(jié)束條件RETRET2021-12-1540 2021-12-15412021-12-15422021-12-1543微控制器1CAN總線CAN控制器1CAN收發(fā)器1TxRx微控制器2CAN控制

27、器2CAN收發(fā)器2TxRx2021-12-15442021-12-1545 2021-12-15462021-12-1547USBUSB系統(tǒng)的基本系統(tǒng)的基本軟件包括軟件包括USBUSB設(shè)備驅(qū)設(shè)備驅(qū)動程序、動程序、USBUSB驅(qū)動程驅(qū)動程序和序和USBUSB控制器驅(qū)動控制器驅(qū)動程序。程序??蛻糗浖SB系統(tǒng)軟件USB主控制器集線器功能單元USB邏輯設(shè)備USB總線接口主機(jī)系統(tǒng)USB設(shè)備2021-12-15482021-12-15492021-12-15502021-12-1551USBDATAUSBDATAEQU EQU P0P0USBRDUSBRDEQU EQU P1.0P1.0USBWR US

28、BWR EQU EQU P1.1P1.1USBTXE USBTXE EQU EQU P1.2P1.2USBRXF USBRXF EQU EQU P1.3P1.3USBREN USBREN EQU EQU P1.4P1.4; ; 從從FIFOFIFO接收緩沖區(qū)讀一個字節(jié)送入累加器接收緩沖區(qū)讀一個字節(jié)送入累加器A ARDBYTE:RDBYTE:JBJBUSBRXF, RDBYTEUSBRXF, RDBYTE; ; 等待接收數(shù)據(jù),低電平有效等待接收數(shù)據(jù),低電平有效CLR CLR USBRD USBRD ; ; 發(fā)出讀信號發(fā)出讀信號 MOVMOVA, USBDATAA, USBDATA; ; 讀字節(jié)讀

29、字節(jié)SETB SETB USBRD USBRD RETRET; ; 將累加器將累加器A A中內(nèi)容寫入中內(nèi)容寫入FIFOFIFO發(fā)送緩沖區(qū)發(fā)送緩沖區(qū)WRBYTE:WRBYTE:JBJBUSBTXE, WRBYTEUSBTXE, WRBYTE; ; 等待發(fā)送數(shù)據(jù),低電平有效等待發(fā)送數(shù)據(jù),低電平有效MOVMOVUSBDATA, AUSBDATA, A; ; 輸出字節(jié)內(nèi)容輸出字節(jié)內(nèi)容CLR CLR USBWR USBWR ; ; 發(fā)出寫信號發(fā)出寫信號 SETB SETB USBWR USBWR RETRET2021-12-1552 2021-12-15532021-12-1554主機(jī)復(fù)位脈沖Tx從機(jī)接

30、收模式Rx從機(jī)等待從機(jī)應(yīng)答脈沖主機(jī)拉低從機(jī)拉低電阻拉高至少480S60240S1560S至少480S2021-12-1555主機(jī)寫“0”時隙從機(jī)采樣60120S1S主機(jī)寫“1”時隙15S45S從機(jī)采樣15S45S1S主機(jī)讀“0”時隙主機(jī)采樣1S主機(jī)讀“1”時隙15S45S15S1S主機(jī)采樣2021-12-15562021-12-1557地址地址ROMRAME2PROM028H溫度低溫度低8位位1溫度高溫度高8位位248位位THTH3器件序列號器件序列號TLTL4配置寄存器配置寄存器配置寄存器配置寄存器5保留保留6保留保留7CRC保留保留8CRCD7D6D5D4D3D2D1D0字節(jié)字節(jié)02322

31、21202-12-22-32-4字節(jié)字節(jié)1SSSSS262524字節(jié)字節(jié)4TMR1R0111112021-12-15582021-12-1559INIT: CLRINIT: CLRDQDQ; ; 初始化程序初始化程序MOVMOVR2, #240R2, #240; ; 拉低總線至少拉低總線至少480480s sLCALLLCALL DELAYDELAYSETBSETBDQDQMOVMOVR2, #30R2, #30; ; 釋放總線釋放總線6060s sLCALLLCALL DELAYDELAYMOVMOVC, DQC, DQ; ; 讀取應(yīng)答信息至讀取應(yīng)答信息至CyCyRETRETWRBIT: W

32、RBIT: CLRCLRDQDQ; ; 寫一位子程序?qū)懸晃蛔映绦騇OVMOVR2, #2R2, #2; ; 拉低總線不超過拉低總線不超過15s15sLCALLLCALLDELAYDELAYMOVMOVDQ, CDQ, C; ; 寫寫CyCy至至DQDQMOVMOVR2, #30R2, #30; ; 保持保持60s60sLCALLLCALLDELAYDELAYSETBSETBDQDQ; ; 釋放總線釋放總線RETRET DQ DQ定義為單片機(jī)的定義為單片機(jī)的I/OI/O口線,單片機(jī)的晶體振蕩頻率為口線,單片機(jī)的晶體振蕩頻率為12MHz12MHz,機(jī)器周期為機(jī)器周期為1s1s。2021-12-15

33、60DBIT: DBIT: CLRCLRDQDQ; ; 讀一位子程序讀一位子程序NOPNOP; ; 拉低總線拉低總線2s2sSETBSETBDQDQMOVMOVR2, #3R2, #3LCALLLCALLDELAYDELAY; ; 延時延時MOVMOVC, DQC, DQ; 15s; 15s之內(nèi)采樣之內(nèi)采樣RETRETDELAY: DELAY: DZNZDZNZR2, $R2, $; ; 延時子程序延時子程序RETRETRDBYTE: MOVRDBYTE: MOVR3, #8R3, #8 ; ; 讀字節(jié)子程序讀字節(jié)子程序RDLP1: RDLP1: LCALLLCALLRDBITRDBIT; ;

34、 讀一位數(shù)據(jù)讀一位數(shù)據(jù)RRCRRCA A; ; 移位到移位到A A中中DJNZDJNZR3, RDLP1R3, RDLP1RETRETWRBYTE: MOVWRBYTE: MOVR3, #8R3, #8 ; ; 寫字節(jié)子程序?qū)懽止?jié)子程序WRLP1: WRLP1: RRCRRCA A; A; A中位數(shù)據(jù)移位到中位數(shù)據(jù)移位到CyCyLCALLLCALLWRBITWRBIT; ; 寫一位數(shù)據(jù)寫一位數(shù)據(jù)DJNZDJNZR3, WRLP1R3, WRLP1RETRET2021-12-1561; ; 溫度轉(zhuǎn)換及讀取子程序溫度轉(zhuǎn)換及讀取子程序 DQDQBITBITP1.0P1.0; I/O; I/O管腳定義

35、管腳定義SNCODESNCODEEQUEQU30H30H; ; 存放該存放該DS18B20DS18B20序列號的首地址序列號的首地址TM18B20: TM18B20: LCALLLCALLINITINIT; ; 初始化總線初始化總線JCJCTM18B20TM18B20; ; 等待應(yīng)答信號等待應(yīng)答信號MOVMOVA, #55HA, #55H; ; 匹配相應(yīng)匹配相應(yīng)ROMROMLCALLLCALLWRBITEWRBITE; ; 發(fā)送匹配發(fā)送匹配ROMROM命令命令MOVMOVR4, #8R4, #8MOVMOVR0, #SNCODER0, #SNCODELOOP: LOOP: MOVMOVA, R0A, R0LCALLLCALLWRBITEWRBITE; ; 發(fā)送發(fā)送8 8字節(jié)字節(jié)ROMROM序列號序列號INCINCR0R0DJNZDJN

溫馨提示

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

評論

0/150

提交評論