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

📄 pcf8563lib.lst

📁 基于AT89S52控制芯片的电子万年历程序
💻 LST
字号:
C51 COMPILER V7.50   PCF8563LIB                                                            03/19/2009 16:09:25 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PCF8563LIB
OBJECT MODULE PLACED IN PCF8563lib.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PCF8563lib.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "PCF8563lib.h"
*** WARNING C318 IN LINE 6 OF PCF8563lib.h: can't open file 'IIClib.h'
   2          
   3          void PCF8563_Delay(uint n)
   4          {
   5   1          uint i;
   6   1          for(i=0;i<n;i++);
   7   1      }
   8          
   9          void PCF8563_SetCS(struct c_s cs)                    /*设置控制/状态子函数*/
  10          {
  11   1          IICWrite(0xa2,0,(uchar*)&cs,sizeof(struct c_s));  /*指针转换*/
*** WARNING C206 IN LINE 11 OF PCF8563LIB.C: 'IICWrite': missing function-prototype
*** ERROR C267 IN LINE 11 OF PCF8563LIB.C: 'IICWrite': requires ANSI-style prototype
  12   1          PCF8563_Delay(100);
  13   1      }
  14          
  15          void PCF8563_ReadCS(struct c_s* cs)                  /*读控制/状态字*/
  16          {
  17   1          IICRead(0xa2,0,(uchar*)cs,sizeof(struct c_s));
  18   1      }
  19          
  20          void PCF8563_ReadTime(struct time* tm)                /*读时间函数*/
  21          {
  22   1          IICRead(0xa2,2,(uchar*)tm,sizeof(struct time));
  23   1          tm->seconds &= 0x7f;                                /*屏蔽无关位*/
  24   1          tm->minutes &= 0x7f;
  25   1          tm->hours &= 0x3f;
  26   1          tm->days &= 0x3f;
  27   1          tm->weekdays &= 0x07;
  28   1          tm->mon_cen &= 0x1f;
  29   1      }
  30          
  31          bit PCF8563_SetTime(struct time tm)                    /*设定时间函数*/
  32          {
  33   1          tm.seconds = (tm.seconds%10) | ((tm.seconds/10)<<4);  /*HEX到BCD*/
  34   1          tm.minutes = (tm.minutes%10) | ((tm.minutes/10)<<4);
  35   1          tm.hours = (tm.hours%10) | ((tm.hours/10)<<4);
  36   1          tm.days = (tm.days%10) | ((tm.days/10)<<4);
  37   1          tm.weekdays = tm.weekdays;
  38   1          tm.mon_cen = (tm.mon_cen%10) | ((tm.mon_cen/10)<<4);
  39   1          tm.years = (tm.years%10) | ((tm.years/10)<<4);
  40   1          
  41   1          IICWrite(0xa2,2,(uchar*)&tm,sizeof(struct time));
  42   1          PCF8563_Delay(100);
  43   1          return 0;
  44   1          
  45   1      }
  46          
  47          void PCF8563_ReadAlarm(struct alarm* alm)               /*读闹钟函数*/
  48          {
  49   1          IICRead(0xa2,9,&alm->minute,1);
  50   1          IICRead(0xa2,10,&alm->hour,1);
  51   1          IICRead(0xa2,11,&alm->day,1);
  52   1          IICRead(0xa2,12,&alm->weekday,1);
C51 COMPILER V7.50   PCF8563LIB                                                            03/19/2009 16:09:25 PAGE 2   

  53   1          
  54   1          alm->minute &= 0x7f;                                  /*屏蔽无关位*/
  55   1          alm->hour &= 0x3f; 
  56   1          alm->day &= 0x3f; 
  57   1          alm->weekday &= 0x07; 
  58   1          
  59   1      }
  60          
  61          bit PCF8563_SetAlarm(struct alarm alm,bit min,bit hou,bit day,bit wee)
  62                                                                    /*设定闹钟函数*/
  63          {
  64   1          if(min){                                              /*如果需要使能分钟报警*/
  65   2            alm.minute = (alm.minute%10) | ((alm.minute/10)<<4);
  66   2            alm.minute = alm.minute & 0x7f;   
  67   2      }else{
  68   2            alm.minute = alm.minute | 0x80;
  69   2      }
  70   1          if(hou){                                              /*如果需要使能小时报警*/
  71   2            alm.hour = (alm.hour % 10) | ((alm.hour/10)<<4);
  72   2            alm.hour = alm.hour & 0x7f;
  73   2      }else{
  74   2            alm.hour = alm.hour | 0x80;
  75   2      }
  76   1          if(day){                                              /*如果需要使能天报警*/
  77   2            alm.day = (alm.day % 10) | ((alm.day/10)<<4);
  78   2            alm.day = alm.day & 0x7f;
  79   2      }else{
  80   2            alm.day = alm.day | 0x80;
  81   2      }
  82   1          if(wee){                                              /*如果需要使能星期报警*/
  83   2            alm.weekday = (alm.weekday % 10) | ((alm.weekday/10)<<4);
  84   2            alm.weekday = alm.weekday & 0x7f;
  85   2      }else{
  86   2            alm.weekday = alm.weekday | 0x80;
  87   2      }
  88   1        IICWrite(0xa2,9,(uchar*)&alm,sizeof(struct alarm));       /*指针转换*/
  89   1        PCF8563_Delay(100);
  90   1        return 0;
  91   1      }
  92          
  93          void PCF8563_StartTimer(char freq)                           /*启动定时器*/   
  94          {
  95   1          uchar cmd;
  96   1          switch(freq)
  97   1          {
  98   2          case 0:cmd = 0x80;break;
  99   2          case 1:cmd = 0x81;break;
 100   2          case 2:cmd = 0x82;break;
 101   2          case 3:cmd = 0x83;break;
 102   2          default:cmd = 0x82;break;
 103   2          }
 104   1          
 105   1          IICWrite(0xa2,14,&cmd,1);
 106   1      }  
 107          void PCF8563_StopTimer(void)                                /*启动定时器*/
 108          {
 109   1          uchar cmd;
 110   1          IICRead(0xa2,14,&cmd,1);
 111   1          cmd & = 0x7f;
 112   1          IICWrite(0xa2,14,&cmd,1);
 113   1      }       
 114          void PCF8563_SetTimerCount(uchar count)                     /*设置定时器初值*/
C51 COMPILER V7.50   PCF8563LIB                                                            03/19/2009 16:09:25 PAGE 3   

 115          {
 116   1          IICWrite(0xa2,15,&count,1);
 117   1      }                               

C51 COMPILATION COMPLETE.  2 WARNING(S),  1 ERROR(S)

⌨️ 快捷键说明

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