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

📄 common_data.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
  11      =1  #define PBYTE ((unsigned char volatile pdata *) 0)
  12      =1  #define XBYTE ((unsigned char volatile xdata *) 0)
  13      =1  
  14      =1  #define CWORD ((unsigned int volatile code  *) 0)
  15      =1  #define DWORD ((unsigned int volatile data  *) 0)
  16      =1  #define PWORD ((unsigned int volatile pdata *) 0)
  17      =1  #define XWORD ((unsigned int volatile xdata *) 0)
C51 COMPILER V6.12  COMMON_DATA                                                            06/06/2005 08:36:06 PAGE 5   

   3          #include <intrins.h>
   1      =1  /*--------------------------------------------------------------------------
   2      =1  INTRINS.H
   3      =1  
   4      =1  Intrinsic functions for C51.
   5      =1  Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
   6      =1  All rights reserved.
   7      =1  --------------------------------------------------------------------------*/
   8      =1  
   9      =1  extern void          _nop_     (void);
  10      =1  extern bit           _testbit_ (bit);
  11      =1  extern unsigned char _cror_    (unsigned char, unsigned char);
  12      =1  extern unsigned int  _iror_    (unsigned int,  unsigned char);
  13      =1  extern unsigned long _lror_    (unsigned long, unsigned char);
  14      =1  extern unsigned char _crol_    (unsigned char, unsigned char);
  15      =1  extern unsigned int  _irol_    (unsigned int,  unsigned char);
  16      =1  extern unsigned long _lrol_    (unsigned long, unsigned char);
  17      =1  extern unsigned char _chkfloat_(float);
   4          #include <stdio.h>
   1      =1  /*--------------------------------------------------------------------------
   2      =1  STDIO.H
   3      =1  
   4      =1  Prototypes for standard I/O functions.
   5      =1  Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
   6      =1  All rights reserved.
   7      =1  --------------------------------------------------------------------------*/
   8      =1  
   9      =1  #ifndef EOF
  10      =1   #define EOF -1
  11      =1  #endif
  12      =1  
  13      =1  #ifndef NULL
  14      =1   #define NULL ((void *) 0)
  15      =1  #endif
  16      =1  
  17      =1  #ifndef _SIZE_T
  18      =1   #define _SIZE_T
  19      =1   typedef unsigned int size_t;
  20      =1  #endif
  21      =1  
  22      =1  #pragma SAVE
  23      =1  #pragma REGPARMS
  24      =1  extern char _getkey (void);
  25      =1  extern char getchar (void);
  26      =1  extern char ungetchar (char);
  27      =1  extern char putchar (char);
  28      =1  extern int printf   (const char *, ...);
  29      =1  extern int sprintf  (char *, const char *, ...);
  30      =1  extern int vprintf  (const char *, char *);
  31      =1  extern int vsprintf (char *, const char *, char *);
  32      =1  extern char *gets (char *, int n);
  33      =1  extern int scanf (const char *, ...);
  34      =1  extern int sscanf (char *, const char *, ...);
  35      =1  extern int puts (const char *);
  36      =1  
  37      =1  #pragma RESTORE
   5          
   6          #define EXTERN extern
   7          #define uchar unsigned char
   8          #define uint unsigned int
   9          
  10          #define TIMER_FUNC_NUM          60      //功能切换间隔计数               3s
