按平台模式设计的虚拟I2C总线软件包VIIC
LCALL WRBYT
LCALL CACK
JB F0,WRNBYT
INC R1
DJNZ R3,WRDA
LCALL STOP
RET ⑨RDNBYT: MOV R3, NUMBYT ;模拟I2C总线接收n个 ;字节数据
LCALL STA
MOV A,SLA
LCALL WRBYT
LCALL CACK
JB F0,RDNBTY RDN: MOV R1,#MRD RDN1: LCALL RDBYT
MOV @R1,A
DJNZ R3,ACK
LCALL MNACK
LCALL STOP
RET ACK: LCALL MACK
INC R1
SJMP RDN1
四、VIIC1.0应用指南
1.适用范围
VIIC1.0适用于80C51系列单主系统中I2C总线外围器件扩展的应用程序设计。由于时序模拟基于6MHz时钟设计,在高速时钟下,可适当增加时序模拟子程序中的空操作指令。
2. 资源占用
VIIC使用了R0,R1,R2,R3,F0,C等资源。
3.符号单元
PVIIC中有许多符号标记,这些符号标记有:
VSDA 虚拟I2C总线数据线;
VSCL虚拟I2C总线时钟线;
SLA寻址字节存放单元;
NUMBYT传送字节数存放单元;
MTD发送数据缓冲区;
MRD接收数据缓冲区。
4.归一化操作命令
不论总线上扩展什么外围器件,都只须使用以下三条指令:
MOV SLA,#SLAW/SLAR
MOVNUMBYT,#N
LCALLWRNBYT/RDNBYT
5.VIIC的装载
由于WRNBYT/RDNBYT都使用长调用命令LCALL,故VIIC1.0可放在程序存储器的任意空间。 图1
6.通用的应用界面
VIIC1.0的应用界面如图1所示。与VIIC1.0有关的只是3条归一化操作命令;与硬件电路相关的是器件地址与引脚地址构成的寻址字节和由器件规定的数据操作格式。
(凹丫丫范文网www.fwsi