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

📄 mainn.lst

📁 电梯控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAINN
OBJECT MODULE PLACED IN mainn.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE mainn.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<stdio.h>
   2          #include<REG51.H>
   3          #include <intrins.h>
   4          #include    <string.h>
   5          
   6          #include  "SJA_BCANCONF.h"              //add by ji
   7          #include  "time_module.h"               //add by ji
   8          
   9          #define         TRUE                    1
  10          #define         FALSE                   0
  11          
  12          #define         ON                      1
  13          #define         OFF                     0
  14          #define         floor                   1
  15          #define         SWTIMERVAL              5       //软件定时时间5ms
  16          //unsigned char CurrentFloor;
  17          
  18          
  19          #define         BIT_REGBASEADD          00
  20          #define         UpRunArrow              4
  21          #define         DownRunArrow            5
  22          #define         RunStateBaseAdd         BIT_REGBASEADD+01
  23          #define         FormerFloorUpBaseAdd    BIT_REGBASEADD+52
  24          #define         FormerFloorDownBaseAdd  BIT_REGBASEADD+56
  25          #define         FormerFloorLockBaseAdd  BIT_REGBASEADD+68
  26          #define         FormerFloorFireBaseAdd  BIT_REGBASEADD+72
  27          #define         BackFloorUpBaseAdd      BIT_REGBASEADD+60
  28          #define         BackFloorDownBaseAdd    BIT_REGBASEADD+64
  29          #define         BackFloorLockBaseAdd    BIT_REGBASEADD+80
  30          #define         BackFloorFireBaseAdd    BIT_REGBASEADD+84
  31          #define         UpFloorParBaseAdd       BIT_REGBASEADD+76
  32          #define         BackFloorParBaseAdd     BIT_REGBASEADD+88
  33          #define         WORD_REGBASEADD                 0x00
  34          #define         CurrentFloorAdd                  WORD_REGBASEADD+5
  35          #define         FormerFloorUpCallAdd             BIT_REGBASEADD+126
  36          #define         FormerFloorDownCallAdd           BIT_REGBASEADD+134
  37          
  38          
  39                    
  40          #define         TESTFUN                 0x55
  41          #define         WORDFUN                 0x01
  42          #define         BITFUN                  0x00
  43          
  44          #define         BaseID                  0
  45          #define         RTR                     0
  46          #define         DLC                     4
  47          
  48          
  49          
  50          #define         EnableREG_INTERRUPTWord 0x81
  51          
  52          unsigned char code floortable[24][5]={
  53                                          {0x41,0x3E,0x3E,0x3E,0x41},
  54                                          {0x7F,0x3D,0x00,0x3F,0x7F},
  55                                          {0x3D,0x1E,0x2E,0x36,0x39},
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 2   

  56                                          {0x5D,0x36,0x36,0x36,0x49},
  57                                          {0x67,0x6B,0x6D,0x00,0x6F},
  58                                          {0x58,0x3A,0x3A,0x3A,0x46},
  59                                          {0x41,0x36,0x36,0x36,0x4D},
  60                                          {0x7E,0x0E,0x76,0x7A,0x7C},
  61                                          {0x49,0x36,0x36,0x36,0x49},
  62                                          {0x59,0x36,0x36,0x36,0x41},
  63                                          {0x03,0x6D,0x6E,0x6D,0x03},
  64                                          {0x00,0x3E,0x36,0x36,0x49},
  65                                          {0x63,0x5D,0x3E,0x3E,0x3E},
  66                                          {0x00,0x3E,0x3E,0x5D,0x63},
  67                                          {0x00,0x36,0x36,0x36,0x36},
  68                                          {0x00,0x76,0x76,0x76,0x76},
  69                                          {0x63,0x5D,0x3E,0x2E,0x0E},
  70                                          {0x00,0x77,0x77,0x77,0x00},
  71                                          {0x00,0x3F,0x3F,0x3F,0x3F},
  72                                          {0x00,0x7D,0x7B,0x7D,0x00},
  73                                          {0x00,0x76,0x76,0x76,0x79},
  74                                          {0x00,0x76,0x66,0x56,0x39},
  75                                          {0x77,0x77,0x77,0x77,0x77},
  76                                          {0x77,0x77,0x00,0x77,0x77},
  77                                          };//0--9,A--H,L,M,P,,R,-,+的代码表
  78          
  79          
  80          
  81          unsigned char code UpDirectionTable[7][5]={
  82                                                          {0X7D,0X40,0X00,0X40,0X7D},             //状态1
  83                                                          {0X7E,0X20,0X00,0X20,0X7E},             //状态2
  84                                                          {0X3F,0X10,0X00,0X10,0X3F},
  85                                                          {0X3F,0X08,0X00,0X08,0X3F},
  86                                                          {0X6F,0X04,0X00,0X04,0X6F},
  87                                                          {0X77,0X02,0X00,0X02,0X77},
  88                                                          {0X7B,0X01,0X00,0X01,0X7B},             //箭头初态
  89                          
  90                                                  };//上行按钮的代码表
  91          unsigned char code Downdirectiontable[7][5]={
  92                                                          {0X5F,0X01,0X00,0X01,0X5F},
  93                                                          {0X3F,0X02,0X00,0X02,0X3F},
  94                                                          {0X7E,0X04,0X00,0X04,0X7E},
  95                                                          {0X7D,0X08,0X00,0X08,0X7D},
  96                                                          {0X7D,0X10,0X00,0X10,0X7D},
  97                                                          {0X77,0X20,0X00,0X20,0X77},
  98                                                          {0X6F,0X40,0X00,0X40,0X6F},             //箭头初态
  99                                                  };//下行按钮的代码表
 100          unsigned char code Less10floorLefttable[10][5]={
 101                                                          {0X7F,0X7F,0X7F,0X41,0X2E},             //
 102                                                          {0X7F,0X7F,0X7F,0X7F,0X3D},
 103                                                          {0X7F,0X7F,0X7F,0X3D,0X1E},
 104                                                          {0X7F,0X7F,0X7F,0X5D,0X36},
 105                                                          {0X7F,0X7F,0X7F,0X67,0X6B},
 106                                                          {0X7F,0X7F,0X7F,0X50,0X36},
 107                                                          {0X7F,0X7F,0X7F,0X43,0X35},
 108                                                          {0X7F,0X7F,0X7F,0X7E,0X0E},
 109                                                          {0X7F,0X7F,0X7F,0X49,0X36},
 110                                                          {0X7F,0X7F,0X7F,0X59,0X36},
 111                                                          };//10楼以下的楼层显示左半部分
 112          unsigned char code Less10floorRighttable[10][5]={
 113                                                          {0X36,0X4A,0X41,0X7F,0X7F},
 114                                                          {0X00,0X3F,0X7F,0X7F,0X7F},
 115                                                          {0X2E,0X36,0X39,0X7F,0X7F},
 116                                                          {0X36,0X36,0X49,0X7F,0X7F},
 117                                                          {0X6D,0X00,0X6F,0X7F,0X7F},
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 3   

 118                                                          {0X36,0X36,0X4E,0X7F,0X7F},
 119                                                          {0X36,0X36,0X4F,0X7F,0X7F},
 120                                                          {0X76,0X7A,0X7C,0X7F,0X7F},
 121                                                          {0X36,0X36,0X49,0X7F,0X7F},
 122                                                          {0X36,0X36,0X41,0X7F,0X7F},
 123                                                          };//10楼以下的楼层显示右半部分
 124          
 125          
 126          sbit P1_0=P1^0;                 //UP
 127          sbit P1_1=P1^1;                 //DOWN
 128          sbit P1_2=P1^2;                 //LOCK
 129          sbit P1_3=P1^3;                 //FIRE
 130          
 131          sbit P3_4=P3^4;                 //UP_LED
 132          sbit P3_5=P3^5;                 //DOWN_LED
 133                                          
 134           
 135          extern bit CRC_OK( unsigned char *CRC_Code, unsigned char *head, unsigned char *tail );
 136          extern unsigned short CRC( unsigned char *head, unsigned char *tail );
 137          
 138          char InputTemp;                 //输入信号的临时量,一位表示一个输入量,目前4个有效
 139          char InputState;        
 140          unsigned char scanRow;  
 141          
 142          
 143          unsigned        int             CanBusFlag;
 144          
 145          //输入信号的确定量,一位表示一个输入量,目前4个有效
 146          char InputChanged;              //输入信号的变化标志,一位表示一个输入量,目前4个有效
 147          char STimerState;               //软定时器的状态,一位表示一个软定时器,目前4个有效
 148          unsigned char STimerValue[4];   //软定时器的当前值,目前4个有效
 149          
 150          bit FireKey;    
 151          bit LockLad;
 152          bit UpRun;
 153          bit DownRun; 
 154          
 155          bit CANDataReceived;
 156          
 157          unsigned char xdata *reg1=0x0600;
 158          unsigned char xdata *reg2=0x0400;
 159          unsigned char xdata *reg3=0x0200;
 160          unsigned char xdata *reg4=0x0000;
 161          
 162          unsigned char RecvBuf[6];                               //CAN接收缓冲
 163          unsigned char SendBuf[6];
 164          unsigned char array[6];                         //CAN发送缓冲
 165          //unsigned char floor;
 166          
 167          char DirectionBuf[5];                   //方向显示数码管
 168          char HighBuf[5];
 169          char LowBuf[5];
 170          unsigned REG_MODword;
 171          
 172          InitHardTimer()
 173          {
 174   1              TMOD=0X10;
 175   1      
 176   1              EA=1;
 177   1              ET1=1;
 178   1              TR1=1;
 179   1       }
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 4   

 180          
 181          bit CanRcv_Prg()
 182          {       
 183   1              char i;
 184   1            
 185   1              BCAN_DATA_RECEIVE(RecvBuf);
 186   1              BCAN_CMD_PRG(RRB_CMD);  
 187   1              switch((short)RecvBuf[3])
 188   1              {
 189   2                      case ((RunStateBaseAdd<<4)|UpRunArrow):
 190   2                              {
 191   3                              for(i=0;i<5;i++)         
 192   3                                      DirectionBuf[i]=UpDirectionTable[7][i];
 193   3                                      
 194   3                                                      }
 195   2                                      break;
 196   2                              
 197   2                      case ((RunStateBaseAdd<<4)|DownRunArrow):
 198   2                              
 199   2                              for(i=0;i<5;i++)
 200   2                                      DirectionBuf[i]=Downdirectiontable[7][i];
 201   2                                      
 202   2                                      break; 
 203   2                      case ( CurrentFloorAdd  ):
 204   2                              
 205   2                                      
 206   2                                      if(((short)RecvBuf[5])>10)
 207   2                                              {       
 208   3                                                      for(i=0;i<5;i++)
 209   3                                                      {
 210   4                                                              HighBuf[i]=floortable[((short)RecvBuf[5])/10][i];
 211   4                                                              LowBuf[i]=floortable[(short)RecvBuf[5]%10][i];
 212   4                                                      }
 213   3                                                      
 214   3                                              }
 215   2                                      else
 216   2                                              {       
 217   3                                                      for(i=0;i<5;i++)
 218   3                                                      {
 219   4                                                              HighBuf[i]=Less10floorLefttable[(short)RecvBuf[5]][i];
 220   4                                                              LowBuf[i]=Less10floorRighttable[ ((short)RecvBuf[5])][i];
 221   4                                                      }
 222   3                                                      
 223   3                                              }
 224   2                                      
 225   2                                              
 226   2                              break;
 227   2              case ((((FormerFloorUpBaseAdd)<<4)+floor)&0xFF):
 228   2                              if(((((FormerFloorUpCallAdd<<4)+floor)>>8)&0xFF)==RecvBuf[4])
 229   2                              P3_4=(P3_4)&0;
 230   2                              break;
 231   2                              
 232   2              case((((FormerFloorDownBaseAdd)<<4)+floor)&0xFF):
 233   2                              if(((((FormerFloorDownCallAdd<<4)+floor)>>8)&0xFF)==RecvBuf[4])
 234   2                              P3_5=(P3_5)&0;
 235   2                              
 236   2                              break;
 237   2                                        
 238   2                      default:        break;  
 239   2                      
 240   2              
 241   2              }
C51 COMPILER V8.02   MAINN                                                                 07/05/2007 15:35:46 PAGE 5   

 242   1              return 0;
 243   1      }
 244          
 245          
 246          void FireKeyPreSend( void )
 247          {       
 248   1              //还需要添加CAN数据的其他域填充

⌨️ 快捷键说明

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