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

📄 testtime.lst

📁 这是我测试pcf8563的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 211   1      }
 212          /*******************************************************************
 213                              (8)向无子地址器件读字节数据函数
 214          函数原型: bit  IRcvByte(uchar sla,ucahr *c);
 215          功能:     从启动总线到发送地址,读数据,结束总线的全过程,从器件地
 216                    址sla,返回值在c.
 217                     如果返回1表示操作成功,否则操作有误。
 218          注意:    使用前必须已结束总线。
 219          ********************************************************************/
 220          bit IRcvByte(uchar sla,uchar *c)
 221          {
 222   1         Start_I2c();                //启动总线
 223   1         SendByte(sla+1);           //发送器件地址
 224   1           if(ack==0)return(0);
 225   1         *c=RcvByte();               //读取数据
 226   1           Ack_I2c(1);               //发送非就答位
 227   1        Stop_I2c();                  //结束总线
 228   1        return(1);
 229   1      }
 230          /*******************************************************************
 231                              (9)向有子地址器件读取多字节数据函数
 232          函数原型: bit  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);
 233          功能:     从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
 234                    地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
 235                     如果返回1表示操作成功,否则操作有误。
 236          注意:    使用前必须已结束总线。
 237          ********************************************************************/
 238          bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no)
 239          {
 240   1         uchar i;
 241   1      
C51 COMPILER V8.08   TESTTIME                                                              11/27/2008 22:32:57 PAGE 5   

 242   1         Start_I2c();               //启动总线
 243   1         SendByte(sla);            //发送器件地址
 244   1           if(ack==0)return(0);
 245   1         SendByte(suba);            //发送器件子地址
 246   1           if(ack==0)return(0);
 247   1         Start_I2c();
 248   1         SendByte(sla+1);
 249   1            if(ack==0)return(0);
 250   1         for(i=0;i<no-1;i++)
 251   1          {
 252   2           *s=RcvByte();               //发送数据
 253   2            Ack_I2c(0);                //发送就答位
 254   2           s++;
 255   2          }
 256   1         *s=RcvByte();
 257   1          Ack_I2c(1);                 //发送非应位
 258   1       Stop_I2c();                    //结束总线
 259   1        return(1);
 260   1      }
 261          
 262          /*******************************************************************
 263                              向有子地址器件发送字节数据函数
 264          函数原型: bit  ISendByte(uchar sla,uchar suba,uchar c);
 265          功能:     从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla,
 266                    子地址suba,如果返回1表示操作成功,否则操作有误。
 267          注意:    使用前必须已结束总线。
 268          ********************************************************************/
 269          bit ISendByte3(uchar sla,uchar suba,uchar c)
 270          {
 271   1         Start_I2c();               /*启动总线*/
 272   1         SendByte(sla);            /*发送器件地址*/
 273   1           if(ack==0)return(0);
 274   1        SendByte(suba);            /*发送器件地址*/
 275   1           if(ack==0)return(0);
 276   1         SendByte(c);               /*发送数据*/
 277   1           if(ack==0)return(0);
 278   1        Stop_I2c();                 /*结束总线*/
 279   1        return(1);
 280   1      }
 281          
 282          /*******************************************************************
 283                              向有子地址器件读字节数据函数
 284          函数原型: bit  IRcvByte(uchar sla,ucahr *c);
 285          功能:     从启动总线到发送地址,读数据,结束总线的全过程,从器件地
 286                    址sla,返回值在c.
 287                     如果返回1表示操作成功,否则操作有误。
 288          注意:    使用前必须已结束总线。
 289          ********************************************************************/
 290          uchar IRcvByte2(uchar sla,uchar suba)
 291          {
 292   1      uchar c;
 293   1         Start_I2c();                /*启动总线*/
 294   1         SendByte(sla);           /*发送器件地址*/
 295   1           if(ack==0)return(0);
 296   1         SendByte(suba);           /*发送子器件地址*/
 297   1           if(ack==0)return(0);
 298   1      
 299   1        Start_I2c();
 300   1      
 301   1       SendByte(sla+1);           /*发读器件地址*/
 302   1           if(ack==0)return(0);
 303   1         c=RcvByte();               /*读取数据*/
C51 COMPILER V8.08   TESTTIME                                                              11/27/2008 22:32:57 PAGE 6   

 304   1           Ack_I2c(1);               /*发送非就答位*/
 305   1        Stop_I2c();                  /*结束总线*/
 306   1        return c;
 307   1      }
 308          
 309          void main()
 310          {
 311   1              
 312   1               uchar min1,hour1,day1,mon1,year1;
 313   1              uchar min10,hour10,day10,mon10,year10;
 314   1               ISendByte3(0xa2,0x00,0x00);
 315   1               ISendByte3(0xa2,0x03,CP8563_Store[0]);//分
 316   1               ISendByte3(0xa2,0x04,CP8563_Store[1]);//时
 317   1               ISendByte3(0xa2,0x05,CP8563_Store[2]);//日
 318   1               ISendByte3(0xa2,0x07,CP8563_Store[3]);//月
 319   1               ISendByte3(0xa2,0x08,CP8563_Store[4]);//年
 320   1              while(1) 
 321   1               {
 322   2                P8563_Store[0]=IRcvByte2(0xa2, 0x03);
 323   2                P8563_Store[1]=IRcvByte2(0xa2, 0x04);
 324   2                P8563_Store[2]=IRcvByte2(0xa2, 0x05);
 325   2                P8563_Store[3]=IRcvByte2(0xa2, 0x07);
 326   2                P8563_Store[4]=IRcvByte2(0xa2, 0x08);
 327   2               
 328   2        
 329   2              
 330   2              min1=P8563_Store[0]&0x0f;
 331   2              min10=P8563_Store[0]>>4&0x07;
 332   2              hour1=P8563_Store[1]&0x0f;
 333   2              hour10=P8563_Store[1]>>4&0x07; 
 334   2              day1=P8563_Store[2]&0x0f;
 335   2              day10=P8563_Store[2]>>4&0x03;
 336   2              mon1=P8563_Store[3]&0x0f;
 337   2              mon10=P8563_Store[3]>>4&0x01;
 338   2              year1=P8563_Store[4]&0x0f;
 339   2              year10=P8563_Store[4]>>4&0x0f;
 340   2          }
 341   1      }
C51 COMPILER V8.08   TESTTIME                                                              11/27/2008 22:32:57 PAGE 7   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
_IRcvByte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
_ISendStr. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0006H  1
  suba . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  s. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0001H  3
  no . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
P8563_Store. . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  5
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
_ISendByte3. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     000FH  -----
  sla. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  suba . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
_SendByte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0005H  -----
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  BitCnt . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  min1 . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  hour1. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  day1 . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
  mon1 . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0003H  1
  year1. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0004H  1
  min10. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  hour10 . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0006H  1
  day10. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0007H  1
  mon10. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0008H  1
  year10 . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0009H  1
ack. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
_IRcvStr . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0004H  1
  suba . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  s. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0001H  3
  no . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
_IRcvByte2 . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0003H  -----
  sla. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
  suba . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
RcvByte. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  retc . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  BitCnt . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
Ack_I2c. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0009H  -----
  a. . . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
Start_I2c. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SDA. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A1H  1
CP8563_Store . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  5
SCL. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A0H  1
Stop_I2c . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
C51 COMPILER V8.08   TESTTIME                                                              11/27/2008 22:32:57 PAGE 8   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
_ISendByte . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    585    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      22
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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