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

📄 timer0.lst

📁 本程序是一个RS232转网口的。是一个透明传输的模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   TIMER0                                                                09/26/2008 13:35:50 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TIMER0
OBJECT MODULE PLACED IN ..\OUT\Timer0.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\Source\Timer0.C BROWSE DEBUG OBJECTEXTEND PRINT(..\OUT\Timer0.lst) OBJEC
                    -T(..\OUT\Timer0.obj)

stmt level    source

   1          /*
   2          *****************************************************************************************************
   3          *
   4          *  File name: timer.c
   5          *****************************************************************************************************
   6          */
   7          
   8          #include "..\head\includes.h"
   9          
  10          
  11          
  12          data struct timer D10ms,D1s;
  13          unsigned char xdata ConnectNum;
  14          unsigned char xdata bConnect;
  15          unsigned int  xdata TimerSec[T_SEC_NUM];
  16          unsigned int  xdata TimerMil[T_MIL_NUM];
  17          
  18          
  19          
  20          /*
  21          *****************************************************************************************************
  22          * FUNC: 1ms中断一次 = 1000   32M晶振
  23          * NOTE: onecycle = 12/xtal=12/32=0.375   1000/0.375 = 2667  (65536-2667)/256=245 (65536-2667)%256=149
  24                  onecycle = 12/xtal=12/40=0.3   1000/0.3 = 3333  (65536-3333)/256=242 (65536-3333)%256=251
  25                          onecycle = 12/22.1184= 0.5425  1000/0.5425 = 1843.3179~=1844    =248                 =204  
  26          *****************************************************************************************************
  27          */ 
  28          
  29          #define   TIMEH1ms    248    //定时1MS  FOSC=22.1184M
  30          #define   TIMEL1ms    204
  31          
  32          
  33          void  timer0()  interrupt 1
  34          {
  35   1      
  36   1          if (TimerMil[T_FRAME_END]) {
  37   2              TimerMil[T_FRAME_END]--;
  38   2              }
  39   1      
  40   1              if (TimerMil[T_DELAY_NUM]) {
  41   2              TimerMil[T_DELAY_NUM]--;
  42   2              }
  43   1      
  44   1              D10ms.count--;
  45   1      
  46   1              if(0 == D10ms.count) {
  47   2                      D10ms.arrived=TRUE;
  48   2                      D10ms.count=10;
  49   2                      D1s.count--;
  50   2                      if(0 == D1s.count) {
  51   3                              D1s.count=100;
  52   3                              D1s.arrived=TRUE;
  53   3                      }
  54   2              }
C51 COMPILER V7.06   TIMER0                                                                09/26/2008 13:35:50 PAGE 2   

  55   1              
  56   1              TH0=TIMEH1ms;
  57   1              TL0=TIMEL1ms;
  58   1              TR0=1;
  59   1      }
  60          
  61          /*
  62          *****************************************************************************************************
  63          *FUNC:初始化定时器,设置波特率
  64          *NOTE:  
  65          *****************************************************************************************************
  66          */
  67          void Timer0Init(void)
  68          {
  69   1          unsigned char i;
  70   1      
  71   1              IE=0x00;
  72   1          ET0=1;          // timer0 interrupt enable
  73   1          ES=1;           // RS-232 interrupt enable
  74   1          EA=1;           // all interrupt enable
  75   1      
  76   1              TMOD=0x21;              //定时器1用于波特率发生器,定时器0用于定时
  77   1              TH0=TIMEH1ms;
  78   1              TL0=TIMEL1ms;
  79   1      
  80   1              D10ms.arrived=FALSE;
  81   1              D1s.arrived=FALSE;
  82   1          D1s.count=100;
  83   1              D10ms.count=10;
  84   1      
  85   1          for (i=0; i<T_MIL_NUM; i++) {
  86   2              TimerMil[i] = 0;
  87   2              }
  88   1          for (i=0; i<T_SEC_NUM; i++) {
  89   2              TimerSec[i] = 0;
  90   2              }
  91   1      
  92   1              TR0=1;         //启动定时器
  93   1      }
  94          
  95          /*
  96          *****************************************************************************************************
  97          *Func: 延时 
  98          *Note:
  99          *    1:  入参: 小时  分钟  秒   毫秒
 100          *    2:
 101          *****************************************************************************************************
 102          */
 103          void TimeDly(unsigned int ticks)
 104          {
 105   1          TimerMil[T_DELAY_NUM] = ticks;
 106   1              while(TimerMil[T_DELAY_NUM]) {             
 107   2                      ;
 108   2              }
 109   1      }
 110          
 111          unsigned char DelayHMSM(unsigned char hours,unsigned char minutes,\
 112          unsigned char seconds, unsigned int milli)
 113          {
 114   1          unsigned long xdata ticks;
 115   1          unsigned int xdata loops;
 116   1       
C51 COMPILER V7.06   TIMER0                                                                09/26/2008 13:35:50 PAGE 3   

 117   1      
 118   1          if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {
 119   2              if (minutes > 59) {
 120   3                  return FALSE;    
 121   3              }
 122   2              if (seconds > 59) {
 123   3                  return FALSE;
 124   3              }
 125   2              if (milli > 999) {
 126   3                  return FALSE;
 127   3              }
 128   2      
 129   2              ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * TICKS_PER_SEC
 130   2                    + TICKS_PER_SEC * ((INT32U)milli + 500L / TICKS_PER_SEC) / 1000L;
 131   2              loops = ticks / 65536L;                  
 132   2              ticks = ticks % 65536L;                  
 133   2              TimeDly(ticks);
 134   2              while (loops > 0) {
 135   3                  TimeDly(32768);
 136   3                  TimeDly(32768);
 137   3                  loops--;
 138   3              }
 139   2              return TRUE;
 140   2          } else {
 141   2              return FALSE;
 142   2          }
 143   1      }
 144          
 145          
 146          /*
 147          *****************************************************************************************************
 148          *FUNC:  
 149          *NOTE:  
 150              如果处于配置状态下,3分钟分强制退出
 151                  //WriteFlash(ConfigReg.bytes,FLASH_DATA_NUM);  //进入运行状态前把参数写入到FLASH
 152          *****************************************************************************************************
 153          */
 154          void Updata_Model_Statu(void)
 155          {
 156   1          if (ModelStatu == MODEL_RUN_STATU) {
 157   2              return;
 158   2              }
 159   1              if (TimerSec[T_EXIT_CONFIG]) {
 160   2              TimerSec[T_EXIT_CONFIG]--;
 161   2              } else {
 162   2                      ModelStatu = MODEL_RUN_STATU;
 163   2              NetConfigInit();              //强制退出参数以原来的为主,当前没保存的数据放弃!
 164   2                      HintMsg(4,NULL);
 165   2              }
 166   1      }
 167          
 168          
 169          /*
 170          *****************************************************************************************************
 171          *FUNC:  
 172          *NOTE:  
 173              客户端连接,如果连上以后等待发送心跳包
 174                          //InitPingTable();                              //如果还没连上的时候,PING不成功会被清掉
 175          *****************************************************************************************************
 176          */
 177          void Client_Connect(void)
 178          {

⌨️ 快捷键说明

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