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

📄 main.lst

📁 单片机控制的12864液晶显示器的驱动程序,通过按键控制
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   MAIN                                                                  08/20/2006 14:48:06 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: E:\Program Files\keil\C51\BIN\C51.EXE MAIN.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "MAIN.H"
   2          #include "display.h"
   3          #include "disdrive.h"
   4          #include "KEY.H"
   5          #include "X.H"
   6          
   7          //定义串口缓冲区和结构体
   8          #define  ADDRESSL    0xFF       //地址校验码地位
   9          #define  ADDRESSH    0xFF       //地址校验码高位
  10          
  11          #define  BufferLen          30
  12          #define  SEARIALTIME    0x64    //串口接收完所有数据的最大时间,5s
  13          
  14          unsigned char data RealReceiveLen ;     //实际接收到个数
  15          unsigned char data CheckSum  ;          //校验码
  16          unsigned char data ReceivBuf[BufferLen];
  17          unsigned char data SerialTime ;         //串口接收数据时间计数器,在接收中大于一个数可以认为此次接收丢失
  18          unsigned char data ReceiveState ;   //接收状态标志位
  19          
  20          //定义时间变量
  21          unsigned  int   ResetLedBackTime;       //背光灯熄灭时间计数器 
  22          unsigned  int   CountTimeTime;          //累计时间计数器
  23          unsigned  char  IsSaveTime;                     //是否保存累计时间数据
  24          
  25          unsigned  char  data    GuZhangState;   //故障状态
  26          unsigned  char  data    GuZhangTime;    //故障延时计数器
  27          unsigned  char  idata   WriteGuZhangPtr;        //故障存储指针,指向当前可以存储的地址首位
  28          unsigned  char  idata   GuZhangNum;             //当前已经存储了的故障数
  29          unsigned  long  data    GuZhangShiJian; //故障发生时间 
  30          //申明应用定义在KEY.C中的全局变量
  31          extern unsigned long idata CountTime;
  32          extern  struct  INCOME  idata  Incomedata;
  33          
  34          extern  unsigned char data  IsKeyDown;
  35          extern  unsigned int  data  AutoKeyTime;
  36          extern  unsigned int  data  KeyDelayTime;
  37          extern  unsigned char data  UpdataLEDTime;
  38          
  39          void SYS_Init()
  40          {
  41   1              EA = 0;
  42   1                      ResetLedBackTime = 0;   //变量初始化
  43   1                      CountTimeTime = 0;
  44   1      
  45   1              SysReg_Init();  //system register initial block
  46   1              Serial_Init();  //serial initial block;
  47   1              HardInitialLED(); //display initial block
  48   1              InitialKey();   //key initail block 
  49   1              SetWatchDog();  //set watch dog
  50   1              FeedDog();              //Error Light off
  51   1      
  52   1              TR1 = 1;        //timer1 start
  53   1                      TR0 = 1;                //timer0 start
  54   1              EA =  1;
  55   1      }
