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

📄 wnl.lst

📁 51单片机做的万年历
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   WNL                                                                   05/22/2007 10:32:24 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE WNL
OBJECT MODULE PLACED IN wnl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wnl.c BROWSE DEBUG OBJECTEXTEND TABS(2)

line level    source

   1          #include <REGX51.H>
   2          
   3          #include "display.h"
   4          #include "1602.h"
   5          #include "wnl.h"
*** ERROR C141 IN LINE 13 OF WNL.H: syntax error near 'mode', expected ')'
*** ERROR C141 IN LINE 14 OF WNL.H: syntax error near 'hr', expected ')'
*** ERROR C141 IN LINE 19 OF WNL.H: syntax error near 'year', expected ')'
*** ERROR C141 IN LINE 21 OF WNL.H: syntax error near 'hr', expected ')'
*** ERROR C129 IN LINE 23 OF WNL.H: missing ';' before 'ClkUpdateTime'
   6          #include "delay.h"
   7          #include "type.h"
   8          #include "interupt.h"    
   9          
  10          extern  uchar mode;
  11          
  12          uchar  ClkTickCtr;           // 系统时钟计数器 
  13          uchar  ClkHr;                //小时计数器
  14          uchar  ClkMin;               //分钟计数器
  15          uchar  ClkSec;               //秒计数器 
  16                                               
  17          
  18          uchar  ClkDay;               //日期计数器                 
  19          uchar  ClkMonth;             //月份计数器
  20          uchar  ClkYear;              //年份计数器
  21          uchar  ClkDOW;               //星期计数器 
  22          
  23          uchar  Naozhong_Hr;          //闹钟的小时
  24          uchar  Naozhong_Min;         //闹钟的分钟
  25          
  26          #define  TICKS_PER_SEC  100            //每秒钟的节拍数,因为定计0溢出时间为10Ms,所以节拍为100  
  27          
  28          typedef struct clk_month 
  29          {         
  30              char   MonthDays;                // 每个月有多少天                             
  31              UCHAR  MonthVal;                // 用来计算每月开始星期的参数                                         
             -               
  32          } CLK_MONTH;
  33          
  34          static CLK_MONTH code ClkMonthTbl[] =  // 天数、月份名、
  35          {   
  36              {0 , 0},
  37              {31, 6},             // 一月                                                      
  38              {28, 2},             // 二月                
  39              {31, 2},             // 三月                                                        
  40              {30, 5},             // 四月                                                       
  41              {31, 0},             // 五月                                                         
  42              {30, 3},             // 六月                                                         
  43              {31, 5},             // 七月                                                         
  44              {31, 1},             // 八月                                                       
  45              {30, 4},             // 九月                                                    
  46              {31, 6},             // 十月                                                      
  47              {30, 2},             // 十一月                                                     
  48              {31, 4}              // 十二月    
  49          };
C51 COMPILER V8.08   WNL                                                                   05/22/2007 10:32:24 PAGE 2   

  50          
  51          static  char code *ClkDOWTbl[] = {          //星期                             
  52              "Sun ",
  53              "Mon ",
  54              "Tue ",
  55              "Wed ",
  56              "Thu ",
  57              "Fri ",
  58              "Sat "
  59          };
  60          
  61          
  62          
  63          
  64          
  65          void  Sys_clk_task (void)                           //时钟任务
  66          {               
  67               if(++ClkTickCtr==TICKS_PER_SEC)                //每秒检查
  68                {
  69                   ClkTickCtr=0;
  70                   //(P3_4) = !(P3_4);   
  71                   if (ClkUpdateTime() == TRUE)               //检查时间变化
  72                   {      
  73                    ClkUpdateDate();                          //检查日期变化   
  74                   }   
  75                }
  76                    
  77          }  
  78          
  79          
  80          //@@***********************************************************
  81          //
  82          //   功能:  系统时钟中断服务函数
  83          //   函数:  void Sys_tick_isr(void)
  84          //   语言:  C
  85          //
  86          //@@***********************************************************
  87          //-------------------------------------------------------------
  88          void Sys_tick_isr(void)  interrupt 1  using  3     //定计0中断服务程序,使用第三组寄存器
  89          {
  90              TH0 = 0xD8 ;                                   //TH0 TL0 要实现10ms的计时
  91              TL0 = 0xF0 ; 
  92              Sys_clk_task();  
  93          }
  94          
  95          //@@***********************************************************
  96          //
  97          //   功能:  系统定时器初始化
  98          //   函数:  void Vtimer_init(void)
  99          //   语言:  C
 100          //@@***********************************************************
 101          //-------------------------------------------------------------
 102          void Init_sys_timer(void)
 103          {  
 104            Sys_clk_init();    
 105            TCON=0x05;            //外部中断下降沿触发,响应外部和定计溢出中断后硬件置1,CPU响应后硬件清0
 106                                  //TCON定时器/计数器控制寄存器
 107                                  //D7   D6   D5   D4   D3   D2   D1   D0 
 108                                  //TF1       TF0       IE1  IT1  IE0  IT0                        
 109                
 110            TMOD&=0xF0;           //清定时器0的工作方式
 111                                  //TMOD定时器/计数器的方式控制寄存器
C51 COMPILER V8.08   WNL                                                                   05/22/2007 10:32:24 PAGE 3   

 112                                  //D7   D6   D5   D4   D3   D2   D1   D0 
 113                                  //GATE C/T  M1   M0 | GATE C/T  M1   M0
 114                                  //----T/C 1---------|-------T/C 0------//
 115            
 116            TMOD|=0x01;           //工作方式为十六位定计器,需要重装载
 117            
 118            TH0 = 0xD8 ;                                   //TH0 TL0 要实现100ms的计时
 119            TL0 = 0xF0 ;
 120          
 121            EA=1;                 //全局中断开
 122            EX0=1;                //外部中断0开
 123            EX1=1;                //外部中断1开
 124            ET0=1;                //定计0允许中断
 125            TR0=1;                //启动定计0开始定时
 126            
 127          }
 128          
 129          
 130          void  Sys_clk_init (void)        //系统时钟、日期初始化
 131          {
 132              ClkTickCtr = 0;
 133              Clk_set_time(14,50,0);
 134              Clk_set_date(7,5,18);
 135              Clk_set_naozhong(7,30);      
 136          }
 137          
 138          
 139          
 140          void Clk_format_date (void)      //日期格式检查子程序
 141          {
 142              uchar  year = ClkYear;       
 143              
 144              real_date[0] = year /  10 + '0';
 145              real_date[1] = year %  10 + '0';
 146              real_date[2] = '-';
 147              real_date[3] = ClkMonth / 10 + '0';        // Convert DATE to ASCII                              
 148              real_date[4] = ClkMonth % 10 + '0';
 149              real_date[5] = '-';
 150              real_date[6] = ClkDay   / 10 + '0';
 151              real_date[7] = ClkDay   % 10 + '0';
 152          }
 153          
 154          
 155          void Clk_format_time (uchar mode)             //时间格式检查子程序
 156          {
 157              UCHAR hr;
 158              switch (mode)
 159              {
 160                case 0:                                 // 24小时制显示 
 161                       real_time[0] = ClkHr  / 10 + '0';                                       
 162                       real_time[1] = ClkHr  % 10 + '0';

⌨️ 快捷键说明

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