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

正文內(nèi)容

單片機(jī)與i2c總線技術(shù)文檔-資料下載頁

2025-07-13 21:52本頁面
  

【正文】 0。 k=(k1)|j。 SCL=0。 delay()。 } delay()。 return k。}uchar read_add(uchar address)//指定地址讀一個(gè)字節(jié)數(shù)據(jù){ uchar dd。 start()。 writebyte(0xa0)。 respons()。 writebyte(address)。 respons()。 start()。 writebyte(0xa1)。 respons()。 dd=readbyte()。 stop()。 return dd。}20090413 22:55I2C總線是Philips公司提出的一種集成電路IC器件之間相連接的總線協(xié)議,其目的是使電子系統(tǒng)(不只限于單片機(jī)系統(tǒng))各個(gè)IC器件之間的連線變得容易。因?yàn)槭褂脗鹘y(tǒng)的并行總線在IC器件之間連接,往往會(huì)使得IC之間連線較多,顯得非常復(fù)雜。而I2C總線則使IC器件之間只需SDA、SCL兩條連線就可以傳送數(shù)據(jù),因而十分方便。由于I2C在印刷體中不容易書寫(需要上標(biāo)),所以實(shí)際書寫時(shí),還常見到IIC、I2C等書寫方法,本文采用IIC的寫法,敬請(qǐng)注意。關(guān)于IIC總線的知識(shí),請(qǐng)參閱相關(guān)書籍,此處不再做進(jìn)一步介紹。下面我們用一個(gè)使用IIC總線連接器件的例子來簡(jiǎn)單說明IIC總線的仿真。(2568bit)的存儲(chǔ)器。編寫程序使用AT89C51的IO口模擬實(shí)現(xiàn)IIC總線協(xié)議進(jìn)行通信,并向24C02存儲(chǔ)器內(nèi)從字節(jié)0到字節(jié)FF寫入數(shù)字0到FF。51系列單片機(jī)本身沒有IIC接口,但一些本身具有IIC接口的單片機(jī)往往是高端產(chǎn)品,一方面價(jià)格不菲,另一方面我們的系統(tǒng)也沒有必要使用之。通常我們就使用軟件通過51系列單片機(jī)的IO口來模擬實(shí)現(xiàn)IIC總線通信。本例事實(shí)上比較簡(jiǎn)單,但需要對(duì)IIC總線時(shí)序有較好的理解。源文件如下圖所示(采用C51語言編寫):在Keil中編輯好源文件以后,接下來就可以建立工程文件并生成相應(yīng)的源代碼了,然后我們來繪制電路圖。此例的電路圖極其簡(jiǎn)單。只需兩個(gè)IC,即AT89C51和24C02C,和兩個(gè)上拉電阻,而且上拉電阻還可以省略。至于連接,就更為簡(jiǎn)單了。最后得到繪制好的電路圖如下圖所示:繪制好電路圖,我們就可以將前面剛剛生成的程序源代碼裝入單片機(jī)了,裝入以后,下面我們就可以來進(jìn)行仿真了。首先點(diǎn)擊仿真按鈕,系統(tǒng)沒有什么反映,只有高低電平變化的顏色。我們要想查看結(jié)果,還要用前文中仿真擴(kuò)展RAM存儲(chǔ)器的方法,先點(diǎn)擊暫停,然后點(diǎn)擊“Debug”菜單下的“I2C Memory Internal Memory – U2”子菜單來打開U2即EEPROM存儲(chǔ)器24C02C的內(nèi)容窗口“I2C Memory Internal Memory – U2”,然后我們就看到了其中的內(nèi)容,也就是我們仿真程序的結(jié)果。如下圖所示:從圖中我們能清楚地看到我們的仿真結(jié)果,程序完全正確地執(zhí)行了我們的命令。當(dāng)然,如果你過早地點(diǎn)擊了暫停按鈕,那么你得到的結(jié)果可能和上圖略有不同,那可能是因?yàn)槌绦蛏形磮?zhí)行完畢。此時(shí)你可以繼續(xù)點(diǎn)擊運(yùn)行按鈕,或者點(diǎn)擊單步按鈕來仔細(xì)查看程序執(zhí)行過程中24C02C存儲(chǔ)器內(nèi)容的改變情況。IIC總線 C程序20090601 00:20void init() //初始化{ SCL=1。 delay()。 SDA=1。 delay()。}void start() //啟動(dòng)信號(hào){ SDA=1。 delay()。 SCL=1。 delay()。 SDA=0。 delay()。}void stop() //停止信號(hào){ SDA=0。 delay()。 SCL=1。 delay()。 SDA=1。 delay()。}void respons() //回應(yīng)信號(hào){ uchar i=0。SCL=1。delay()。while((SDA==1)amp。amp。(i255))i++。//檢測(cè)應(yīng)答信號(hào),如果一段時(shí)間沒有檢測(cè)到則判定從機(jī)正確接收 SCL=0。delay()。}void writebyte(uchar date)// 寫一個(gè)字節(jié){ uchar i,temp。 temp=date。 for(i=0。i8。i++) { temp=temp1。 SCL=0。 delay()。 SDA=CY。 delay()。 SCL=1。 delay()。 } SCL=0。 delay()。 SDA=1。 delay()。}uchar readbyte()//讀一個(gè)字節(jié){ uchar i,j,k。 SCL=0。 delay()。 SDA=1。 for(i=0。i8。i++) { SCL=1。 delay()。 if(SDA==1) j=1。 else j=0。 k=(k1)|j。 SCL=0。 delay()。 } delay()。 return k。}Void write_add(uchar address,uchar info)//指定地址寫一個(gè)字節(jié)數(shù)據(jù){ start()。 writebyte(0xa0)。//發(fā)送寫控制命令 respons()。 writebyte(address)。 respons()。 writebyte(info)。 respons()。 stop()。}uchar read_add(uchar address)//指定地址讀一個(gè)字節(jié)數(shù)據(jù){ uchar dd。 start()。 writebyte(0xa0)。//發(fā)現(xiàn)寫控制命令 respons()。 writebyte(address)。 respons()。 start()。 writebyte(0xa1)。//發(fā)送讀控制命令 respons()。 dd=readbyte()。 stop()。 return dd。}includedefine uchar unsigned char define uint unsigned int sbit SDA = P1^6。sbit SCL= P1^7。void init()。void start()。void stop()。void ack()。bit NackFlag。void chkack()。void sendbyte(uchar num,uchar addr)。uchar ReadOneChar()。void WriteOneChar(uchar dat)。void delay(uchar x)。 uchar pp。 main(){init()。//uchar pp。for(pp=0。pp0xff。pp++){ sendbyte(pp,pp)。 delay(500)。}/*start()。delay(10)。WriteOneChar(0x08)。 delay(5)。chkack()。WriteOneChar(3)。 chkack()。WriteOneChar(0x83)。 chkack()。stop()。delay(100)。 start()。 send8bit(0xa0)。 chkack()。 delay(10)。 send8bit(addr)。 delay(5)。 chkack()。 send8bit(num)。 chkack()。 stop()。 delayms(100)。 *///while(1)。 }void delay(uchar x){ uint p,q。 for(p=0。px。p++)。 for(q=0。q100。q++) 。// {}}void init(){ SCL=1。 SDA=1。}void start(){ SDA=1。 delay(5)。 SCL=1。 delay(10)。 SDA=0。 delay(5)。}void stop(){ SDA=0。 delay(5)。 SCL=1。 delay(5)。 SDA=1。 delay(5)。}void chkack(){ SDA=1。 SCL=1。 NackFlag=0。 if(SDA==1) { NackFlag=1。 } SCL=0。}void ack(){ int i。 SCL=1。 SDA=1。 while(SDA==1amp。amp。i200) { i++。 } SCL=0。}/*uchar ReadOneChar(){ uchar dat,i,k。 dat=0x00。 for(i=0。i8。i++) { dat=dat1。 SCL=0。 k=SDA。 if(k) { dat=dat|0x80。 } SCL=1。 delay(10)。 } return dat。}void WriteOneChar(uchar dat){ uchar i,k,temp。 temp=dat。 for(i=0。i8。i++) { SCL=0。 k=0x80amp。temp。 if(k) SDA=1。 else SDA=0。 temp=temp1。 delay(10)。 SCL=1。 delay(10)。 // SCL=0。 } SDA=1。 delay(10)。}*/void WriteOneChar(uchar date){ uchar i,temp。 temp=date。 for(i=0。i8。i++) { temp=temp1。 SCL=0。 delay(5)。 SDA=CY。 delay(5)。 SCL=1。 delay(5)。 } SCL=0。 delay(5)。 SDA=1。 delay(5)。}void sendbyte(uchar num,uchar addr){ start()。 WriteOneChar(0xa0)。 chkack()。 WriteOneChar(addr)。 chkack()。 WriteOneChar(num)。 chkack()。 stop()。 delay(100)。} SDA=1。 SCL=1。 nackflag=0。 if(SDA==1) nackflag=1。 SC
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1