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

📄 5045.lst

📁 x5045三线制总线读写程序,通过keil C验证OK!
💻 LST
字号:
C51 COMPILER V7.02a   5045                                                                 09/29/2005 11:45:22 PAGE 1   


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

stmt level    source

   1          
   2          #include "spi.h"
   3          #include "serial.h"
   4          #include <intrins.h>
   5          #define NOP()  // _nop_();_nop_()
   6          
   7          //看门狗写使能子程序
   8            void wren_dog(void)
   9            {
  10   1              SPI_SCK=0;
  11   1              SPI_CS=0;
  12   1              in_byte(WREN);
  13   1              SPI_SCK=0;
  14   1              SPI_CS=1;
  15   1        }
  16          
  17          //看门狗写禁止子程序
  18            void wrdi_dog(void)
  19           {
  20   1              SPI_SCK=0;
  21   1              SPI_CS=0;
  22   1              in_byte(WRDI);
  23   1              SPI_SCK=0;
  24   1              SPI_CS=1;
  25   1        }
  26          
  27          
  28          
  29          //写状态寄存器
  30            void wrsr_dog(unsigned char status_reg)
  31           {
  32   1              SPI_SCK=0;
  33   1              SPI_CS=0;
  34   1              in_byte(WRSR);
  35   1              in_byte(status_reg);
  36   1              SPI_SCK=0;
  37   1              SPI_CS=1;
  38   1              wip_poll();
  39   1        }
  40          
  41          
  42          //读状态寄存器
  43           unsigned char rdsr_dog(void)
  44           {
  45   1              unsigned char reg1;
  46   1              SPI_SCK=0;
  47   1              SPI_CS=0;
  48   1              in_byte(RDSR);
  49   1              reg1=out_byte();
  50   1              SPI_SCK=0;
  51   1              SPI_CS=1;
  52   1              return(reg1);
  53   1       }
  54          
  55          //字节读
C51 COMPILER V7.02a   5045                                                                 09/29/2005 11:45:22 PAGE 2   

  56          //H,地址高字节;L地址低字节;data_dog读出的数据
  57            unsigned char byte_read(unsigned char H,unsigned char L)
  58           {
  59   1              unsigned char data_dog,add=0;
  60   1              SPI_SCK=0;
  61   1              SPI_CS=0;
  62   1              add=H<<3;
  63   1              add|=READ;//READ;
  64   1              in_byte(add);
  65   1              add=L;
  66   1              in_byte(add);
  67   1              data_dog=out_byte();
  68   1              SPI_SCK=0;
  69   1              SPI_CS=1;
  70   1              return(data_dog);
  71   1        }
  72          //字节写
  73          //H,地址高字节;L地址低字节;D写入的数据
  74            void byte_write(unsigned char H,unsigned char L,unsigned char D)
  75           {
  76   1              unsigned char data_dog,add=0;
  77   1              SPI_SCK=0;
  78   1              SPI_CS=0;
  79   1              add=H<<3;
  80   1              add|=WRTE;//WRTE;
  81   1              in_byte(add);
  82   1              add=L;
  83   1              in_byte(add);
  84   1              data_dog=D;
  85   1              in_byte(data_dog);
  86   1              SPI_SCK=0;
  87   1              SPI_CS=1;
  88   1              wip_poll();
  89   1        }
  90          
  91          //复位看门狗子程序
  92            void rest_dog(void)
  93           {
  94   1              SPI_CS=0;
  95   1              SPI_CS=1;
  96   1        }
  97          
  98          //检验写操作是否结束。
  99            unsigned char wip_poll(void)
 100           {
 101   1              unsigned char i;
 102   1              unsigned char wip;
 103   1              for(i=0xff;i>=1;i--) 
 104   1              {
 105   2                      wip=rdsr_dog();
 106   2                      wip&=0x01;
 107   2                      if(wip==0) break;
 108   2          }
 109   1         return(wip);
 110   1       }
 111          
 112          //单字节指令或数据写入X25045
 113          //在SPI_SI线上输入的数据在SPI_SCK的上升沿被锁存。
 114            void in_byte(unsigned char byt)
 115            {
 116   1              unsigned char i;
 117   1              for(i=0;i<8;i++)
C51 COMPILER V7.02a   5045                                                                 09/29/2005 11:45:22 PAGE 3   

 118   1              {
 119   2                      SPI_SCK=0; 
 120   2              SPI_SI=byt&0x80;
 121   2                      SPI_SCK=1;
 122   2                      byt<<=1; 
 123   2              }
 124   1          SPI_SI=0;
 125   1        }
 126          
 127          //单字节数据从X25045读到单片机
 128          //数据由SPI_SCK的下降沿输出到SPI_SO线上。
 129            unsigned char out_byte(void)
 130            {
 131   1              unsigned char i;
 132   1              unsigned char byt=0;
 133   1              for(i=0;i<8;i++)
 134   1              {
 135   2                      byt=byt<<1;
 136   2                      SPI_SCK=1;
 137   2                      SPI_SCK=0;
 138   2                      byt|=SPI_SO;
 139   2              }
 140   1              return (byt);
 141   1        }      
 142          
 143          
 144          /**************************************************/
 145          void main(void)
 146          {
 147   1        unsigned char D; 
 148   1        unsigned char add_H=0x01,add_L=0x00;
 149   1        unsigned char ucDATA=0x11;
 150   1        init_serial();
 151   1        while(1)
 152   1              {
 153   2                      //wren_dog();
 154   2                      //wrsr_dog(0);
 155   2                      //wren_dog();   
 156   2                      byte_write(add_H,(add_L++),(ucDATA++));
 157   2                      D=byte_read(add_H,add_L); 
 158   2                  PutChar(D);  
 159   2              
 160   2      
 161   2           }
 162   1      }
 163          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    256    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   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 + -