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

📄 sram_cpld.lst

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


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

stmt level    source

   1          /*单片机通过cpld向sram写数据,然后通过cpld将数据从ram读出来*/
   2          
   3          
   4          //SA13---SA18由373锁存器提供,373的所存控制信号由P3.5提供,373的输入数据由P0口提供。373为下降沿锁存
   5          //SRAM每个页面有0X1FFF个单元,每个页面的地址从0X2000到0X3FFF。
   6          #include<reg51.h>
   7          #include<intrins.h>
   8          #include<absacc.h>
   9          #define unchar unsigned char 
  10          #define unint unsigned int 
  11          #define DisCmd XBYTE [0xC100]                     //7218控制字地址
  12          #define DisData XBYTE [0xC000]                    //7218数据口地址
  13          #define SRAMPage 0x00
  14          unchar keynum;
  15          sbit  P3_5=P3^5;
  16          //#define SRAM  XBYTE[0x2000]  //SRAM首地址
  17          //unchar a[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
  18          char distab[8]={0x13,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
  19          char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
  20                         //0,   1,    2,   3,   4,   5,   6,   7 
  21                          0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
  22                         //8    ,9   ,a   ,b   ,c    ,d  ,e    ,f  
  23                          0x80,0xbe,0x8b,0xee,0x84 };
  24                         //熄灭 H    L    P    -
  25          
  26          //***********************************************************************
  27          void delay100us(void)
  28          {
  29   1              unchar n;
  30   1              for(n=0;n<100;n++);
  31   1      
  32   1      }
  33          
  34          //***********************************************************************
  35          void display()
  36          {
  37   1         unchar i;      
  38   1         DisCmd=0xb0;            //采用软件译码
  39   1         for(i=0;i<8;i++)      //将distab中的数据送如7218
  40   1         {
  41   2           DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
  42   2         }
  43   1          
  44   1      }
  45          //***********************************************************************
  46          SRAM_Initial(unchar Page)  //SRAM初始化程序,向指定的页面写入8k字节
  47          {
  48   1         unchar  n,k;
  49   1         unchar xdata * SRAM;
  50   1         SRAM=0x2000;
  51   1          P3_5=0;
  52   1              _nop_();
  53   1              P3_5=1;
  54   1          _nop_();
  55   1              _nop_();
C51 COMPILER V7.06   SRAM_CPLD                                                             08/18/2005 18:44:02 PAGE 2   

  56   1              P0=Page;    //选中SRAM第一页
  57   1              _nop_();
  58   1              _nop_();
  59   1              P3_5=0;    //下降沿锁存页地址
  60   1               for(n=0;n<20;n++)
  61   1                      {       
  62   2                       for(k=0;k<0xff;k++)
  63   2                      { 
  64   3                            *SRAM++=n;
  65   3               }
  66   2                 delay100us();        
  67   2               }
  68   1      }       
  69          
  70          //***********************************************************************
  71          unchar SRAM_Read(unchar Page,int add)    //从指定的页中,读出指定地址连续8个字节的值,送到distab保存
  72            {
  73   1          unchar xdata * SRAM;
  74   1              //unchar  n;
  75   1              //SRAM=0x2000;
  76   1               SRAM=0xA000;
  77   1         P3_5=0;
  78   1          _nop_();
  79   1              P3_5=1;
  80   1          _nop_();
  81   1              _nop_();
  82   1              P0=Page;    //选中SRAM第一页
  83   1              _nop_();
  84   1              _nop_();
  85   1              P3_5=0;  //下降沿锁存页地址
  86   1          SRAM=0xA000+add;
  87   1          //for(n=0;n<8;n++)
  88   1               //{
  89   1             //distab[n]=*SRAM;
  90   1                // SRAM++;
  91   1              //  }
  92   1              return *SRAM;
  93   1          }
  94          
  95          //***********************************************************************
  96          SRAM_Write(unchar Page,int add,unchar dataa)    //从指定的页中,指定地址写入一个字节
  97            {
  98   1          unchar xdata * SRAM;
  99   1         //SRAM=0x2000;
 100   1          SRAM=0xA000;
 101   1         P3_5=0;
 102   1          _nop_();
 103   1              P3_5=1;
 104   1          _nop_();
 105   1              _nop_();
 106   1              P0=Page;    //选中SRAM第一页
 107   1              _nop_();
 108   1              _nop_();
 109   1              P3_5=0;  //下降沿锁存页地址
 110   1          SRAM=0xA000+add;
 111   1          *SRAM=dataa;
 112   1          }
 113          //***********************************************************************
 114          void intt0() interrupt 0 
 115          { 
 116   1       unchar i;
 117   1       EX0=0;              //关键盘中断,禁止相应其他按键
C51 COMPILER V7.06   SRAM_CPLD                                                             08/18/2005 18:44:02 PAGE 3   

 118   1       keynum=P1;          //从p1口读入键盘值
 119   1       keynum=keynum&0x0f; //取低四位;
 120   1       //keyprg(keynum);
 121   1       if(keynum==0x0f)
 122   1        {
 123   2          for(i=0;i<8;i++)
 124   2          distab[i]=SRAM_Read(0,i);
 125   2          display();
 126   2        }
 127   1       if(keynum<10)
 128   1        {  
 129   2          for(i=0;i<8;i++)
 130   2          SRAM_Write(0,i,keynum);
 131   2        }
 132   1      
 133   1       EX0=1;                    //开中断
 134   1      }
 135          
 136          //***********************************************************************
 137          void main(void)
 138          {
 139   1          
 140   1               display();
 141   1           EX0=1;
 142   1               EA=1;
 143   1              
 144   1           while(1);
 145   1      
 146   1      }
 147                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    261    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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