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

📄 setbid.lst

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE SETBID
OBJECT MODULE PLACED IN F:\LAIWORK\GB_ASC\SETBID.OBJ
COMPILER INVOKED BY: c:\COMP51V6\C51.EXE F:\LAIWORK\GB_ASC\SETBID.C DB SB OE LARGE

stmt level    source

   1          #include <absacc.h>
   2          #include <reg51.h>
   3          #define  eeprom_addr    0x8050;
   4          extern unsigned char receive_flag;
   5          extern unsigned char xdata checkdata[512];
   6          extern unsigned int check_temp;
   7          extern unsigned int xdata tr_flagaddr;
   8          extern unsigned char xdata second_flag;
   9          
  10          sbit   WatchDog = P1^3;       //看门狗
  11          unsigned char lin;
  12          unsigned char add_transparence=0;
  13          
  14          unsigned int add_transparence_valid=0;
  15          unsigned int add_final_number;
  16          
  17          
  18          
  19          unsigned char xdata data_final_number;
  20          unsigned int xdata datanumber=0;
  21          unsigned char xdata tempdata;
  22          unsigned char xdata add_bit;
  23          unsigned char xdata answer_data[310];
  24          unsigned char xdata data_final[310];
  25          unsigned char xdata h_address;
  26          unsigned char xdata l_address;
  27          
  28          extern unsigned char xdata  RX_BUF[512];
  29          extern unsigned int xdata  head;
  30          extern unsigned int xdata  tail;
  31          extern unsigned int re_flagaddr;
  32          extern unsigned int xdata data_address;
  33          extern unsigned char xdata checkdata[512];
  34          extern unsigned int xdata address;
  35          
  36          extern unsigned short cal_crc(unsigned char *ptr,unsigned int len) ;
  37          //发送数据到fpga
  38          unsigned char tran_fpag(unsigned char flag,unsigned int len)//标志和长度
  39          {
  40   1        unsigned int i;
  41   1        unsigned char j;
  42   1            for(i=0;i<6;i++){
  43   2                 tr_flagaddr=0XA030+5*i;
  44   2                 if(XBYTE[tr_flagaddr]==0x87)break;
  45   2                            }
  46   1        ///////////////////////////////////////////////////////
  47   1       // data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1;     //当前数据区的尾地址
  48   1      
  49   1       // address=data_address;                              //当前数据区的尾地址偏移量
  50   1       // data_address=data_address+len;            //应答数据长度1字节
  51   1       // if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
  52   1        while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){};    //等待FGPA修改头尾
  53   1        XBYTE[0xa023]=0x01;                              //CPU修改头尾
  54   1        XBYTE[0xa024]=0X00;
  55   1        data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 2   

  56   1        data_address=(data_address&0x7ff);
  57   1        address=data_address;                     //当前数据区的尾地址偏移量
  58   1        data_address=data_address+len;            //应答数据长度1字节
  59   1        if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
  60   1        data_address--;
  61   1        XBYTE[0XA021]=data_address>>8;          //
  62   1        XBYTE[0XA022]=data_address;
  63   1        XBYTE[0XA023]=0X00;                      //CPU修改头尾结束
  64   1        XBYTE[0XA024]=0X00;
  65   1        for(i=0;i<6;i++){
  66   2                 tr_flagaddr=0XA030+5*i;
  67   2                 if(XBYTE[tr_flagaddr]==0x87)break;
  68   2                            }
  69   1        if(i==6)return 1;
  70   1      
  71   1        XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
  72   1        XBYTE[tr_flagaddr+2]=address;
  73   1      
  74   1        XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
  75   1        XBYTE[tr_flagaddr+4]=data_address;
  76   1       // XBYTE[tr_flagaddr]=0x01;
  77   1        address=address+0xa000;                 //发送应答数据
  78   1        if(address>0xa7f0)address=0xa080;
  79   1        ///////////////////////////////////////////////////
  80   1         switch(flag){
  81   2           case 0x94:if(checkdata[5]==0){
  82   3                          XBYTE[address]=0x94;
  83   3                          address++;       //  标识
  84   3                          if(address>0xa7f0)address=0xa080;
  85   3                          for(i=0;i<289;i++){
  86   4                                   XBYTE[address]=XBYTE[0X5000+i];
  87   4                                   address++;
  88   4                                   if(address>0xa7f0)address=0xa080;
  89   4                                             }
  90   3                                         }else{
  91   3                          XBYTE[address]=0x94;
  92   3                          address++;
  93   3                          if(address>0xa7f0)address=0xa080;
  94   3                             for(i=0;i<289;i++){
  95   4                                   XBYTE[address]=XBYTE[0X5121+i];
  96   4                                   address++;
  97   4                                   if(address>0xa7f0)data_address=0xa080;
  98   4                                               }
  99   3                          XBYTE[tr_flagaddr]=0x01;
 100   3                      break;
 101   3           case 0x95: j=checkdata[5];
 102   3                      j=(j-1)*98;
 103   3                      XBYTE[address]=0x95;       //  标识
 104   3                      address++;
 105   3                      if(address>0xa7f0)address=0xa080;
 106   3                      for(i=0;i<98;i++){
 107   4                                   XBYTE[address]=XBYTE[0X5242+i+j];
 108   4                                   address++;
 109   4                                   if(address>0xa7f0)address=0xa080;
 110   4                                         }
 111   3                     XBYTE[tr_flagaddr]=0x01;
 112   3                      break;
 113   3           case 0x96: j=checkdata[5];
 114   3                      j=(j-1)*41;
 115   3                      XBYTE[address]=0x96;       //  标识
 116   3                      address++;
 117   3                      if(address>0xa7f0)address=0xa080;
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 3   

 118   3                      for(i=0;i<41;i++){
 119   4                                   XBYTE[address]=XBYTE[0X5e82+i+j];
 120   4                                   address++;
 121   4                                   if(address>0xa7f0)address=0xa080;
 122   4                                         }
 123   3                      XBYTE[tr_flagaddr]=0x01;
 124   3                      break;
 125   3           case 0x97: break;
 126   3           case 0x98:j=checkdata[5];
 127   3                      j=(j-1)*74;
 128   3                      XBYTE[address]=0x96;       //  标识
 129   3                      address++;if(address>0xa7f0)address=0xa080;
 130   3                      for(i=0;i<41;i++){
 131   4                                   XBYTE[address]=XBYTE[0X63a2+i+j];
 132   4                                   address++;
 133   4                                   if(address>0xa7f0)address=0xa080;
 134   4                                         }
 135   3                      XBYTE[tr_flagaddr]=0x01;
 136   3                      break;
 137   3           case 0x99: XBYTE[address]=0x99;       //  标识
 138   3                      address++;
 139   3                      if(address>0xa7f0)address=0xa080;
 140   3                      for(i=0;i<60;i++){
 141   4                                   XBYTE[address]=XBYTE[0X6ce2+i];
 142   4                                   address++;
 143   4                                   if(address>0xa7f0)address=0xa080;
 144   4                                         }
 145   3                      XBYTE[tr_flagaddr]=0x01;
 146   3                      break;
 147   3           case 0x9a: break;
 148   3           case 0x9b: break;
 149   3           case 0x9c:break;
 150   3           default:break;
 151   3                    }
 152   2                }
 153   1           return 0;
 154   1      
 155   1      }
 156          //透明性检验
 157          void add_transparences()
 158          {
 159   1      		switch(add_transparence)
 160   1      		{
 161   2      			case 0 :
 162   2      				if(add_bit==1)
 163   2      				{
 164   3      					add_transparence=1;
 165   3                          add_transparence_valid=0;
 166   3      				}
 167   2      				else
 168   2      				{
 169   3      					add_transparence=0;
 170   3                          add_transparence_valid=0;
 171   3      				}
 172   2      				break;
 173   2      			case 1 :
 174   2      				if(add_bit==1)
 175   2      				{
 176   3      					add_transparence=2;
 177   3                          add_transparence_valid=0;
 178   3      				}
 179   2      				else
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 4   

 180   2      				{
 181   3      					add_transparence=0;
 182   3                          add_transparence_valid=0;
 183   3      				}
 184   2      				break;
 185   2      			case 2:
 186   2      				if(add_bit==1)
 187   2      				{
 188   3      					add_transparence=3;
 189   3                          add_transparence_valid=0;
 190   3      				}
 191   2      				else
 192   2      				{
 193   3      					add_transparence=0;
 194   3                          add_transparence_valid=0;
 195   3      				}
 196   2      				break;
 197   2      			case 3:
 198   2      				if(add_bit==1)
 199   2      				{
 200   3      					add_transparence=4;
 201   3                          add_transparence_valid=0;
 202   3      				}
 203   2      				else
 204   2      				{
 205   3      					add_transparence=0;
 206   3                          add_transparence_valid=0;
 207   3      				}
 208   2      				break;
 209   2      			case 4:
 210   2      				if(add_bit==1)
 211   2      				{
 212   3      					add_transparence=0;
 213   3                          add_transparence_valid=1;
 214   3      				}
 215   2      				else
 216   2      				{
 217   3      					add_transparence=0;
 218   3                          add_transparence_valid=0;
 219   3      				}
 220   2      				break;
 221   2      			}
 222   1      
 223   1      
 224   1      
 225   1      }
 226          
 227          //设置时间
 228          set_time()
 229          {
 230   1        unsigned char *p;
 231   1        unsigned short check_temp;
 232   1        unsigned char i,j;
 233   1        unsigned char beginbit=0;           ////////////////////////////////////////
 234   1      
 235   1        //设置时间后用
 236   1        datanumber=0;
 237   1        data_final_number=0;
 238   1        tempdata=0;
 239   1        XBYTE[0XC009]=checkdata[5];  //year
 240   1        XBYTE[0XC008]=checkdata[6];  //month
 241   1        XBYTE[0XC007]=checkdata[7];  //date
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 5   

 242   1        XBYTE[0XC004]=checkdata[8];  //hour
 243   1        XBYTE[0XC002]=checkdata[9];  //min
 244   1        XBYTE[0XC000]=checkdata[10];  //sec
 245   1        XBYTE[0XC006]=checkdata[11];  //day
 246   1        //应答
 247   1        answer_data[0]=h_address;
 248   1        answer_data[1]=l_address;
 249   1        answer_data[2]=0xcc;
 250   1        answer_data[3]=0xc1;
 251   1        answer_data[4]=0xd3;
 252   1       // answer_data[5]=0x00;
 253   1        p=&answer_data[0];
 254   1        check_temp=cal_crc(p,5);
 255   1        answer_data[5]=(check_temp>>8);    //crc
 256   1        answer_data[6]=check_temp;         //crc
 257   1        answer_data[7]=0x7e;
 258   1        for(i=0;i<8;i++){
 259   2              for(j=0;j<8;j++){
 260   3                 add_bit=(answer_data[i]>>(7-j))%2;

⌨️ 快捷键说明

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