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

📄 spi.lst

📁 基于51单片机的I2C通信程序
💻 LST
字号:
C51 COMPILER V7.06   SPI                                                                   09/09/2008 14:19:44 PAGE 1   


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

stmt level    source

   1          //-----------------------函数声明,变量定义--------------------------------------------------------
   2          #include <reg51.h>
   3          #include <intrins.h>
   4          sbit SCK=P1^0;                          // 将p1.0口模拟时钟输出
   5          sbit MOSI=P1^1;                         // 将p1.1口模拟主机输出
   6          sbit MISO=P1^2;                         // 将p1.1口模拟主机输入
   7          sbit SS1=P1^3;                          // 将p1.1口模拟片选
   8          
   9          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};                  
  10          
  11          //--------------------------------------------------------------------------------------------------
  12          // 函数名称: SPISendByte
  13          // 入口参数: ch
  14          // 函数功能: 发送一个字节
  15          //--------------------------------------------------------------------------------------------------
  16          void SPISendByte(unsigned char ch)
  17          { 
  18   1              unsigned char idata n=8;     // 向SDA上发送一位数据字节,共八位      
  19   1              SCK = 1 ;                  //时钟置高
  20   1              SS1 = 0 ;                  //选择从机
  21   1       
  22   1              while(n--)
  23   1              { 
  24   2                  delayNOP();
  25   2                  SCK = 0 ;                  //时钟置低
  26   2                if((ch&0x80) == 0x80)    // 若要发送的数据最高位为1则发送位1
  27   2                      {       
  28   3                        MOSI = 1;    // 传送位1
  29   3                      }
  30   2                      else
  31   2                      {  
  32   3                              MOSI = 0;    // 否则传送位0
  33   3                      }
  34   2                      delayNOP();
  35   2                      ch = ch<<1;        // 数据左移一位
  36   2                   SCK = 1 ;                  //时钟置高 
  37   2              }
  38   1      }
  39          void main()
  40          {
  41   1      SPISendByte(0x55);
  42   1      }
  43          //--------------------------------------------------------------------------------------------------
  44          // 函数名称: SPIreceiveByte
  45          // 返回接收的数据
  46          // 函数功能: 接收一字节子程序
  47          //--------------------------------------------------------------------------------------------------
  48          /*unsigned char SPIreceiveByte()
  49          {
  50                  unsigned char idata n=8;    // 从MISO线上读取一上数据字节,共八位
  51                  unsigned char tdata;
  52                  SCK = 1;                   //时钟为高
  53                  SS1 = 0;                   //选择从机
  54                  while(n--)
  55                  {       
C51 COMPILER V7.06   SPI                                                                   09/09/2008 14:19:44 PAGE 2   

  56                          delayNOP();
  57                          SCK = 0;                   //时钟为低
  58                          delayNOP();
  59                          tdata = tdata<<1;    // 左移一位,或_crol_(temp,1)
  60                          if(MISO == 1)
  61                                  tdata = tdata|0x01;    // 若接收到的位为1,则数据的最后一位置1
  62                          else 
  63                                  tdata = tdata&0xfe;    // 否则数据的最后一位置0
  64                          SCK=1;
  65                  }
  66                  return(tdata);
  67          }
  68          //--------------------------------------------------------------------------------------------------
  69          // 函数名称: SPIsend_receiveByte
  70          // 入口参数: ch
  71          // 返回接收的数据
  72          // 函数功能:串行输入/输出子程序
  73          //--------------------------------------------------------------------------------------------------
  74          unsigned char SPIsend_receiveByte(unsigned char ch)
  75          {
  76                  unsigned char idata n=8;    // 从MISO线上读取一上数据字节,共八位
  77                  unsigned char tdata;
  78                  SCK = 1;                   //时钟为高
  79                  SS1 = 0;                   //选择从机
  80                  while(n--)
  81                  {       
  82                       delayNOP();
  83                       SCK = 0;                   //时钟为低
  84                      delayNOP();
  85                           {
  86                          tdata = tdata<<1;    // 左移一位,或_crol_(temp,1)
  87                            if(MISO == 1)
  88                                  tdata = tdata|0x01;    // 若接收到的位为1,则数据的最后一位置1
  89                            else 
  90                                  tdata = tdata&0xfe;    // 否则数据的最后一位置0
  91                            }
  92                    {
  93                        if((ch&0x80) == 0x80)    // 若要发送的数据最高位为1则发送位1
  94                                     {       
  95                            MOSI = 1;    // 传送位1
  96                                      }
  97                                 else
  98                                      {  
  99                                    MOSI = 0;    // 否则传送位0
 100                                      }
 101                                  ch = ch<<1;        // 数据左移一位
 102                    }
 103                  SCK=1;
 104                  }
 105                  return(tdata);
 106          }*/


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

C51 COMPILER V7.06   SPI                                                                   09/09/2008 14:19:44 PAGE 3   


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

⌨️ 快捷键说明

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