启动条件子程序:
SETB SDA
LCALL YS4
SETB SCL
LCALL YS4
CLR SDA
LCALL YS4
CLR SCL
LCALL YS4
RET
停止条件子程序:
CLR SDA
LCALL YS4
SETB SCL
LCALL YS4
SETB SDA
RET
注:子程序YS4的作用是延时4μs。
2.1 写操作
X1226初始化操作后,单片机对X1226进行开始条件的设置,在写CCR或EEPROM之前,主机必须先向状态寄存器写02H,确认应答信号,确认后写入06H,再确认应答信号。确认后启动了写操作。首先发送高位地址,然后发送低位地址。Xl226每收到一个地址字节后,均会产生一个应答信号。在两个地址字节都收到之后,X1226等待8位数据。在收到8位数据之后,X1226再产生一个应答。然后单片机通过产生一个停止条件来终止传送。
Xl226具有连续写入功能,X1226在收到每个字节后,响应一个应答,其内部将地址加一。当计数器达到该页的末尾时,它自动的“返回”到该页的首地址。这意味着单片机可从某一页的任何位置开始向存储器阵列连续写入64字节或向CCR连续写入8字节。
写入Xl226数据子程序:
MOV R5,#8
SENDI:MOV A,DATASE
RLC A
MOV DATASE,A
MOV SDA,C
SEB SCL
LCALL YS4
CLR SCL
LCALL YS4
DJNZ R5,SENDl
RET
2.2读操作
在上电时,16位地址的默认值为0000H。X1226初始化操作之后,单片机对X1226进行开始条件的设置,在写CCR或EEPROM之前,主机必须先向状态寄存器写02H,确认应答信号,确认后写入06H,再确认应答信号。确认后启动了写操作。首先发送高位地址,然后发送低位地址。Xl226每收到一个地址字节后,均会产生一个应答信号。单片机发送另一个开始条件,将R/W位设置为l,接着就是接收8位数据。单片机终止读操作时,无需等待X1226的应答信号,单片机即可设置停止条件。
读出X1226数据子程序:
MOV R5,#8
MOV DATARE,#0
SETR SDA
CLR C
READl:SETB SCL
LCALL YS4
MOV C,SDA
CLR SCL
MOV A,DATARE
RLC A
MOV DATARE,A
LCALL YS4
DJNZ R5,READl
RET
2.2 X1 226独特的振荡器频率在线补偿调节功能
Xicor公司在X1226芯片上集成了振荡器补偿电路,这使得用户通过软件,可在线对振荡器频率进行微调,这种对振荡器频率进行的微调通常针对两种情况。一种情况是在25℃常温下,对振荡器因器件初始精度带来的频率偏差进行补偿;第二种情况是对因温度引起的频率漂移进行补偿。X1226内部设有数字微调寄存器(DTR)和模拟微调寄存器(ATR),两个寄存器均为非易失性寄存器。数字微调寄存器(DTR)具有三位数字微调位,调节范围一30ppm~+30ppm。模拟微调寄存器(ATR)具有六个模拟微调位,调节范围+116ppm~-37ppm。
为了能够对外界环境温度变化引起的温漂进行补偿, 要求系统中设计一个温度传感器,并尽量让它靠近实时时钟器件X1226,这样可以真实地反映振荡器的温度,原理图如图3所示。单片机首先通过系统温度传感器获取环境温度, 并在补偿参数表中获取对应的补偿值, 然后将补偿数据填写到相应的微调寄存器中,就能实现温漂补偿的目的。