C51 COMPILER V6.12  COMMON_DATA                                                            06/06/2005 08:36:06 PAGE 6   

  11          #define TIMER_SUBFUNC_NUM       4       //子功能切换间隔计数             200ms
  12          #define TIMER_FILTER_NUM        2       //开入点滤波计数                 100ms
  13          #define TIMER_SUBTOPAR_NUM      60      //"子功能切换"转为"功能切换"计数 3s
  14          #define TIMER_ONELINE_NUM		3		//滚动时一行的保留时间			 150ms
  15          #define TIMER_STOP_NUM          40      //到站动作持续时间               2s
  16          #define TIMER_200ms				4
  17          #define TIMER_400ms             8
  18          #define TIMER_1000ms            20
  19          
  20          #define PA377  XBYTE[((P2&0x60)|0x9e)*256+P0]         //LHM QUESTION:为什么没有加P0,似乎没有限定地址的低8
             -位(王解释:不确定低8位也可以,最好确定)
  21          #define PB377  XBYTE[((P2&0x60)|0x9d)*256+P0]           
  22          #define PC377  XBYTE[((P2&0x60)|0x9b)*256+P0]   
  23          #define PD377  XBYTE[((P2&0x60)|0x97)*256+P0]
  24          
  25          #define FLOOR_DISP_BYTENUM  7  // 显示楼层缓冲区对应字节数
  26          #define DIRECT_DISP_BYTENUM  7  // 显示楼层缓冲区对应字节数
  27          
  28          //----------------------------------5045用----------------------------------------//
  29          struct data5
  30          {uchar cF0;//设定F0,设定控制器号(0~7), 显示(1-8)
  31           uchar cF1;//设定F1, 设定层楼数(0~47), 显示(1-48)
  32           uchar cF2;//设定F2, 设定显示方式(0~2), 显示(1-3)
  33           uchar cF3;//设定F3, 设定锁梯(0~1), 显示(0-1)
  34           uchar cF4;//设定F4, 设定消防(0~1), 显示(0-1)
  35          };
  36          #define DATA5 struct data5 
  37          
  38          DATA5 data5045;
  39          //sbit SO=P3^4;   //5045输出
  40          //sbit SI=P3^2;   //5045输入
  41          //sbit SCK=P3^3;  //5045时钟
  42          //sbit CS=P3^5;   //5045片选
  43          uchar code WREN_INST=0X06;     // Write enable latch instruction (WREN)
  44          uchar code WRDI_INST=0X04;     // Write disable latch instruction (WRDI)
  45          uchar code WRSR_INST=0X01;     // Write status register instruction (WRSR)
  46          uchar code RDSR_INST=0X05;     // Read status register instruction (RDSR)
  47          
  48          //写入25045的先导字,应当为0000A010,其中的A为写入25045的高位地址
  49          //将此WRITE_INST和写入高位地址相或后即为正确的写先导字
  50          uchar code WRITE_INST=0X02;    // Write memory instruction (WRITE)
  51          
  52          //读出25045的先导字,应当为0000A011,其中的A为读出25045的高位地址
  53          //将此READ_INST和读出高位地址相或后即为正确的读先导字
  54          uchar code READ_INST=0X03;     // Read memory instruction (READ)
  55          
  56          uint code BYTE_ADDR=0X55;      // Memory address for byte mode operations
  57          uchar code BYTE_DATA=0X11;     // Data byte for byte write operation
  58          uint  code PAGE_ADDR=0X1F;     // Memory address for page mode operations 页面写入的其始地址
  59          uchar code PAGE_DATA1=0X22;    // 1st data byte for page write operation
  60          uchar code PAGE_DATA2=0X33;    // 2nd data byte for page write operation
  61          uchar code PAGE_DATA3=0X44;    // 3rd data byte for page write operation
  62          
  63          //这是状态寄存器的值,他的意义在于第5,第4位为WDI1,WDI0代表DOG的时间,00为1.4秒,01为600毫秒,10为200毫秒,00为d
             -isabled
  64          //第3位和第2位为BL1,BL0,是写保护设置位,00为无保护,01为保护180-1FF,10为保护100-1FF,11为保护000-1FF.第1位为W
             -EL,
  65          //当他为1时代表已经"写使能"设置了,现在可以写了,只读位.第0位为WIP,当他为1时代表正在进行写操作,是只读
  66          uchar code STATUS_REG=0x20;    // Status register,设置DOG时间设置为200毫秒,无写保护
  67          
  68          uchar code  MAX_POLL=0x99;     // Maximum number of polls(最大写过程时间,确定25045的最大的写入过程的时间)
  69          uchar code INIT_STATE=0x09;    // Initialization value for control ports
