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

📄 x5045.lst

📁 V型机LCD程序2005-11-5,V型机LCD程序2005-11-5
💻 LST
字号:
C51 COMPILER V7.50   X5045                                                                 06/06/2005 09:07:48 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN x5045.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE x5045.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*-------------------------------------------------------
   2          X5045源程序
   3          
   4          --------------------------------------------------------*/
   5          #include "regx52.h"
   6          #include "x5045.h" 
   7          
   8          sbit SO=P2^5;
   9          sbit SI=P2^4;
  10          sbit SCK=P2^3;
  11          
  12          //片选择信号定义
  13          #define         RAMCS           0x00
  14          #define         LCDCS1          0x01
  15          #define         LCDCS2          0x02
  16          #define         LCDCS3          0x03
  17          #define         EEPCS           0x04//DOGCS
  18          #define         ROMCS           0x05
  19          #define         KEYCS           0x06
  20          #define         NOSET           0x07
  21          
  22          //25045可编程看门狗监控EEPROM指令集
  23          #define WREN 0x06 //00000110 //设置写使能锁存器(允许写操作)
  24          #define WRDI 0x04 //00000100 //复位写使能锁存器(禁止写操作)
  25          #define RDSR 0x05 //00000101 //读状态寄存器
  26          #define WRSR 0x01 //00000001 //写状态寄存器(块锁定)
  27          #define READ 0x03 //00000011 //从开始于所选地址的存储器列阵中读出数据
  28          #define WRTE 0x02 //00000010 //把数据写入开始于所选地址的存储器阵列中,1至4字节
  29          
  30          extern void p1tune(unsigned char temp);
  31          //#pragma save
  32          //#pragma OT(8,size)
  33          //写使能子程序
  34          void wren_dog(void)
  35          {      
  36   1              
  37   1              SCK=0;//
  38   1              p1tune(EEPCS);//CS=0
  39   1              Write8(WREN);//
  40   1              SCK=0;//for debug
  41   1              p1tune(RAMCS);//CS=1
  42   1      }
  43          /*
  44          //写禁止子程序
  45          void wrdi_dog(void)
  46          {
  47                  unsigned char data i;
  48                  SCK=0;
  49                  p1tune(EEPCS);
  50                  i++;
  51                  Write8(WRDI);
  52                  SCK=0;
  53                  p1tune(RAMCS);
  54          
  55          }
C51 COMPILER V7.50   X5045                                                                 06/06/2005 09:07:48 PAGE 2   

  56          */
  57          //写状态寄存器
  58          void wrsr_dog(unsigned char status_reg)
  59          {
  60   1              
  61   1              while(rdsr_dog()&0x01==1) ;
  62   1              wren_dog();//使能“写”
  63   1              
  64   1              p1tune(EEPCS);
  65   1              
  66   1              Write8(WRSR);
  67   1              Write8(status_reg);
  68   1              
  69   1              p1tune(RAMCS);
  70   1              wip_poll();
  71   1      }
  72          
  73          
  74          //读状态寄存器
  75          unsigned char rdsr_dog(void)
  76          {
  77   1              // unsigned char com=0x05;//RDSR;
  78   1              unsigned char data cTemp;
  79   1      
  80   1              SCK=0;
  81   1              p1tune(EEPCS);
  82   1              Write8(RDSR);
  83   1              cTemp=Read8();
  84   1              
  85   1              SCK=0;
  86   1              p1tune(RAMCS);
  87   1              return(cTemp);
  88   1      }
  89          
  90          //字节读
  91          unsigned char byte_read(bit HiHalf,unsigned char Addr)
  92          {
  93   1              unsigned char data EepromData,ReadInstruct=0x00;
  94   1              //while(rdsr_dog()&0x01==1) {}
  95   1              wren_dog();
  96   1                      
  97   1              SCK=0;
  98   1              p1tune(EEPCS);
  99   1              SO=1;
 100   1              SI=1;
 101   1              if(HiHalf)
 102   1                      ReadInstruct=0x08;
 103   1              //
 104   1              ReadInstruct|=READ;//READ;
 105   1              Write8(ReadInstruct);
 106   1              Write8(Addr);
 107   1              EepromData=Read8();
 108   1              SCK=0;
 109   1              p1tune(RAMCS);
 110   1              return(EepromData);
 111   1      }
 112          //字节写
 113          
 114          void byte_write(bit HiHalf,unsigned char Addr,unsigned char Data)
 115          {
 116   1              unsigned char data WriteInstuct=0x00;
 117   1              //while(rdsr_dog()&0x01==1) {}
C51 COMPILER V7.50   X5045                                                                 06/06/2005 09:07:48 PAGE 3   

 118   1              wren_dog();
 119   1              SCK=0;
 120   1              p1tune(EEPCS);
 121   1              //SO=1;
 122   1              //SI=1;
 123   1              if(HiHalf)
 124   1                      WriteInstuct=0x08;
 125   1              WriteInstuct|=WRTE;//WRTE;
 126   1              Write8(WriteInstuct);
 127   1              Write8(Addr);
 128   1              Write8(Data);
 129   1              p1tune(RAMCS);
 130   1              wip_poll();
 131   1      }
 132          
 133          //检验写操作是否结束。
 134          unsigned char wip_poll(void)
 135          {
 136   1              unsigned int i;
 137   1              unsigned char wip;
 138   1              for(i=0x1ff;i>0;i--) 
 139   1              {
 140   2                      wip=rdsr_dog();
 141   2                      wip&=0x01;
 142   2                      if(wip==0) break;
 143   2              }
 144   1              return(wip);
 145   1      
 146   1      }
 147          
 148          //单字节指令或数据写入X25045
 149          //在SI线上输入的数据在SCK的上升沿被锁存。
 150          void Write8(unsigned char byt)
 151          {
 152   1              unsigned char data i;
 153   1                         
 154   1              for(i=0;i<8;i++)
 155   1              {       if((byt&0x80)==0)//
 156   2                              SI=0;//
 157   2                      else//
 158   2                              SI=1;// //
 159   2                      SCK=0; 
 160   2                      SCK=1;
 161   2                      byt=byt<<1; 
 162   2              }
 163   1      
 164   1      }
 165          //单字节数据从X25045读到单片机
 166          //数据由SCK的下降沿输出到SO线上。
 167          unsigned char Read8(void)
 168          {
 169   1              unsigned char i,j;
 170   1              unsigned char byt;
 171   1              bit bTemp;
 172   1              
 173   1              for(i=0;i<8;i++)
 174   1              {
 175   2                      SCK=1;
 176   2                      j++;
 177   2                      SCK=0;
 178   2      
 179   2                      bTemp=SO; 
C51 COMPILER V7.50   X5045                                                                 06/06/2005 09:07:48 PAGE 4   

 180   2                                      
 181   2                      if(bTemp)
 182   2                              byt|=0x01;
 183   2                      if(i<7)
 184   2                              byt=byt<<1; 
 185   2              
 186   2              }
 187   1      
 188   1              return (byt);
 189   1      }
 190          
 191          //#pragma restore
 192           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    275    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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