⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic.lst

📁 PCF8563的驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 147   1              SDA = 0;
 148   1              NOP();
 149   1              SCL = 1;
 150   1              NOP();
 151   1              SCL = 0;
 152   1              }
 153          /*******************************************************************************
 154          *** 函 数 名: static void       IIC_SendNoAck(void)
 155          *** 功能描述: 发送非应答信号;
 156          *** 全局变量: NO !
 157          *** 输          入: NO !
 158          *** 输          出: NO !
 159          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 160          *** 修 改 人:                                                                          日期:2006-11-28
 161          *** 函数说明: 操作完成后保证SCL为0;
 162          /******************************************************************************/
 163          static void     IIC_SendNoAck(void)
 164          {
 165   1              SDA = 1;
 166   1              NOP();
 167   1              SCL = 1;
 168   1              NOP();
 169   1              SCL = 0;
 170   1              }
 171          /*******************************************************************************
 172          *** 函 数 名: static void       IIC_Stop(void)
 173          *** 功能描述: 终止IIC传输;
 174          *** 全局变量: NO !
 175          *** 输          入: NO !
 176          *** 输          出: NO !
 177          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 178          *** 修 改 人:                                                                          日期:2006-11-28
 179          *** 函数说明: 操作完成后保证SCL为1,同时打开中断;
C51 COMPILER V7.50   IIC                                                                   12/01/2007 19:19:59 PAGE 4   

 180          /******************************************************************************/
 181          static void IIC_Stop(void)
 182          {
 183   1              SDA = 0;                //to stop IIC;
 184   1              SCL = 0;
 185   1              NOP();
 186   1              SCL = 1;
 187   1              NOP();
 188   1              SDA = 1;                //IIC Stoped !! 结束IIC之后传输线全部置1;
 189   1              EA = 1;                 //Set EA.
 190   1              }
 191          /*******************************************************************************
 192          *** 函 数 名: extern void PCF8583_ReadDat(int8u addrInter,int8u num,int8u *buff)
 193          *** 功能描述: 对PCF8583读;
 194          *** 全局变量: NO !
 195          *** 输          入: addrInter:内部寻址;num:数据长度;buff:数据缓存;
 196          *** 输          出: buff数据缓存;
 197          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 198          *** 修 改 人:                                                                          日期:2006-11-28
 199          *** 函数说明: IIC Start至Stop间传输的字节数不限;
 200                                                                  PCF8583内部寄存器地址附自增功能;
 201          /******************************************************************************/
 202          extern void PCF8583_ReadDat(int8u addrInter,int8u num,int8u *buff)
 203          {
 204   1              int8u i;
 205   1              IIC_Start();                    //启动IIC Bus;
 206   1              IIC_TxByte(0xa0);       //PCF8583设备寻址;命令:写;
 207   1              IIC_WaitAck();          //等待Ack信号;
 208   1              IIC_TxByte(addrInter);  //发送内部寄存器地址;
 209   1              IIC_WaitAck();                                  //等待Ack信号;
 210   1              
 211   1              IIC_Start();                    //参考PCF读Read Mode时序;
 212   1              IIC_TxByte(0xa1);       //PCF8583设备寻址,命令:读;
 213   1              IIC_WaitAck();
 214   1              
 215   1              for(i=0;i<num-1;i++)
 216   1              {
 217   2                      buff[i] = IIC_RxByte(); //读一个字节;
 218   2                      IIC_SendAck();                                  //发送应答信号;
 219   2                      }
 220   1              buff[num-1]     = IIC_RxByte();
 221   1              IIC_SendNoAck();                                        //最后一个字节发送非应答信号;
 222   1              IIC_Stop();             //终止本次传输,IIC Bus空闲;
 223   1              }
 224          /*******************************************************************************
 225          *** 函 数 名: extern void PCF8583_WriteDat(int8u addrInter,int8u num,int8u *buff)
 226          *** 功能描述: 对PCF8583写;
 227          *** 全局变量: NO !
 228          *** 输          入: addrInter:内部寻址;num:数据长度;buff:数据缓存;
 229          *** 输          出: NO !
 230          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 231          *** 修 改 人:                                                                          日期:2006-11-28
 232          *** 函数说明: IIC Start至Stop间传输的字节数不限;
 233                                                                  PCF8583内部寄存器地址附自增功能;
 234          /******************************************************************************/
 235          extern void PCF8583_WriteDat(int8u addrInter,int8u num,int8u *buff)
 236          {
 237   1              int8u i;
 238   1              
 239   1              IIC_Start();
 240   1              IIC_TxByte(0xa0);
 241   1              IIC_WaitAck();
C51 COMPILER V7.50   IIC                                                                   12/01/2007 19:19:59 PAGE 5   

 242   1              
 243   1              IIC_TxByte(addrInter);
 244   1              IIC_WaitAck();
 245   1              
 246   1              for(i=0;i<num;i++)
 247   1              {
 248   2                      IIC_TxByte(buff[i]);
 249   2                      IIC_WaitAck();
 250   2                      }
 251   1              
 252   1              IIC_Stop();
 253   1              }
 254          /*******************************************************************************
 255          *** 函 数 名: extern void PCF8583_WriteByte(int8u addrInter,int8u val)
 256          *** 功能描述: 对PCF8583写一个字节;
 257          *** 全局变量: NO !
 258          *** 输          入: addrInter:内部寻址;val:待写字节数据;
 259          *** 输          出: NO !
 260          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 261          *** 修 改 人:                                                                          日期:2006-11-28
 262          *** 函数说明: 参照PCF8583读时序;
 263          /******************************************************************************/
 264          extern void PCF8583_WriteByte(int8u addrInter,int8u val)
 265          {
 266   1              IIC_Start();
 267   1              
 268   1              IIC_TxByte(0xa0);
 269   1              IIC_WaitAck();
 270   1              
 271   1              IIC_TxByte(addrInter);
 272   1              IIC_WaitAck();
 273   1              IIC_TxByte(val);
 274   1              IIC_WaitAck();
 275   1        
 276   1              IIC_Stop();
 277   1              }
 278          
 279          extern void PCF8583_Init(void)
 280          {
 281   1              PCF8583_WriteByte(0x00,0x00);           //Control reg. Alarm disabled。
 282   1      }
 283          
 284          /*******************************************************************************
 285          ****                              End Of File
 286          *******************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    332    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -