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

📄 calender.lst

📁 单片机C语言参考程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V3.96,  SN-83203013  CALENDER                                                 05/08/08  00:07:16  PAGE 1   


DOS C51 COMPILER V3.96, COMPILATION OF MODULE CALENDER
OBJECT MODULE PLACED IN CALENDER.OBJ
COMPILER INVOKED BY: D:\FLYTO\C51\COMPILER\BIN\C51.EXE CALENDER.C SMALL DEBUG OBJECTEXTEND SYMBOLS ROM(LARGE) NOCODE CON
                    -D AREGS OPTIMIZE(6,SPEED) 

stmt level    source

   1          //@@***********************************************************
   2          //-------------------------------------------------------------
   3          //
   4          // 文件名   :Calender.c
   5          // 描述     :日历时钟模块,用于不带时钟芯片的系统
   6          // 语言     :C
   7          // 作者     :Jean J. Labrosse
   8          // 修改     :李艳平  
   9          // 日期     :2002-05-17
  10          // 说明     :原来的程序用于UCII_RTOS中,现移植C51中
  11          //@@***********************************************************
  12          #define   SYS_CLOCK_EN  1
  13          #if       SYS_CLOCK_EN
  14          
  15          #include  "typedef.h"
*** ERROR 318 IN LINE 15 OF CALENDER.C: can't open file 'typedef.h'
  16          #include  "reg52.h"
  17          #include  "string.h"
  18          #include  "stdlib.h"
  19          #include  "Stdio.h"
  20          
  21          #define   FOSC                    22118400L
  22          #define   MACHINE_NUM             12            /*根据需要调整,如:W777E58=4*/
  23          #define   TICKS_PER_SEC           10            /* # of clock ticks to obtain 1 second               */
  24          
  25          #define   CLK_DATE_EN             1             /* Enable DATE (when 1)                               */  
  26          
  27          #define   ENTER_CRITICAL()        EA=1
  28          #define   EXIT_CRITICAL()         EA=0                         
  29          
  30          #if CLK_DATE_EN
  31          typedef struct clk_month 
  32          {         
  33              UCHAR  MonthDays;                /* Number of days in each month                                 */
*** ERROR 141 IN LINE 33 OF CALENDER.C: syntax error near 'UCHAR'
*** ERROR 129 IN LINE 33 OF CALENDER.C: missing ';' before 'MonthDays'
  34              char  *MonthName;                /* Name of the month                                            */
  35              UCHAR  MonthVal;                 /* Value used to compute day of the week                        */
  36          } CLK_MONTH;
  37          #endif
  38          
  39          static UCHAR   ClkTickCtr;           /* Counter used to keep track of system clock ticks             */
  40          
  41          static UCHAR   ClkHr;
  42          static UCHAR   ClkMin;
  43          static UCHAR   ClkSec;               /* Counters for local TIME 
  44                                               */
  45          #if    CLK_DATE_EN
  46          static UCHAR   ClkDay;               /* Counters for local DATE                                      */
  47          static UCHAR   ClkDOW;               /* Day of week (0 is Sunday)                                    */
  48          static UCHAR   ClkMonth;
  49          static UINT    ClkYear;
  50          #endif
  51          /*********************************************************************************************************
C51 COMPILER V3.96,  SN-83203013  CALENDER                                                 05/08/08  00:07:16  PAGE 2   

             -*
  52          *                                          FUNCTION PROTOTYPES
  53          **********************************************************************************************************
             -/       
  54          static  BOOL       ClkUpdateTime(void);
  55          
  56          #if     CLK_DATE_EN
  57          static  BOOL       ClkIsLeapYear(UINT year);
  58          static  void       ClkUpdateDate(void);
  59          static  void       ClkUpdateDOW(void);
  60          #endif
  61          
  62          void   Init_sys_timer(void);
  63          void   Sys_clk_init(void); 
  64          void   Sys_clk_task(void);
  65          
  66          void   Clk_format_time(UCHAR mode, char *s);
  67          void   Clk_set_time(UCHAR hr, UCHAR min, UCHAR sec);
  68          int    Cmp_now_time(UCHAR hr, UCHAR min, UCHAR sec);
  69          
  70          #if    CLK_DATE_EN
  71          void   Clk_format_date(UCHAR mode, char *s);
  72          void   Clk_set_date(UCHAR month, UCHAR day, UINT year);
  73          void   Clk_set_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
  74          int    Cmp_now_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
  75          #endif
  76          /*********************************************************************************************************
             -/
  77          
  78          
  79          #if CLK_DATE_EN
  80          static  char code *ClkDOWTbl[] = {          /* NAME FOR EACH DAY OF THE WEEK                              
             -  */
  81              "Sunday ",
  82              "Monday ",
  83              "Tuesday ",
  84              "Wednesday ",
  85              "Thursday ",
  86              "Friday ",
  87              "Saturday "
  88          };
  89          
  90          
  91          static CLK_MONTH code ClkMonthTbl[] = {    /* MONTHS TABLE                                                
             - */
  92              {0,  "",           0},             /* Invalid month                                                */
  93              {31, "January ",   6},             /* January                                                      */
  94              {28, "February ",  2},             /* February (note leap years are handled by code)               */
  95              {31, "March ",     2},             /* March                                                        */
  96              {30, "April ",     5},             /* April                                                        */
  97              {31, "May ",       0},             /* May                                                          */
  98              {30, "June ",      3},             /* June                                                         */
  99              {31, "July ",      5},             /* July                                                         */
 100              {31, "August ",    1},             /* August                                                       */
 101              {30, "September ", 4},             /* September                                                    */
 102              {31, "October ",   6},             /* October                                                      */
 103              {30, "November ",  2},             /* November                                                     */
 104              {31, "December ",  4}              /* December                                                     */
 105          };
 106          #endif  
 107          /*
 108          *********************************************************************************************************
C51 COMPILER V3.96,  SN-83203013  CALENDER                                                 05/08/08  00:07:16  PAGE 3   

 109          *                                        TIME-OF-DAY CLOCK TASK
 110          *
 111          * Description : This task is created by Sys_clk_init() and is responsible for updating the time and date.
 112          *               Sys_clk_task() executes every second.
 113          * Arguments   : None.
 114          * Returns     : None.
 115          * Notes       : CLK_DLY_TICKS must be set to produce 1 second delays.
 116          *********************************************************************************************************
 117          */
 118          void  Sys_clk_task (void)
 119          {
 120               if(++ClkTickCtr==TICKS_PER_SEC)   
 121                {
 122                   ClkTickCtr=0;
 123                                         
 124                   if (ClkUpdateTime() == TRUE)
 125                   {     
 126                    #if CLK_DATE_EN
 127                        ClkUpdateDate();                 /* And date if a new day (i.e. MM-DD-YY)       */
 128                    #endif
 129                   }
 130                }   
 131          }  
 132          
 133          //@@***********************************************************
 134          //
 135          //   功能:  系统时钟中断服务函数
 136          //   函数:  void Sys_tick_isr(void)
 137          //   语言:  C
 138          //   输入:  NONE
 139          //   输出:  NONE
 140          //   作者:  李艳平
 141          //   日期:  2002-05-17
 142          //
 143          //@@***********************************************************
 144          //-------------------------------------------------------------
 145          void Sys_tick_isr(void)  interrupt 5  using  3
 146          {
 147              TF2=0;
 148              Sys_clk_task();  
 149              
 150          }
 151          
 152          //@@***********************************************************
 153          //
 154          //   功能:  系统定时器初始化
 155          //   函数:  void Vtimer_init(void)
 156          //   语言:  C
 157          //   输入:  NONE
 158          //   输出:  NONE
 159          //   作者:  李艳平
 160          //   日期:  2002-05-17
 161          //
 162          //@@***********************************************************
 163          //-------------------------------------------------------------
 164          void Init_sys_timer(void)
 165          {
 166            BYTE_WORD Init_value; 
 167          
 168            
 169            Sys_clk_init();  
 170              
C51 COMPILER V3.96,  SN-83203013  CALENDER                                                 05/08/08  00:07:16  PAGE 4   

 171            T2CON=0x00;
 172            Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM); 
 173            TH2=RCAP2H=-Init_value.bytes.high;
 174            TL2=RCAP2L=-Init_value.bytes.low;
 175          
 176            ET2=1;
 177            TR2=1;  	
 178            
 179            //TMOD&=0xF0;			      //使用定时器0,但在中断中需要重新赋初值,因而我更倾向用Timer2
 180            //TMOD|=0x01;
 181            
 182           // Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM); 
 183            //TH0=-Init_value.bytes.high;
 184            //TL0=-Init_value.bytes.low;
 185          
 186            //ET0=1;
 187            //TR0=1;
 188          }
 189          
 190          /*
 191          *********************************************************************************************************
 192          *                                        TIME MODULE INITIALIZATION
 193          *                                     TIME-OF-DAY CLOCK INITIALIZATION
 194          *
 195          * Description : This function initializes the time module.  The time of day clock task will be created
 196          *               by this function.
 197          * Arguments   : None
 198          * Returns     : None.
 199          *********************************************************************************************************
 200          */

⌨️ 快捷键说明

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