WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
#define uchar unsigned charWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
#define uint unsigned intWWW_PL※CJS_COM-PLC-技.术_网
#define IIC_READ 0XA1 //定义读指令WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
#define IIC_WRITE 0XA0 //定义写指令WWW_PLC※JS_COM-PmLC-技.术_网
#define NOP _nop_()WWW_P※LCJS_COM-PLC-)技.术_网
//#define SDA INT0WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
//#define SCL T0W1WW_P4LCJS_COM-PLC-技.术_网
//==============================WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
uchar idata buff[32]; //save the byte read out form iic device in test operationWWW_PLCJS@_COM%-PLC-技.术_网
uchar idata readbuff[32];//测试数组,暂存写入读出数据WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
//uchar writebuff[32];——可——编——程——控-制-器-技——术——门——户
//===============================WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
sbit SDA=P1^4;//P2^7; //THE SDA BIT IS PORT 2 BIT 7WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
sbit SCL=P1^7;//P2^6; //THE SCL BIT IS PORT 2 BIT 6WWW_PLCJS_COM-PLC-技.术_网
//sbit WP=P2^5;plcjs.技.术_网
//sbit test=P1^0;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
//===============================W1WW_P4LCJS_COM-PLC-技.术_网
//define a bit_operation byte to use in shift operationWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
//use this mode can achieve high operation speed WWW_PL※CJS_COM-PLC-技.术_网
uchar bdata bbyte;//定义位操作用数组,采用此方法可提高位操作速度W1WW_P4LCJS_COM-PLC-技.术_网
sbit a0=bbyte^0;WWW_PL※CJS_COM-PLC-技.术_网
sbit a1=bbyte^1;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
sbit a2=bbyte^2;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
sbit a3=bbyte^3;P.L.C.技.术.网——可编程控制器技术门户
sbit a4=bbyte^4;WWW_PL※CJS_COM-PLC-技.术_网
sbit a5=bbyte^5;WWcW_PLCJS_COM-PLC-技.术_网
sbit a6=bbyte^6;WWW_P※LCJS_COM-PLC-)技.术_网
sbit a7=bbyte^7;WWW_P※LCJS_CO※M-PLC-技-.术_网
//========================================WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
bit IFACK; //record the SDA state to confirn if ACK has happened WW.W_PLCJS_COM-PLC-技.术_网
bit NO_ACK; //no ack flagWWW_PLCJS@_COM%-PLC-技.术_网
bit BUS_FAULT; //bus fault flagWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
//========================================WW.W_PLC※JS_C,OM-PL,C-技.术_网
//FUNCTION:ROUTES TO PROVIDE A START SIGNALWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
void start(void)WWW_P※LCJS_COM-PLC-)技.术_网
{WWW_PL※CJS_COM-PLC-技.术_网
SCL=0;SDA=1;SCL=1;SDA=0;SCL=0;P.L.C.技.术.网——可编程控制器技术门户
}——可——编——程——控-制-器-技——术——门——户
//=======================================——可——编——程——控-制-器-技——术——门——户
//FUNCTION:ROUTES TO PROVIDE A STOP SIGNAL——可——编——程——控-制-器-技——术——门——户
void stop(void)WW.W_PLCJS_COM-PLC-技.术_网
{WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
SCL=0;SDA=0;SCL=1;SDA=1;SCL=0;WWW_P※LCJS_CO※M-PLC-技-.术_网
}WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
//=====================================WWW_PLCJS@_COM%-PLC-技.术_网
//FUNCTION:ROUTES TO PROVIDE ACK SINGALWWW_P※LCJS_CO※M-PLC-技-.术_网
void ack(void)WWW_PLCJS_COM-PLC-技.术_网
{plcjs.技.术_网
SCL=0;SDA=0;SCL=1;SCL=0;——可——编——程——控-制-器-技——术——门——户
}WWW.PLCJS.COM——可编程控制器技术门户
//=====================================P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
//FUNCTION:ROUTES TO RELEASE THE SDA TO RECEIVE A ACK SIGNAL W1WW_P4LCJS_COM-PLC-技.术_网
// OR TO PROVIDE A NO_ACK SIGNALWWW_P※LCJS_CO※M-PLC-技-.术_网
//type=1等待应答信号WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
//type=0 产生无应答信号WWW_PLC※JS_COM-PmLC-技.术_网
void nack(uchar type)P.L.C.技.术.网——可编程控制器技术门户
{P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
SCL=0;SDA=1;SCL=1;IFACK=SDA; SCL=0;WWcW_PLCJS_COM-PLC-技.术_网
if(type)P.L.C.技.术.网——可编程控制器技术门户
{plcjs.技.术_网
if(IFACK)//如果无应答信号,则置标志位NO_ACK,程序中止WWW_PLC※JS_COM-PmLC-技.术_网
{ WWW_PLCJS@_COM%-PLC-技.术_网
NO_ACK=1;//用户可以加入自己的异常处理程序WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
//while(1);WWW.PLCJS.COM——可编程控制器技术门户
}P.L.C.技.术.网——可编程控制器技术门户
else NO_ACK=0;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
}WW.W_PLCJS_COM-PLC-技.术_网
}WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
//=======================================================WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
//FUNCTION:THE IIC DEVICE SHIFT OUT A BYTE TO THE MASTERWWW.PLCJS.COM——可编程控制器技术门户
uchar inbyte(void) {//从IIC器件中读出数据WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
SDA=1;——可——编——程——控-制-器-技——术——门——户
SCL=1;a7=SDA;SCL=0;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
SCL=1;a6=SDA;SCL=0;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
SCL=1;a5=SDA;SCL=0;WWcW_PLCJS_COM-PLC-技.术_网
SCL=1;a4=SDA;SCL=0;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
SCL=1;a3=SDA;SCL=0;WWW.PLCJS.COM——可编程控制器技术门户
SCL=1;a2=SDA;SCL=0;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
SCL=1;a1=SDA;SCL=0;WWcW_PLCJS_COM-PLC-技.术_网
SCL=1;a0=SDA;SCL=0;WWW_PLC※JS_COM-PmLC-技.术_网
return(bbyte);WWW_P※LCJS_CO※M-PLC-技-.术_网
}WW.W_PLCJS_COM-PLC-技.术_网
//=======================================================WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
//FUNCTION:THE IIC DEVICE SHIFT IN A BYTE FROM THE MASTER WWW_PLCJS@_COM%-PLC-技.术_网
void outbyte(uchar outdata) {//将数据写放IIC器件WWcW_PLCJS_COM-PLC-技.术_网
bbyte=outdata;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
SDA=a7;SCL=1;SCL=0;P.L.C.技.术.网——可编程控制器技术门户
SDA=a6;SCL=1;SCL=0;WW.W_PLC※JS_C,OM-PL,C-技.术_网
SDA=a5;SCL=1;SCL=0;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
SDA=a4;SCL=1;SCL=0;W1WW_P4LCJS_COM-PLC-技.术_网
SDA=a3;SCL=1;SCL=0;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
SDA=a2;SCL=1;SCL=0;plcjs.技.术_网
SDA=a1;SCL=1;SCL=0;P.L.C.技.术.网——可编程控制器技术门户
SDA=a0;SCL=1;SCL=0;WWW_P※LCJS_COM-PLC-)技.术_网
}WWW_P※LCJS_COM-PLC-)技.术_网
//======================================================WW.W_PLCJS_COM-PLC-技.术_网
//FUNCTION:BYTE WRITE. 'add' THE WRITE ADDRESS, 'wbyte' THE DATA WANT TO WRITEWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)