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

📄 lcddram.lst

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


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

stmt level    source

   1          #include <absacc.h>
   2          #include <reg51.h>
   3          //sbit cs_dram=P3^2;
   4          sbit busy=P1^5;
   5          
   6          extern unsigned int xdata data_address;
   7          extern unsigned int xdata address;
   8          extern unsigned int xdata tr_flagaddr;
   9          
  10          extern unsigned char xdata now_day_planid;
  11          extern unsigned char xdata timeid;
  12          extern unsigned char xdata now_schemeid;
  13          extern unsigned char xdata now_step_schid;
  14          extern unsigned char xdata step_counter;
  15          extern unsigned char xdata now_step_uncount;
  16          extern unsigned char xdata  led83[30],led82[5];
  17          extern unsigned char xdata step_num;
  18                 unsigned char xdata tt,ttd;
  19                 unsigned int  xdata utemp;
  20          unsigned char cpu_fpga_set(unsigned char flag,unsigned int ptr,unsigned int len)
  21          {
  22   1        unsigned int i;
  23   1        data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1;
  24   1        address=data_address;
  25   1        data_address=data_address+len;            //应答数据长度1字节
  26   1        if(data_address>0xa7f0)data_address=data_address-0xa7f0+0xa080;
  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+len;            //应答数据长度1字节
  33   1        if(data_address>0xa7f0)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        XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
  40   1        XBYTE[tr_flagaddr+2]=address;
  41   1        XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
  42   1        XBYTE[tr_flagaddr+4]=data_address;
  43   1        address=address+0xa000;                 //发送应答数据
  44   1        XBYTE[address]=flag;
  45   1        address++;
  46   1        for(i=0;i<len;i++){
  47   2            XBYTE[address+i]=XBYTE[ptr+i];
  48   2                           }
  49   1        XBYTE[tr_flagaddr]=0x01;
  50   1        return 1;
  51   1      }
  52          deal_lcddram()
  53          {
  54   1       unsigned char flag;
  55   1       unsigned char id;
C51 COMPILER V6.02  LCDDRAM                                                                08/02/2006 14:44:14 PAGE 2   

  56   1       unsigned char idcode;
  57   1       unsigned int i,j;
  58   1      //查询
  59   1       do{}while(busy==0);
  60   1       flag=XBYTE[0XC408];
  61   1       do{}while(busy==0);
  62   1       id=XBYTE[0XC40A];
  63   1       do{}while(busy==0);
  64   1       idcode=XBYTE[0XC40c];
  65   1       if(flag==1){
  66   2          switch(id){
  67   3                  case 0x80: //do{}while(busy==0);XBYTE[0XC410]=0XC0;
  68   3                             do{}while(busy==0);XBYTE[0XC410]=XBYTE[0X8002];
  69   3                             do{}while(busy==0);XBYTE[0XC411]=XBYTE[0X8003];
  70   3                             do{}while(busy==0);XBYTE[0XC412]=XBYTE[0X8004];
  71   3                             do{}while(busy==0);XBYTE[0XC413]=XBYTE[0X8005];
  72   3                             do{}while(busy==0);XBYTE[0XC414]=XBYTE[0X8006];
  73   3                             do{}while(busy==0);XBYTE[0XC415]=XBYTE[0X8007];
  74   3                             do{}while(busy==0);XBYTE[0XC416]=XBYTE[0X8008];
  75   3                             do{}while(busy==0);XBYTE[0XC408]=0;
  76   3                             break;
  77   3                  case 0x82: do{}while(busy==0);XBYTE[0XC410]=0XC2;
  78   3                             do{}while(busy==0);XBYTE[0XC411]=0x20;                   //最大输出通道数
  79   3                             do{}while(busy==0);XBYTE[0XC412]=0X20;                   //支持阶段表数
  80   3                             do{}while(busy==0);XBYTE[0XC413]=0X20;                   //一个阶段表支持的最大阶段
             -数
  81   3                             do{}while(busy==0);XBYTE[0XC414]=0X20;                   //最大控制方案数
  82   3                             do{}while(busy==0);XBYTE[0XC415]=0X20;                   //最大日计划数
  83   3                             do{}while(busy==0);XBYTE[0XC416]=0X18;                   //一个日计划支持的最大时段
  84   3                             do{}while(busy==0);XBYTE[0XC417]=XBYTE[0X72E2];          //开机时间小时
  85   3                             do{}while(busy==0);XBYTE[0XC418]=XBYTE[0X72E3];          //开机时间分钟
  86   3                             do{}while(busy==0);XBYTE[0XC419]=XBYTE[0X72E4];          //关机时间小时
  87   3                             do{}while(busy==0);XBYTE[0XC41a]=XBYTE[0X72E5];          //关机时间分钟
  88   3                             do{}while(busy==0);XBYTE[0XC41b]=XBYTE[0X72E6];          //关机后状态
  89   3                             do{}while(busy==0);XBYTE[0XC41c]=XBYTE[0X8000];
  90   3                             do{}while(busy==0);XBYTE[0XC41d]=XBYTE[0X8001];
  91   3                             do{}while(busy==0);XBYTE[0XC408]=0;
  92   3                             break;
  93   3      
  94   3                  case 0x83: do{}while(busy==0);XBYTE[0XC410]=0XC3;
  95   3                             do{}while(busy==0);XBYTE[0XC411]=XBYTE[0XC009];  //year
  96   3                             do{}while(busy==0);XBYTE[0XC412]=XBYTE[0XC008];  //month
  97   3                             do{}while(busy==0);XBYTE[0XC413]=XBYTE[0XC007];  //date
  98   3                             do{}while(busy==0);XBYTE[0XC414]=XBYTE[0XC004];  //hour
  99   3                             do{}while(busy==0);XBYTE[0XC415]=XBYTE[0XC002];  //min
 100   3                             do{}while(busy==0);XBYTE[0XC416]=XBYTE[0XC000];  //sec
 101   3                             do{}while(busy==0);XBYTE[0XC417]=XBYTE[0XC006];  //day
 102   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 103   3                             break;
 104   3                  case 0x84: do{}while(busy==0);XBYTE[0XC410]=0XC4;       //相位信息
 105   3                             if(idcode==0){
 106   4                               j=XBYTE[0XC40D];
 107   4                               j=(j-1)*18;
 108   4                                for(i=0;i<18;i++){
 109   5                                             do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5001+i+j];
 110   5                                                  }
 111   4                                           }else{
 112   4                                    j=XBYTE[0XC40D];
 113   4                                    j=(j-1)*18;
 114   4                                    for(i=0;i<18;i++){
 115   5                                             do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5122+i+j];
 116   5                                                       }
C51 COMPILER V6.02  LCDDRAM                                                                08/02/2006 14:44:14 PAGE 3   

 117   4                                                 }
 118   3      
 119   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 120   3                             break;
 121   3                  case 0x85: XBYTE[0XC410]=0XC5;       //阶段表
 122   3                             j=(idcode-1)*98;
 123   3                             for(i=0;i<98;i++){
 124   4                                  if(i==4){
 125   5                                           do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5242+i+j]+1;
 126   5                                           }else{
 127   5                                           do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5242+i+j];
 128   5                                                 }
 129   4                                               }
 130   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 131   3                             break;
 132   3                  case 0x86: do{}while(busy==0);XBYTE[0XC410]=0XC6;      //控制方案
 133   3                             j=(idcode-1)*41;
 134   3                             for(i=0;i<41;i++){
 135   4                                  do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5e82+i+j];
 136   4                                              }
 137   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 138   3                             break;
 139   3               //   case 0x87:break;
 140   3                  case 0x88: do{}while(busy==0);XBYTE[0XC410]=0XC8;      //日计划
 141   3                             j=(idcode-1)*74;
 142   3                             for(i=0;i<74;i++){
 143   4      
 144   4                                  do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x63A2+i+j];
 145   4      
 146   4                                              }
 147   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 148   3                             break;
 149   3                  case 0x89: do{}while(busy==0);XBYTE[0XC410]=0XC9;      //日计划
 150   3                             j=XBYTE[0XC40c];
 151   3                             j=(j-1)*6;
 152   3                             for(i=0;i<60;i++){

⌨️ 快捷键说明

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