摘 要:本文介绍二线制串行E2PROM的操作协议以及和MCS-51系列单片机的接口方法,着重讨论如何利用MCS-51的两条I/O线通过软件产生I2C总线所要求的操作时序,以实现MCS-51对二线制串行E2PROM的读写操作。电子园51单片机学习网;^]6]5Oxd[,j`$|
关键词:二线制串行EEPROM;I2C总线;主器件;从器件电子园51单片机学习网JytzF
q Gp'd0T0 二线制串行E2PROM是一种非易失存储器,以其体积小、功耗低、操作灵活、性价比高、存储数据可靠等诸多优点,是单片机应用系统中非易失存储器的理想选择。但二线制串行E2PROM的操作采用I2C总线协议,而MCS-51系列单片机没有I2C接口,我们在研制“GLM-500测湿仪”时,利用MCS-51单片机的两条I/O线,通过软件产生I2C总线所要求的操作时序,可方便地实现MCS-51对二线制串行E2PROM的读写操作。电子园51单片机学习网1Q J9x iO7G\r:X
jP)N%n5k0x01 二线制串行E2PROM的引脚功能及基本操作时序
图1是二线制串行E2PROM 24C01/02/04/08/16的引脚排列图。
j Y2bhv0 仅SCL和SDA端为基本的总线操作端;SCL是串行时钟输入端;SDA是串行数据输入/输出端;漏极开路输出需接上拉电阻到VDD;WP是写保护端,接高电平时,只能读出,禁止写入;A0、A1、A2是片选端,对于
C*~A uP'X0 24C01/02/04/08/16,内部无连接,可接至VSS。电子园51单片机学习网 }*y?:D i%k:Y(P.o8d
电子园51单片机学习网-B0z?5Vgo+[
G*[Uc R0 I2C总线协议运用主/从双向通讯。发送数据到总线上的器件定义为发送器,接收数据的器件定义为接收器。主器件和从器件都可工作于接收器和发送器状态,但总线必须由主器件(通常为微处理器)控制,主器件产生串行时钟(SCL),控制总线上数据传送的方向,并产生开始和停止信号。电子园51单片机学习网LeYT}%Ea6f])P
总线从主器件产生开始条件后到产生停止条件期间有效,微处理器对串行E2PROM的读写操作在开始位控制下开始,在停止位控制下结束。电子园51单片机学习网4B5[&?"I.q.\"m:j'CD5M
当SCL和SDA均为高电平时,定义为总线空闲状态,数据的传送必须在总线空闲时才能开始。当SCL为高电平时,SDA由高到低的变化为传送数据的开始位;而当SCL为高电平时,SDA由低到高的变化为停止位。在开始条件以后,SDA上数据的改变必须在SCL为低电平期间进行,在SCL为高电平期间, SDA必须保持稳定。每传送一位数据,主器件必须发出一个时钟脉冲。开始与停止条件如图2所示。电子园51单片机学习网A X;[Wr1|
一次读操作读出的字节数由主器件决定,没有限制,多到一次可以读出整个存储器的内容;而对于写操作,一次最多可以写入一个页面的字节数,如果超过了节),则前面接收到的数据将被覆盖。电子园51单片机学习网;i@,Dh*^)W1A
数据传送过程中,每接收一个数据,接收器必须产生一个低电平的确认信号,主器件必须产生一个与此确认位相应的时钟脉冲。
\w7UWa0Jc0 开始位以后,主器件需送出8位的控制字节,其格式请参考有关的文献。电子园51单片机学习网N$iLC-a
电子园51单片机学习网h9y-W;r)j!o.A3Q
f}fGH-T D#i I03 读写程序
D"b S;D lm A0电子园51单片机学习网0si0Ggc
MCS-51系列单片机对二线制串行E2PROM读写时,必须产生开始位,发送控制字节,控制数据传送,产生停止位。按照图3的连接,MCS-51系列单片机对24C04的读写程序如下:
(Y9n/fTvt0 ①字节读子程序电子园51单片机学习网Ag Se N([ pi
入口条件:R0中存放块内写入单元的地址;R1中存放待写入的数据;R2中存放控制字节。电子园51单片机学习网AP6q*lVo*|
BYWR:SETBP1.0 ;产生开始位
Ta#O:jR@W5t+u0 CLRP1.1电子园51单片机学习网\ G)X&p%@5I
Sr:L)yrn0 CLRP1.0
]&m3LN5x?@hxtU0 MOV A,R2 ;发送控制字节
D&M#m { S:V c I0 LCALLSBWR
-k*T%M:DKg3R04h1O D+yQ] z&Y.D9n [.o0 SETBP1.1
$u5PC!W:K:S;I5vJr0电子园51单片机学习网/LVx%zQ MyY+xSETBP1.0
!a({`i;u(t01tCF-b!{0 NOP
F%in6xpK;VI:ls0 JBP1.1,BYWR
,vZ}%q^C;uCC*Q|0 ;判有无确认信号,接收器没确认重新开始
CLRP1.0电子园51单片机学习网I E'r*vf
MOV A,R0 ;发送块内写入字节地址电子园51单片机学习网3Mk+C%hRLv,uy
Yb]]?DaN0 LCALLSBWR电子园51单片机学习网2jH V6_^g
电子园51单片机学习网)H%Gj"Se beSETBP1.1电子园51单片机学习网fhH!h G#LyEP
电子园51单片机学习网$@(frpL SETBP1.0
#N ynEt0 JBP1.1,$ ;判确认信号电子园51单片机学习网/Rp8`J~;e
CLRP1.0电子园51单片机学习网JVu*?'P&_,\7N;R
MOV A,R1 ;发送写入数据
)P({:pU*q1x0 LCALLSBWR电子园51单片机学习网f!XP2c]
电子园51单片机学习网^N"a gQ{:s~SETBP1.1
9C3KTN#|Q!LX R0电子园51单片机学习网x FF q8yhw SETBP1.0电子园51单片机学习网'k B O:k:feHM
JBP1.1,$ ;判确认信号
CLRP1.0电子园51单片机学习网.Wf6cC1S3cv9\
CLRP1.1 ;产生停止位电子园51单片机学习网8_+Emu+m#k{
Yy7?R0M#O1G0 SETBP1.0
4p3ww$G-k.?_h0"s^1SsJ I)?P0 SETBP1.1
%\:n`3p wI2I4Af0!S\ U%Gg]0 CLRP1.0电子园51单片机学习网2z$qb X5h*kebHV
x [` j'dA3Gbd0 RET电子园51单片机学习网!t4?0~9Y/y9I1YAi(j
②字节写子程序
dRg7z;CM5M}4E0 入口条件:R0中存放块内读出字节的地址;R2中存放控制字节,其最低位为0。
{L4MDo fO[(}v"b&M0返回结果:读出的数据存于R1中。
h9w-W&IR;OaH^0 BYRD:SETBP1.0 ;产生开始位电子园51单片机学习网3|@7eFDH
X(?S0Oq(P?0 CLR P1.1电子园51单片机学习网5OA2q/UL.t
4BN m.qa0 CLR P1.0电子园51单片机学习网3e%P D vF
MOV A,R2 ;发送控制字节
LCALLSBWR电子园51单片机学习网 TG%d*XJ
-T2\Z!{/{~;k0 SETBP1.1
8hf F$@+`'XYr1}0电子园51单片机学习网)n Y~ Wk5qSETBP1.0
5KH+Xm]*\RO7Xg00\ X R} ^T2G Y0 NOP
G%T4S#c i%a8@f3C*H7w0 JBP1.1,BYRD
"nc ut(OD0 ;判确认信号,接收器未确认重新开始电子园51单片机学习网?)e F9j|5T gp:M
"kAE(eymV0 CLR P1.0电子园51单片机学习网;m^!q"X(h^u
MOV A,R0 ;发送块内读出字节地址
\`wg2|*]%{ }*^0 LCALLSBWR电子园51单片机学习网,k'}.x n+D9{6I(Y
9LeU|Ev0 SETBP1.1电子园51单片机学习网 h tY []/n8ER
电子园51单片机学习网Q Bq?E,?L SETBP1.0
\"c4HI5|4\0 JBP1.1,$ ;判确认信号
CLR P1.0 ;产生读开始位电子园51单片机学习网:TrI,D0XT
电子园51单片机学习网}y!Rx:zr [\qSETBP1.0
g#z2I,MF0n){0电子园51单片机学习网0EC b(Yp(R!qCLR P1.1电子园51单片机学习网 ZPX P+U*G7c.Qe
电子园51单片机学习网n1I X\g+G(?H CLR P1.0电子园51单片机学习网:d G jNH(kln
MOV A,R2 ;发送控制字节
!lH*H6k6Ehs;?0 SETBACC.0LCALLSBWR
8?%w1fIR[?u6p/d0+z NN:\s0 SETBP1.1
P~B6S v0电子园51单片机学习网$T)mWH"p%II SETBP1.0电子园51单片机学习网z*zC \8X
JBP1.1,$ ;判确认信号电子园51单片机学习网8h/V8J J-D
7qqW5hYe;{o?0 CLR P1.0
9W#NZD#Dn2`ch(D0 MOV R7,#8 ;接收8位数据
BYR1:SETBP1.0
#o7[9C%jX.z0电子园51单片机学习网Ha l.IR(P/~t{MOV C,P1.1
;}_|m AO|Jx0;G(KP&z d2d@.U8d0 RLC ACLRP1.0
^`$PiW6QxY0^F!x'Vb!p#c0 DJNZR7,BYR1
G$A Z$Al0电子园51单片机学习网4g+C7F:]%a7~x3?w CLRP1.1
3y!? }4|Cq2M0 SETBP1.0 ;产生停止位电子园51单片机学习网Z4BA QFp!x4Xs
:k%T^Ky5s!?#n/i0 SETBP1.1电子园51单片机学习网Fd bK%P{ V$b)zk
%H-k[\ YEk0 CLRP1.0电子园51单片机学习网8M\yI't
xXq.b2j/e}:n0 MOV R1,A电子园51单片机学习网q,U1b[2s{t
Qx^ v$^W\0 RET电子园51单片机学习网{ ~8O p^
SBWR:MOV R7,#8电子园51单片机学习网*BP D5yJ'f H$I
SB1: RLC A电子园51单片机学习网7fUNB0y
MOVP1.1,C电子园51单片机学习网Nd,R2[*Y#Sv
6|j(j w4T4{2Q6b/BeE0 SETBP1.0
0uP%h)oj!i`{5F"j0 CLRP1.0电子园51单片机学习网wHJu%s1lh-MX X
DJNZR7,SB1
3r!F ^;W2L:n&G;Hn!K)n0电子园51单片机学习网6J@7RstZ RET
/W$R-i3i+M|6uF5bu0 以上子程序对二线制串行E2PROM读写可靠,提供入口条件后可直接调用,此外,串行E2PROM还可进行顺序读和页面写,限于篇幅,不再列出其程序。
LaC0w&f m,U~0电子园51单片机学习网{*faCw M\%i!o
xFX C#Nd0 欢迎访问无由电子开发网(技术文章在线阅读在线商城)
k_7_qmJ0
文章评论(0条评论)
登录后参与讨论