C51 COMPILER V7.50   MAIN                                                                  08/20/2006 14:48:06 PAGE 2   

  56          
  57          
  58          void SysReg_Init()
  59          {
  60   1                      //IE setting
  61   1              EX0 = 0;                //int0 disable
  62   1              ET0 = 1;        //timer0 interrupt enable
  63   1              EX1 = 0;                //int1 disable
  64   1              ET1 = 1;        //tiemr1 interrupt disable
  65   1              ES = 1;                 //serial intrrupt enable
  66   1                      ET2 = 0;        //timer2 interrupt disable
  67   1                      IP = 0x10;              //serial interrupt high
  68   1      
  69   1                      //TMOD setting
  70   1                      SCON    = 0x50;                                         //串口工作方式1,允许接收        
  71   1                      //SM0=0; SM1=1;SM2=0;REN=1;TB8=0;RB8=0;TI=0;RI=0;
  72   1                      PCON    = 0x00;                                         //波特率倍频
  73   1                      T2CON   = 0x30;                                         // 定时器2作为串口1的波特率发生器
  74   1                      RCAP2   = -(SYSCLK/BAUDRATE/32);
*** ERROR C202 IN LINE 74 OF MAIN.C: 'RCAP2': undefined identifier
  75   1                      TR2             = 1;                                            // TR2=1
  76   1      
  77   1                      
  78   1                      //TIMER0 SETTING
  79   1                      TMOD = 0x11;    //定时器0和1都是方式1,16位计数器
  80   1                      TF0 = 0;
  81   1              TH0 = TIMER0_H;
  82   1              TL0 = TIMER0_L ;                
  83   1                      //TIMER1 SETTING
  84   1                      TF1 = 0;
  85   1              TH1 = TIMER1_H; 
  86   1                  TL1 = TIMER1_L;
  87   1      
  88   1                      TI = 0; //初始化发送中断和接收中断
  89   1                      RI = 0;
  90   1      }
  91          
  92          void main(void)
  93          {       
  94   1              unsigned int ErrorTemp; //故障中间变量 
  95   1              SYS_Init();
  96   1              ErrorLight=ResetLight;
  97   1              SetLEDBackLight();
  98   1              LedFillNULL();
  99   1              ShowWait();
 100   1              FeedDog();
 101   1              //初始化故障存储器
 102   1              DataWrite25045EEROM(0,SAVEGUZHANG_ADD);
 103   1              DataWrite25045EEROM(0,SAVEGUZHANG_ADD+2);       
 104   1              GuZhangState = NOGUZHANG;
 105   1              //取出累计时间,高位存储在低地址
 106   1              PageRead25045EEROM(SAVETIME_ADD,(unsigned char *)(&CountTime));
 107   1                      
 108   1              while(1)
 109   1              {       
 110   2                      FeedDog();
 111   2                      KeyPro();
 112   2                      if(ReceiveState == ENDRECEIVE)  //接收完所有数据
 113   2                      {       
 114   3                                      if(CheckSum == 0x00) 
 115   3                                      {
 116   4                                              SerialLight = SetLight;         //点亮串口灯
C51 COMPILER V7.50   MAIN                                                                  08/20/2006 14:48:06 PAGE 3   

 117   4                                              ReadSerialBufData((unsigned int *)ReceivBuf,&(Incomedata.InputUA),14);//取出数据
 118   4                                              if(Incomedata.ErrorCodeShuZi!=0)
 119   4                                              {
 120   5                                                      ErrorTemp=DataRead25045EEROM(SAVEGUZHANG_ADD)|Incomedata.ErrorCodeShuZi;
 121   5                                                      DataWrite25045EEROM(ErrorTemp,SAVEGUZHANG_ADD);
 122   5                                                      GuZhangState = GUZHANGDELAY;
 123   5      //                                              GuZhangTime = 0;
 124   5                                                      ErrorLight = SetLight;
 125   5                                                      RunLight  = ResetLight;
 126   5                                              }               
 127   4                                              if(Incomedata.ErrorCodeMoNi!=0)
 128   4                                              {
 129   5                                                      ErrorTemp=DataRead25045EEROM(SAVEGUZHANG_ADD+2)|Incomedata.ErrorCodeMoNi;
 130   5                                                      DataWrite25045EEROM(ErrorTemp,SAVEGUZHANG_ADD+2);       
 131   5                                                      GuZhangState = GUZHANGDELAY;
 132   5      //                                              GuZhangTime = 0;
 133   5                                                      ErrorLight = SetLight;
 134   5                                                      RunLight  = ResetLight;
 135   5                                              }
 136   4                                              delay(15);
 137   4                                              SerialLight = ResetLight;
 138   4                                      }
 139   3                                      ReceiveState = STARTRECEIVE1;
 140   3                                      RealReceiveLen = 0;
 141   3                                      CheckSum = 0;;
 142   3                      }
 143   2                      //故障延时已到且当前没有收到故障
 144   2                      if(GuZhangState == GUZHANGDELAYOVER&&Incomedata.ErrorCodeShuZi==0&&Incomedata.ErrorCodeMoNi==0)
 145   2                      {
 146   3                                      ErrorLight = ResetLight;
 147   3                                      RunLight   =  SetLight;
 148   3                                      GuZhangState = NOGUZHANG;
 149   3                      }
 150   2                      if(SerialTime >= SEARIALTIME)   //串口通讯等待时间过长
 151   2                                      Serial_Init();
 152   2                      if(IsSaveTime)
 153   2                      {
 154   3                                      IsSaveTime = 0;
 155   3                                      PageWrite25045EEROM(SAVETIME_ADD,(unsigned char *)(&CountTime));
 156   3                      }                                       
 157   2              }
 158   1              
 159   1      }
 160          
 161          void  TO_INT(void) interrupt 1

⌨️ 快捷键说明

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