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

📄 transflow.lst

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


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

stmt level    source

   1          #include <reg51.h>
   2          #include <absacc.h>
   3          extern  unsigned char xdata send_liul[32],send_occ[32];
   4          extern  unsigned int xdata  loop_ratio[32];
   5          unsigned char xdata T;
   6          unsigned char xdata fl,fh;
   7          extern unsigned int xdata data_address;
   8          extern unsigned int xdata address;
   9          extern unsigned int xdata tr_flagaddr;
  10          
  11          
  12          extern unsigned char xdata period_sch[40];
  13          extern unsigned char xdata now_step_schid;
  14          extern unsigned char xdata timeid;
  15          extern unsigned int xdata savecount;
  16          
  17          
  18          
  19          trans_volum()     //流量和占有率发送程序,在周期结束时,发送到FPGA板
  20          {
  21   1        unsigned char i;
  22   1        savecount++;
  23   1        data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1;        //首地址 偏移量
  24   1        address=data_address;                                 //首地址 偏移量
  25   1        data_address=data_address+70;            //应答数据长度70字节
  26   1        if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
  27   1        while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){};    //等待FGPA修改头尾
  28   1        XBYTE[0xa023]=0x01;                              //CPU修改头尾
  29   1        XBYTE[0xa024]=0X00;
  30   1        data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
  31   1        address=data_address;
  32   1        data_address=data_address+70;            //应答数据长度70字节
  33   1        if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
  34   1        data_address--;
  35   1        XBYTE[0XA021]=data_address>>8;          //
  36   1        XBYTE[0XA022]=data_address;
  37   1        XBYTE[0XA023]=0X00;                      //CPU修改头尾结束
  38   1        XBYTE[0XA024]=0X00;
  39   1        for(i=0;i<6;i++){
  40   2                 tr_flagaddr=0XA030+5*i;
  41   2                 if(XBYTE[tr_flagaddr]==0x87)break;
  42   2                            }
  43   1        if(i==6)return 1;
  44   1       // SBUF=0XFF;while(!TI);TI=0;      /////////////////////////////////////////
  45   1       // SBUF=0XFF;while(!TI);TI=0;      /////////////////////////////////////////
  46   1       // SBUF=(savecount>>8);while(!TI);TI=0;      /////////////////////////////////////////
  47   1       // SBUF=savecount;while(!TI);TI=0;      /////////////////////////////////////////
  48   1      
  49   1        XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
  50   1      //  SBUF=XBYTE[tr_flagaddr+1];while(!TI);TI=0;      /////////////////////////////////////////
  51   1        XBYTE[tr_flagaddr+2]=address;
  52   1      //  SBUF=XBYTE[tr_flagaddr+2];while(!TI);TI=0;      /////////////////////////////////////////
  53   1        XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
  54   1      //  SBUF=XBYTE[tr_flagaddr+3];while(!TI);TI=0;      /////////////////////////////////////////
  55   1        XBYTE[tr_flagaddr+4]=data_address;
C51 COMPILER V6.02  TRANSFLOW                                                              08/02/2006 14:44:13 PAGE 2   

  56   1      //  SBUF=XBYTE[tr_flagaddr+4];while(!TI);TI=0;      /////////////////////////////////////////
  57   1      
  58   1      
  59   1        address=address+0xa000;                 //发送应答数据
  60   1        XBYTE[address]=0XFD;                    //发送标识
  61   1      //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  62   1        address++;
  63   1        if(address>0xa7f0)address=0xa080;
  64   1        XBYTE[address]=XBYTE[0XC008];           //发送月
  65   1      //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  66   1        address++;
  67   1        if(address>0xa7f0)address=0xa080;
  68   1        XBYTE[address]=XBYTE[0XC007];           //日
  69   1      //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  70   1        address++;
  71   1        if(address>0xa7f0)address=0xa080;
  72   1        XBYTE[address]=XBYTE[0XC004];           //时
  73   1      //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  74   1        address++;
  75   1        if(address>0xa7f0)address=0xa080;
  76   1        XBYTE[address]=XBYTE[0XC002];           //分
  77   1      //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  78   1        address++;
  79   1        if(address>0xa7f0)address=0xa080;
  80   1        XBYTE[address]=XBYTE[0XC000];           //秒
  81   1      //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  82   1        address++;
  83   1        if(address>0xa7f0)address=0xa080;
  84   1        for(i=0;i<32;i++){
  85   2            XBYTE[address]=send_liul[i];  //发送流量
  86   2        //    SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  87   2            address++;
  88   2            if(address>0xa7f0)address=0xa080;
  89   2            send_occ[i]=(loop_ratio[i]*10/1000)/T;
  90   2            XBYTE[address]=send_occ[i];   //发送占有率
  91   2          //  SBUF=XBYTE[address];while(!TI);TI=0;      /////////////////////////////////////////
  92   2            address++;
  93   2            if(address>0xa7f0)address=0xa080;
  94   2                           }
  95   1        XBYTE[tr_flagaddr]=0x01;
  96   1        for(i=0;i<32;i++){
  97   2           send_liul[i]=0;
  98   2           send_occ[i]=0;
  99   2           loop_ratio[i]=0;
 100   2                         }
 101   1      // SBUF=0XFF;
 102   1      // while(!TI);TI=0;
 103   1         for(i=0;i<32;i++){
 104   2           send_liul[i]=0;
 105   2           send_occ[i]=0;
 106   2           loop_ratio[i]=0;
 107   2                         }
 108   1      }
 109          void tran_psh() //每周期发送一次方案
 110          {
 111   1        unsigned char i;
 112   1      //  period_sch[0]=0x20;              //当前方案号 方案32作为备用降级方案
 113   1        period_sch[0]=now_step_schid;    //当前的阶段表号
 114   1        period_sch[2]=timeid;            //当前的时段号
 115   1        period_sch[5]=XBYTE[0XC006];     //当前星期号
 116   1      
 117   1        data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1;  //当前开始地址偏移量
C51 COMPILER V6.02  TRANSFLOW                                                              08/02/2006 14:44:13 PAGE 3   

 118   1        address=data_address;
 119   1        data_address=data_address+41;            //应答数据长度+1字节
 120   1      
 121   1        if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
 122   1      
 123   1        while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){};    //等待FGPA修改头尾
 124   1        XBYTE[0xa023]=0x01;                              //CPU修改头尾
 125   1        XBYTE[0xa024]=0X00;
 126   1        data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
 127   1        address=data_address;
 128   1        data_address=data_address+41;            //应答数据长度+1字节
 129   1        if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
 130   1        data_address--;
 131   1        XBYTE[0XA021]=data_address>>8;          //
 132   1        XBYTE[0XA022]=data_address;
 133   1        XBYTE[0XA023]=0X00;                      //CPU修改头尾结束
 134   1        XBYTE[0XA024]=0X00;
 135   1      
 136   1        for(i=0;i<6;i++){
 137   2                 tr_flagaddr=0XA030+5*i;
 138   2                 if(XBYTE[tr_flagaddr]==0x87)break;
 139   2                            }
 140   1        //if(i==6)return 1;

⌨️ 快捷键说明

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