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

📄 setbid.lst

📁 最先进的信号机程序,经过很多重要场合测试通过
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.02  SETBID                                                                 08/02/2006 14:44:14 PAGE 1   


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

stmt level    source

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

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

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

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

 242   1        //应答
 243   1        answer_data[0]=h_address;
 244   1        answer_data[1]=l_address;
 245   1        answer_data[2]=0xcc;
 246   1        answer_data[3]=0xc1;
 247   1        answer_data[4]=0xd3;
 248   1       // answer_data[5]=0x00;
 249   1        p=&answer_data[0];
 250   1        check_temp=cal_crc(p,5);
 251   1        answer_data[5]=(check_temp>>8);    //crc
 252   1        answer_data[6]=check_temp;         //crc
 253   1        answer_data[7]=0x7e;
 254   1        for(i=0;i<8;i++){
 255   2              for(j=0;j<8;j++){
 256   3                 add_bit=(answer_data[i]>>(7-j))%2;

⌨️ 快捷键说明

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