新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)—IIC—EEPROM(CAT24WCXX)—03

51單片機(jī)—IIC—EEPROM(CAT24WCXX)—03

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏

4.IIC的總線(xiàn)讀寫(xiě)操作

先介紹一下在IIC讀寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)~~~這樣以后說(shuō)起來(lái)就方便了

發(fā)送字節(jié)子程序:

先是asm文件形式:

;字節(jié)數(shù)據(jù)放入ACC
;每發(fā)送一個(gè)字節(jié)筪掉用一次CACK(檢測(cè)應(yīng)答子程序),取應(yīng)答位
WRBYTE:
MOVR0,#08H
WLP:
RLCA
JCWR_1
SJMPWR_0
WLP1:
DJNZR0,WLP
NOP
RET
WR_1: ;發(fā)送1
SETBSDA
NOP
SETBSCL
NOP
NOP
NOP
NOP
NOP
CLRSCL
SJMPWLP1
WR_0: ;發(fā)送0
CLRSDA
NOP
SETBSCL
NOP
NOP
NOP
NOP
NOP
CLRSCL
SJMPWLP1

然后就是c文件:

void send_byte(uchar c)
{
uchar bit_cnt;
for(bit_cnt=0;bit_cnt<8;bit_cnt++)//循環(huán)傳送8位
{
if((c< //取當(dāng)前發(fā)送位
sda=1;
else
sda=0;
_nop_();
scl=1;//發(fā)送到數(shù)據(jù)線(xiàn)上
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;
}
IIC_ack();
}

~~~~~~~~~接收子程序

匯編:

;讀出的值再ACC中
;每取一個(gè)字節(jié)要發(fā)送一個(gè)應(yīng)達(dá)或者非應(yīng)答信號(hào)(要知道你讀取就成了從機(jī),就要發(fā)送一個(gè)信號(hào)告訴主機(jī))
RDBYTE:
MOVR0,#08H
RLP:
SETBSDA
NOP
CLRSCL;置時(shí)鐘線(xiàn)為低電平,準(zhǔn)備接收數(shù)據(jù)
NOP
NOP
NOP
NOP
NOP
SETBSCL
NOP
MOVC,SDA;讀取數(shù)據(jù)位
RLCA;進(jìn)行數(shù)據(jù)位的處理
NOP
DJNZR0,RLP;沒(méi)有到8位,再來(lái)一次
RET

c代碼:

//返回接收的8位數(shù)據(jù)
uchar rec_byte()
{
uchar temp;
uchar bit_cnt;
temp=0;
sda=1; //置數(shù)據(jù)線(xiàn)為輸入方式
for(bit_cnt=0;bit_cnt<8;bit_cnt++)
{
_nop_();
scl=0; //置時(shí)鐘線(xiàn)為低電平,準(zhǔn)備接收數(shù)據(jù)
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
temp<<=1;
if(sda==1)//接收當(dāng)前數(shù)據(jù)位,接收內(nèi)容放入temp中
temp+=1;
_nop_();
_nop_();
}
scl=0;
_nop_();
_nop_();
return(temp);
}

好了,下面的就好說(shuō)了~~~~哎。。。累死了

IIC總線(xiàn)的讀寫(xiě)操作主要是三個(gè)(主要的表格與時(shí)序圖自己可以在網(wǎng)上搜的~~一搜一大片,我也就不要再贅述了)

(1)當(dāng)前地址讀

該操作將從所選期間的當(dāng)前地址讀,讀的字節(jié)數(shù)不指定

(2)指定單元讀

該操作將從指定所選期間指定地址讀,讀的字節(jié)數(shù)不指定

(4)指定字節(jié)寫(xiě)(不說(shuō)了,一看就明白了)

二、IIC總線(xiàn)EEPROM芯片與單片機(jī)的接口

1.串行EEPROM電路CAT24WCXX概述

美國(guó)CATALYST公司出品的CAT24WCXX 是一個(gè)1-256K位的支持I2C總線(xiàn)數(shù)據(jù)傳送協(xié)議的串行CMOS E2PROM,可用電擦除,可編程自定時(shí)寫(xiě)周期(包括自動(dòng)擦除時(shí)間不超過(guò)10ms,典型時(shí)間為5ms)的。串行E2PROM一般具有兩種寫(xiě)入方式,一種是字節(jié)寫(xiě)入方式,還有另一種頁(yè)寫(xiě)入方式。允許在一個(gè)寫(xiě)周期內(nèi)同時(shí)對(duì)1個(gè)字節(jié)到一頁(yè)的若干字節(jié)的編程寫(xiě)入,1頁(yè)的大小取決于芯片內(nèi)頁(yè)寄存器的大小。其中,CAT24WC01具有8字節(jié)數(shù)據(jù)的頁(yè)面寫(xiě)能力,CAT24WC02/04/08/16具有16字節(jié)數(shù)據(jù)的頁(yè)面寫(xiě)能力,CAT24WC32/64具有32字節(jié)數(shù)據(jù)的頁(yè)面寫(xiě)能力,CAT24WC128/256具有64字節(jié)數(shù)據(jù)的頁(yè)面寫(xiě)能力。美國(guó)CALAYST公司先進(jìn)的CMOS技術(shù)實(shí)質(zhì)上是降低了器件的功耗,可在電源電壓低到1.8V的條件下工作,等待電流和額定電流分別為0和3mA。該系列器件提高商業(yè)級(jí)、工業(yè)級(jí)、汽車(chē)級(jí)芯片。CALAYST公司特有的噪聲保護(hù)施密特觸發(fā)輸入技術(shù)和ESD最小達(dá)到2000V,從而保證CAT24WCXX系列E2PROM有極強(qiáng)的干擾下數(shù)據(jù)不丟失,因此CAT24WCXX系列E2PROM在汽車(chē)電子及電度表、水表、煤氣表中得到了廣泛的話(huà)應(yīng)用(個(gè)人感覺(jué)這些應(yīng)用還是對(duì)自己有很大用途,可以好好看看,對(duì)自己那是相當(dāng)?shù)挠袔椭?。(下面的表格看看~~)



(注意頁(yè)寫(xiě),還要注意一個(gè)MCU上可以擴(kuò)展的數(shù)量,后面有介紹為什么可以擴(kuò)展這么多,其實(shí)就是因?yàn)橐玫巾?yè)寫(xiě),呵呵,別的就不用太注意了)



關(guān)鍵詞: 51單片機(jī)IICEEPRO

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