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

📄 iic.lst

📁 proteus 的51实验板 .
💻 LST
📖 第 1 页 / 共 2 页
字号:
 153          *** 函数说明: 操作完成后保证SCL为0;
 154          /******************************************************************************/
 155           void   IIC_SendAck(void)
 156          {
 157   1              SDA = 0;
 158   1              _nop_();
 159   1              SCL = 1;
 160   1              _nop_();
 161   1              SCL = 0;
 162   1              }
 163          /*******************************************************************************
 164          *** 函 数 名: static void       IIC_SendNoAck(void)
 165          *** 功能描述: 发送非应答信号;
 166          *** 全局变量: NO !
 167          *** 输          入: NO !
 168          *** 输          出: NO !
 169          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 170          *** 修 改 人:                                                                          日期:2006-11-28
 171          *** 函数说明: 操作完成后保证SCL为0;
 172          /******************************************************************************/
 173           void   IIC_SendNoAck(void)
 174          {
 175   1              SDA = 1;
 176   1              _nop_();
 177   1              SCL = 1;
 178   1              _nop_();
 179   1              SCL = 0;
C51 COMPILER V8.08   IIC                                                                   01/23/2008 15:09:59 PAGE 4   

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    322    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.08   IIC                                                                   01/23/2008 15:09:59 PAGE 6   

   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 + -