C51 COMPILER V6.12  COMMON_DATA                                                            06/06/2005 08:36:06 PAGE 7   

  70          uint code SLIC=0x30;           // Address location of SLIC
  71          uchar m_set5045flg;		 		 // 当设置位为1时,表示前面设置过,此时要重新的写入5045中。 如果没有,则不需要进行
             -这个步骤。 
  72          
  73          //----------------------------------can用----------------------------------//
  74          uchar  code cCtrlNum[8]={0x15,0x1a,0x13,0x1c,0x16,0x19,0x1b,0x1d};   //控制器号的转换
  75          uchar  whacr0,whacr1;           //sja1000代码(接收标示符)
  76          uchar  whid1,whid2;             //sja1000代码(发送标示符)  
  77          struct rec_data{
  78          uchar  cCurFloor;               //当前楼层数
  79          uchar  cDirect;                 //当前方向(0:下   1:上  0xFF:无)
  80          uchar  cMaxFloor;               //最大楼层数
  81          };
  82          #define REC_DATA struct rec_data 
  83          REC_DATA m_RecData;      //can接收数据
  84          bdata uchar abit;
  85          sbit abit_0=abit^0;
  86          sbit abit_1=abit^1;
  87          sbit abit_2=abit^2;
  88          sbit abit_3=abit^3;
  89          sbit abit_4=abit^4;
  90          sbit abit_5=abit^5;
  91          sbit abit_6=abit^6;
  92          sbit abit_7=abit^7;
  93          uchar time1_count;     //上呼计数
  94          uchar time2_count;     //下呼计数
  95          uchar time3_count;     //消防服务计数
  96          uchar time4_count;     //消防计数
  97          uchar time5_count;     //锁梯计数
  98          uchar time6_count;	   //锁梯消防有效时定时发送标记
  99          uchar time7_count;
 100          bit time1_flg;       //上呼计数到标记
 101          bit time2_flg;       //下呼计数到标记
 102          bit time3_flg;       //消防服务计数到标记
 103          bit time4_flg;       //消防计数到标记
 104          bit time5_flg;       //锁梯计数到标记
 105          bit time6_flg;	   //锁梯消防有效时定时发送标记
 106          bit time7_flg;	   //
 107          uchar time_nocan_count;
 108          bit time_nocan_flg;	   //
 109          bit m_existupcallflg;//上呼存在标记
 110          bit m_existdowncallflg;//下呼存在标记
 111          
 112          //----------------------------------显示用----------------------------------//
 113          /*struct disp_data{
 114          uchar  cHigh;               //当前楼层数高字符
 115          uchar  cLow;                //当前楼层数低字符
 116                        
 117          };
 118          #define DISP_DATA struct disp_data*/
 119          //DISP_DATA   m_dSrcFloor[FLOOR_DISP_BYTENUM];        //源楼层buffer
 120          uchar			m_cSrcFloorHigh[FLOOR_DISP_BYTENUM];  //源楼层buffer高字符
 121          uchar			m_cSrcFloorLow[FLOOR_DISP_BYTENUM];	  //源楼层buffer低字符
 122          //uchar           m_cSrcDirect[DIRECT_DISP_BYTENUM];    //源方向buffer
 123          //DISP_DATA   m_dDispFloor[FLOOR_DISP_BYTENUM];       //显示楼层buffer
 124          uchar			m_cDispFloorHigh[FLOOR_DISP_BYTENUM]; //显示楼层buffer高字符
 125          uchar			m_cDispFloorLow[FLOOR_DISP_BYTENUM];  //显示楼层buffer低字符
 126          uchar       m_cDispDirect[DIRECT_DISP_BYTENUM];       //显示方向buffer
 127          uchar code PR[13][7]={{0x11,0x0E,0x0E,0x0E,0x0E,0x0E,0x11}, // '0'
 128                              {0x1B,0x19,0x1B,0x1B,0x1B,0x1B,0x1B}, // '1'
 129                              {0x11,0x0E,0x0F,0x17,0x1B,0x1D,0x00}, // '2'
 130                              {0x11,0x0E,0x0F,0x13,0x0F,0x0E,0x11}, // '3'
C51 COMPILER V6.12  COMMON_DATA                                                            06/06/2005 08:36:06 PAGE 8   

 131                              {0x17,0x13,0x15,0x00,0x17,0x17,0x17}, // '4'
 132                              {0x00,0x1E,0x10,0x0F,0x0F,0x0E,0x11}, // '5'
 133                              {0x11,0x1E,0x1E,0x10,0x0E,0x0E,0x11}, // '6'
 134                              {0x00,0x0F,0x17,0x1B,0x1D,0x1D,0x1D}, // '7'
 135                              {0x11,0x0E,0x0E,0x11,0x0E,0x0E,0x11}, // '8'
 136                              {0x11,0x0E,0x0E,0x01,0x0F,0x0E,0x11}, // '9'
 137          //                  {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'A'  //暂时未用
 138                              {0x10,0x0E,0x0E,0x10,0x0E,0x0E,0x10}, // 'B'
 139          //                  {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'C'  //暂时未用
 140          //                  {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'D'  //暂时未用
 141          //                  {0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 'E'  //暂时未用
 142                              {0x00,0x1E,0x10,0x1E,0x1E,0x1E,0x1E}, // 'F'
 143                              {0x1F,0x1F,0x1F,0x00,0x1F,0x1F,0x1F}, // '-'
 144                             };
 145          uchar code PRDUp[7]   = {0x1B,0x11,0x0A,0x1B,0x1B,0x1B,0x1B};
 146          uchar code PRDDown[7] = {0x1B,0x1B,0x1B,0x1B,0x0A,0x11,0x1B};
 147          uchar code PR_FIRE[7][2]={{0x83,0x07},{0xEF,0x07},{0x83,0x05},{0x01,0x04},{0x01,0x04},{0x83,0x05},{0x83,0x
             -07}};
 148          uchar code PR_REPAIRE[7][2]={{0xFF,0x04},{0x7F,0x00},{0x00,0x07},{0x00,0x07},{0x00,0x07},{0x7F,0x00},{0xFF
             -,0x04}};
 149          uchar code PR_LOCK[7][2]={{0x8F,0x07},{0x77,0x07},{0x77,0x07},{0x03,0x06},{0x03,0x06},{0x03,0x06},{0x03,0x
             -06}};
 150          //uchar  m_cMakeNewFlg;                           //新文字做标记
 151          uchar  m_c7_11singledoubleFlg;                  //0:单字 1:双字
 152          //----------------------------------设置功能用----------------------------------//
 153          uchar  m_cFuncCnt;                              //F0-F4标记计数(0-4)
 154          uchar  m_cFuncTimer;                            //功能切换计数器(每2秒切换一次)
 155          uchar  m_cSettingFuncFlg;                       //功能设置标记(标志当前处于F0-F4切换阶段)
 156          uchar  m_cNewFuncFlg;
 157                                                          //    显示为(F0:1-8 F1:1-48 F2:1-3 F3:0-1 F4:0-1)
 158          uchar  m_cSubFuncCnt;                           //各功能计数(F0:0-7 F1:0-47 F2:0-2 F3:0-1 F4:0-1)
 159          uchar  m_cSubFuncTimer;                         //功能切换计数器(每500毫秒切换一次)
 160          uchar  m_cSettingSubFuncFlg;                    //子功能设置标记(标志当前处于各功能的子功能设置阶段)
 161          uchar  m_cNewSubFuncFlg;
 162          uchar  m_cMaxSubNum;
 163          
 164          uchar  m_cSubToParTimer;
 165          uchar  m_cSubToParLess2sFlg;
 166          //滚动专用
 167          uchar  m_cWholeMoveOKFlg;						//整组移动完成标记(出现新楼层时,进行一组滚动,滚动完成后等待下一新楼层)
 168          uchar  m_cMoveCnt;                              //滚动计数(0-6)
 169          uchar  m_cMoveTimer;                            //滚动计数器(每150ms滚动一次)
 170          uchar  m_cNewLineFlg;                           //新滚动行标记
 171          //四状态
 172          uchar  m_cFireFlg;
 173          uchar  m_cFireBaseFlg;
 174          uchar  m_cRepairFlg;
 175          uchar  m_cLockFlg;

⌨️ 快捷键说明

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