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

📄 main.lst

📁 Watchdog software code, development environment KEIL, including the main program and "Weigou" subrou
💻 LST
字号:
C51 COMPILER V7.01  MAIN                                                                   06/13/2004 12:32:10 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //**********************************************************************
   2          //功能          : 软件看门狗程序
   3          //作者          : lihj
   4          //创建日期      : 2004-06-13
   5          //版本          : V1.0
   6          //修改记录      :
   7          //***********************************************************************
   8          #include "REG51.h"
   9          
  10          #ifndef TRUE
  11          #define TRUE            0
  12          #define FALSE           1
  13          #endif
  14          
  15          //系统宏定义
  16          #define XTAL            12000000                        //系统晶振
  17          #define TIME_BASE       10                                      //时间基准, 以1ms为单位
  18          #define WDT_TIME        50                                      //看门狗复位时间(50*TIME_BASE)
  19          
  20          //全局变量声明
  21          int  g_WDTCounter;                                              //10ms系统时钟基准
  22          unsigned int g_wTimerIniValue;                  //定时器初值
  23          
  24          //内部函数声明
  25          char TimerIni(char);                                    //初始化定时器函数
  26          void FeedDog(void);                                             //软件看门狗
  27          
  28          //外部函数声明
  29          extern void RESET(void);
  30          
  31          //主循环
  32          void main(void)
  33          {
  34   1              //初始化硬件资源
  35   1              //初始化定时器,初值计算
  36   1              g_wTimerIniValue = 65535 - ((XTAL/12)/1000)*TIME_BASE + 1;              
  37   1                                                                                      //初值=65536 - 定时时间长度
  38   1              TimerIni(0);                    //将定时器0初始化成10ms定时器
  39   1              
  40   1              //初始化全局变量
  41   1              g_WDTCounter = 0;                                       //清软件看门狗计数
  42   1      
  43   1              EA = 1;                                                         //总中断使能
  44   1      
  45   1              while(1)                                                        //主循环体
  46   1              {
  47   2                      //主循环体
  48   2                      //程序......
  49   2      
  50   2                      FeedDog();                                              //每一个周期去喂一次看门狗
  51   2              }
  52   1      }
  53                  
  54          //定时器初始化函数
  55          //参数说明      : n, 定时器序号
C51 COMPILER V7.01  MAIN                                                                   06/13/2004 12:32:10 PAGE 2   

  56          //                        ini, 定时器初值, 单位是1ms
  57          char TimerIni(char n)
  58          {
  59   1              if(n == 0)                                                      //使用定时器0
  60   1              {
  61   2                      TMOD = 0X01;                                    //定时器0工作方式1(16位定时器)
  62   2                      TH0 = g_wTimerIniValue >> 8;    //定时器赋初始值
  63   2                      TL0 = g_wTimerIniValue;
  64   2                      ET0 = 1;                                                //允许定时器中断
  65   2                      TR0 = 1;                                                //启动计数
  66   2              }               
  67   1              else if(n == 1)                                         //使用定时器1
  68   1              {
  69   2                      TMOD = 0x10;                                    //工作方式1
  70   2                      TH1 = g_wTimerIniValue >> 8;    //定时器赋初值
  71   2                      TL1 = g_wTimerIniValue;
  72   2                      ET1 = 1;                                                //允许定时器中断
  73   2                      TR1 = 1;                                                //启动计数
  74   2              }
  75   1              else
  76   1              {
  77   2                      return FALSE;
  78   2              }
  79   1      
  80   1              return TRUE;
  81   1      }
  82          
  83          //喂软件看门狗
  84          void FeedDog(void)
  85          {
  86   1                      g_WDTCounter = 0;                                       //清软件看门狗计数
  87   1      }
  88          
  89          //定时器0中断服务程序
  90          //interrupt关键字后的数字指向中断向量号
  91          //using关键字后的数字表示该中断函数使用第几组寄存器
  92          void Timer0Int(void) interrupt 1 using 1
  93          {
  94   1              TL0 += g_wTimerIniValue;
  95   1              TH0 += g_wTimerIniValue>>8;                             //恢复定时器初值
  96   1      
  97   1              g_WDTCounter ++;                                                //软件看门狗复位计数器累加
  98   1              if(g_WDTCounter >= WDT_TIME)
  99   1              {
 100   2                      RESET();                                                        //复位
 101   2              }
 102   1      }
 103          
 104          
 105                  
 106          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    131    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.01  MAIN                                                                   06/13/2004 12:32:10 PAGE 3   


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

⌨️ 快捷键说明

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