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

📄 init_comm.lst

📁 液晶屏显示程序
💻 LST
字号:
C51 COMPILER V7.06   INIT_COMM                                                             02/05/2005 09:08:14 PAGE 1   


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

stmt level    source

   1          #include        <reg52.h>
   2          #include        <ctype.h>
   3          #include        <stdlib.h>
   4          #include        <stdio.h>
   5          #include        <math.h>
   6          #include    <intrins.h>
   7          #include    "define.h"
   8          //#include    "val.h"
   9          #include    "function.h"
  10          //unsigned char ram_wr24c02;
  11          //unsigned char pt_write_24c02;
  12          #define   TRRE_GAP_MAX   5
  13           
  14          bit second_bit;
  15          bit sec_bit,bReceOK;
  16          unsigned char dms1,dms10,dms100,sec,key_dms10,comm_time;
  17          unsigned char wel_time;
  18          //unsigned char ram_373;
  19          unsigned char idata cReceBuffer[30],cSendBuffer[30];
  20          unsigned char cSendLen,cReceLen,cSendPosi,cReceTimeOut;
  21          
  22          extern unsigned char upDataTime,cReceLen;
  23          unsigned char rece_gap_time,speed_time;
  24          unsigned char rece_pt;  
  25          
  26          /**************************************************/
  27          //   系统进行初始化程序
  28          /**************************************************/
  29          //------------------------------------------------
  30          //   对定时器0进行初始化
  31          //------------------------------------------------
  32          void init_t0(void)
  33          {
  34   1              TH0=0xf8;
  35   1              TL0=0x2f;
  36   1              ET0=1;
  37   1              TR0=1;
  38   1      }
  39          
  40          //------------------------------------------------
  41          //     串口进行初始化
  42          //------------------------------------------------
  43          void init_com(void)
  44          {
  45   1              SCON=0x40;      //  mode 1 tx/re
  46   1              PCON=0x80;      //  smod=0 fosc
  47   1              TMOD=0x21;      //  t0 16b/count  t1 auto load
  48   1              TH1=0xfa;       // 19.2 kbit/s   1.2kbyte/s
  49   1              TL1=0xfa;
  50   1              RI=0;
  51   1              TI=0;
  52   1              REN=1;          // enable ren
  53   1              TR1=1;          // enable time1 count
  54   1              ES=1;
  55   1      }
C51 COMPILER V7.06   INIT_COMM                                                             02/05/2005 09:08:14 PAGE 2   

  56          
  57          //------------------------------------------------
  58          //     对存储的数据进行初始化
  59          //------------------------------------------------
  60          /*void init_setup(void)
  61          {
  62              EA=0;
  63              Read24c02(ram_wr24c02,0,5);
  64              EA=1;
  65          }
  66          
  67          void init_24c02(void)
  68          {
  69              EA=0;
  70              // 读取  24C02  的读写指针
  71          //    Read24c02(&pt_write_24c02,PT_WRITE24C02_ADDRESS,1);
  72              EA=1;
  73          
  74          }*/
  75          
  76          //------------------------------------------------
  77          //     对液晶显示屏进行初始化,并进行时间的延迟,保证外部信号的有效性
  78          //------------------------------------------------
  79          void init_lcd(void)
  80          {
  81   1          unsigned char i;
  82   1          GROUND_LED=0;         //   背景灯亮
  83   1          STATUS_LED=1;         //   错误状态灯灭
  84   1          BUZZER=1;
  85   1          for(i=0;i<8;i=i+2) {
  86   2              display_l_black(i,0,64);
  87   2              display_r_black(i,0,64);
  88   2              }
  89   1      }
  90          /**************************************************/
  91          //    初始化程序结束
  92          /**************************************************/
  93          
  94          
  95          
  96          void init_sub(void)
  97          {
  98   1           init_com();
  99   1           init_lcd();
 100   1           init_t0();
 101   1      //     init_24c02();
 102   1           open_display();
 103   1      }
 104          //---------------------
 105          void time_add(void)
 106          {
 107   1           second_bit=0;
 108   1           sec_bit=1;
 109   1           wel_time++;
 110   1      
 111   1      
 112   1      }
 113          
 114          
 115          void t0_int(void) interrupt 1  // using 0
 116          {
 117   1      //      TH0=0xfc;               //
C51 COMPILER V7.06   INIT_COMM                                                             02/05/2005 09:08:14 PAGE 3   

 118   1      //      TL0=0x18;               // 
 119   1              TH0=0xf8;               // 定时器中断中需要的数据初始化
 120   1              TL0=0x2f;               // 定时器中断中需要的数据初始化
 121   1              clr_wdt=1;
 122   1      //     计时过程的开始
 123   1              dms1++;
 124   1              if(dms1==10) {
 125   2                      dms1=0;
 126   2                      dms10++;
 127   2                      key_dms10++;
 128   2              comm_time++;
 129   2                      if(dms10==10){
 130   3                              dms10=0;
 131   3                              dms100++;
 132   3      
 133   3                              upDataTime++;
 134   3                               speed_time++;
 135   3                              if(dms100==10)      {
 136   4                       dms100=0;
 137   4                       second_bit=1;
 138   4                                       
 139   4                       }
 140   3                              }
 141   2                      }
 142   1              
 143   1             if(cReceLen)   {
 144   2                 rece_gap_time++;
 145   2                 if(rece_gap_time>TRRE_GAP_MAX) {
 146   3                       cReceLen=0;    //  两个数据之间的时间超过了5MS,接收出错
 147   3              //  接收的数据必须在5MS内处理完,否则接收缓冲器的指针会复位
 148   3              //  或是长时间接收不到数据,接收缓冲器清空
 149   3      //                 rece_bit_success=0;   //  清除正确接收标志
 150   3      //                 rece_bit_fail=0;      //  清除错误接收标志
 151   3                       rece_gap_time=0;      //  清除接收间隔时间
 152   3      //                 REN=1;                //  enable rece
 153   3                       }
 154   2                   }
 155   1         
 156   1      }
 157          
 158          
 159          void uart_int(void) interrupt 4
 160          {
 161   1              if(TI)
 162   1              {
 163   2                      TI = 0;
 164   2                      if(cSendLen > 0)
 165   2                      {
 166   3                              SBUF = cSendBuffer[cSendPosi++]|0x80;
 167   3                              cSendLen--;
 168   3                      }
 169   2                      else
 170   2                      {
 171   3                       // 使能485接收
 172   3                              tran_en = 0;
 173   3                              cReceLen = 0;
 174   3                      }
 175   2              }
 176   1              else if(RI)
 177   1              {
 178   2                      RI = 0;
 179   2            rece_gap_time=0;
C51 COMPILER V7.06   INIT_COMM                                                             02/05/2005 09:08:14 PAGE 4   

 180   2                      cReceTimeOut = 5;
 181   2                      cReceBuffer[cReceLen] = SBUF&0x7f;        
 182   2                      if(cReceLen > 5) {
 183   3                              if((cReceBuffer[cReceLen-1] == 0x0d) && (cReceBuffer[cReceLen] == 0x0a))
 184   3                                      bReceOK = 1;                
 185   3                  }    
 186   2                      cReceLen++;
 187   2                      rece_pt=cReceLen;
 188   2                      if(cReceLen>28)  cReceLen=0;
 189   2      //        cReceBuffer[cReceLen]=cReceLen;
 190   2      //                 CheckCommData();
 191   2              }
 192   1      
 193   1      }
 194          
 195          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    291    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14       1
   IDATA SIZE       =     60    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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