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

📄 sram_cpld2.lst

📁 单片机与cpld总线方式通信
💻 LST
字号:
C51 COMPILER V7.06   SRAM_CPLD2                                                            07/29/2005 18:57:08 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SRAM_CPLD2
OBJECT MODULE PLACED IN Sram_cpld2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Sram_cpld2.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*mcu向通过fpga控制ram,写入时候,给地址a0ff分两次先后送如1和0,fpga向ram写入一定数据
   2          单片机从读数据时候,先向a0fe送入ram读取首地址,接着可以从此口读出数据 
   3          //*7218在硬件译码的时候,低四位数据进行译码,最高位控制小数点,其余三位无效*/
   4          // distab保存要显示的8位数据(每一位为一个字节)
   5          // ledtab为7218软件译码字型表 /dp,a,b,c,e,g,f,d
   6          #include<reg52.h>
   7          //#include<intrins.h>
   8          #include<absacc.h>
   9          #define DisCmd XBYTE [0xC100]                     //7218控制字地址
  10          #define DisData XBYTE [0xC000]                    //7218数据口地址
  11          #define scode 0xb0                                //7218软件译码方式命令字
  12          #define bcode 0x90                                //B码译码方式命令字
  13          #define hexcode 0xd0                              //软件译码方式命令字
  14          #define unchar  unsigned char 
  15          sbit P3_0=P3^0;
  16          sbit P1_0=P1^0;
  17          bit  enter=0;
  18          unchar keynum;                                       //按键号 
  19          unchar ledcursor=7;                                  //保存光标当前位置
  20          unchar distab[8]={0x12,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
  21          unchar temp[8];
  22          unchar code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
  23                               //0,  1,   2,   3,   4,   5,   6,  7 
  24                               0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
  25                               //8    9   ,a   ,b    c    d    e    f  
  26                               0x80,0xbe,0x8b,0xee,0x84,0xca,0xf6,0x00, 
  27                              //灭   H    L    P    -   r     q    .
  28                                                   0xb7,0xbb,0xfa};
  29                                                  //y,   u   n
  30          unchar add;                                            // ram读取首地址
  31          //***************************************************************************************    
  32           //void KeyprgF1(void){}
  33          // void KeyprgF2(void ){}
  34           //void KeyprgClear(void){}
  35           //void KeyprgEnter(void){} 
  36           //***************************************************************************************  
  37                  
  38          void display()
  39          {
  40   1         unchar i;   
  41   1         DisCmd=scode;             //采用软件译码
  42   1         for(i=0;i<8;i++)         //将distab中的数据送如7218
  43   1         {
  44   2           DisData =ledtab[distab[i]]; //查表转化并将字型送入7218
  45   2              
  46   2         }
  47   1         
  48   1      }
  49          //**************************************************************************************
  50          void KeyprgF2()                  //在光标当前位置设置小数点
  51          {
  52   1           unchar i;   
  53   1         DisCmd=scode;                //采用软件译码
  54   1         for(i=0;i<8;i++)             //将distab中的数据送如7218
  55   1         {
C51 COMPILER V7.06   SRAM_CPLD2                                                            07/29/2005 18:57:08 PAGE 2   

  56   2           if(i=ledcursor)
  57   2           temp[i]=ledtab[distab[i]]+0x80;
  58   2           temp[i]=ledtab[distab[i]]; //查表转化并将字型送入7218
  59   2               DisData=temp[i];
  60   2         }
  61   1          
  62   1      
  63   1      }
  64           //**************************************************************************************
  65          
  66          void keyprg(unchar key)                //键盘键值执行的程序
  67          {  
  68   1        unchar i;
  69   1        if((key<=9)&enter)
  70   1         {   
  71   2            distab[ledcursor]=keynum;        //键值送入distab最低位保存
  72   2                 if(ledcursor>0)                 //光标移位
  73   2                 ledcursor--;
  74   2             else 
  75   2                 ledcursor=7;
  76   2          display();                         //显示键值
  77   2              }
  78   1        
  79   1        else 
  80   1         {
  81   2          switch(key)
  82   2                 {
  83   3                   case 0x0D:  //加
  84   3                       if(distab[ledcursor]<0x09)
  85   3                            distab[ledcursor]++;
  86   3                else
  87   3                    distab[ledcursor]=0;
  88   3                    display();          //显示键值
  89   3                   break;     
  90   3                       case 0x0E:               //减
  91   3                        if(distab[ledcursor]>0)
  92   3                             distab[ledcursor]--;
  93   3                    
  94   3                       else
  95   3                     distab[ledcursor]=9;
  96   3                                 display(); //显示键值
  97   3                          
  98   3                   break;      
  99   3                       case 0x0A:             //KeyprgF1();
 100   3                       
 101   3               for(i=0;i<8;i++)      //将distab中的数据送如7218
 102   3                  {
 103   4                   distab[i]=0;
 104   4                   }
 105   3                            ledcursor=7;
 106   3                    display(); //显示键值
 107   3                   break;      
 108   3                       case 0x0B:            //功能键F2
 109   3                              KeyprgF2();
 110   3                   break;      
 111   3                       case 0x0C:           //KeyprgBack();
 112   3                       if(ledcursor<7)                //光标移位
 113   3                 ledcursor++;
 114   3             else 
 115   3                 ledcursor=0;
 116   3               display(); //显示键值
 117   3                   break;      
C51 COMPILER V7.06   SRAM_CPLD2                                                            07/29/2005 18:57:08 PAGE 3   

 118   3                       case 0x0F:       //KeyprgEnter();
 119   3                       enter=!enter;
 120   3                       display(); //显示键值
 121   3                   break;      
 122   3                       default:
 123   3                   break;      
 124   3                      }
 125   2               }
 126   1      
 127   1      }
 128          //**************************************************************************************
 129          void intt0() interrupt 0 
 130          { 
 131   1       unchar xdata *cpld;
 132   1      // unchar i;
 133   1       EX0=0;              //关键盘中断,禁止相应其他按键
 134   1       keynum=P1;          //从p1口读入键盘值
 135   1       keynum=keynum&0x0f; //取低四位;
 136   1       // keyprg(keynum); 
 137   1       if(keynum==0x0d)       //地址加一
 138   1         { 
 139   2           add+=10;
 140   2               distab[7]=add/100;
 141   2           distab[6]=(add%100)/10;
 142   2           distab[5]=(add%100)%10;
 143   2           distab[4]=0x10;
 144   2           distab[3]=0x10;
 145   2               display();
 146   2          }
 147   1       if(keynum==0x0e)       //地址减一
 148   1         { 
 149   2           add-=10;
 150   2               distab[7]=add/100;
 151   2           distab[6]=(add%100)/10;
 152   2           distab[5]=(add%100)%10;
 153   2           distab[4]=0x10;
 154   2           distab[3]=0x10;
 155   2               display();
 156   2          }
 157   1       if(keynum==0x0a)        //F1,写数据
 158   1        {
 159   2          distab[7]=0x10;
 160   2          distab[6]=0x10;
 161   2          distab[5]=0x10;
 162   2          distab[4]=0x10;
 163   2          distab[3]=0x10;
 164   2              distab[2]=0x0e;
 165   2          distab[1]=0x1a;
 166   2          distab[0]=0x0d;
 167   2          cpld=0xa0ff;
 168   2              *cpld=1;
 169   2              *cpld=0;
 170   2               display();
 171   2        }
 172   1        if(keynum==0x0b)         //送入首地址
 173   1        {
 174   2         distab[7]=add/100;
 175   2         distab[6]=(add%100)/10;
 176   2         distab[5]=(add%100)%10;
 177   2         distab[4]=0x10;
 178   2         distab[3]=0x10;
 179   2         cpld=0xA0fe;
C51 COMPILER V7.06   SRAM_CPLD2                                                            07/29/2005 18:57:08 PAGE 4   

 180   2         *cpld=add;
 181   2         display();
 182   2         }
 183   1        if(keynum==0x0f)        //enter读入一个数据
 184   1         {
 185   2          cpld=0x2000+add;
 186   2              //*cpld=add;
 187   2          distab[2]=(*cpld)/100;
 188   2          distab[1]=((*cpld)%100)/10;
 189   2          distab[0]=((*cpld)%100)%10;
 190   2          display();
 191   2         } 
 192   1         EX0=1;
 193   1      }
 194          
 195          void main()
 196          { 
 197   1         EX0=1;
 198   1         EA=1;
 199   1         display();
 200   1        while(1);
 201   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    503    ----
   CONSTANT SIZE    =     27    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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