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

📄 www.ourhc.cn.lst

📁 KZS1212-102Y_stc60s2双485单片机开发板
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:59:45 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:STC12C5A60S2单片机之串口通信互为主从
   5          使用芯片:STC12C5A60S2
   6          晶振:11.0592MHZ
   7          波特率:115200
   8          编译环境:Keil
   9          作者:zhangxinchun
  10          网站:www.ourhc.cn
  11          淘宝店:
  12          汇诚科技 http://ourhc.taobao.com
  13          郑兴电子直销部 http://shop68451856.taobao.com
  14          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!  
  15            
  16          
  17          *********************************************************************/
  18          #include "REG52.H"
  19          #include "INTRINS.H"
  20          
  21          #define FOSC        18432000L
  22          #define BAUD        (256 - FOSC / 32 / 115200)
  23          
  24          typedef unsigned char BYTE;
  25          typedef unsigned int WORD;
  26          typedef unsigned long DWORD;
  27          
  28          sfr  AUXR       =   0x8e;       //Auxiliary register
  29          
  30          sfr SPSTAT      =   0xcd;       //SPI status register
  31          #define SPIF        0x80        //SPSTAT.7
  32          #define WCOL        0x40        //SPSTAT.6
  33          sfr SPCTL       =   0xce;       //SPI control register
  34          #define SSIG        0x80        //SPCTL.7
  35          #define SPEN        0x40        //SPCTL.6
  36          #define DORD        0x20        //SPCTL.5
  37          #define MSTR        0x10        //SPCTL.4
  38          #define CPOL        0x08        //SPCTL.3
  39          #define CPHA        0x04        //SPCTL.2
  40          #define SPDHH       0x00        //CPU_CLK/4
  41          #define SPDH        0x01        //CPU_CLK/16
  42          #define SPDL        0x02        //CPU_CLK/64
  43          #define SPDLL       0x03        //CPU_CLK/128
  44          sfr SPDAT       =   0xcf;       //SPI data register
  45          sbit SPISS      =   P1^3;       //SPI slave select, connect to other MCU's SS(P1.4) pin
  46          
  47          void InitUart();
  48          void InitSPI();
  49          void SendUart(BYTE dat);        //send data to PC
  50          BYTE RecvUart();                //receive data from PC
  51          BYTE SPISwap(BYTE dat);         //swap SPI data between master and slave
  52          
  53          ///////////////////////////////////////////////////////////
  54          
  55          void main()
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:59:45 PAGE 2   

  56          {
  57   1          InitUart();                 //initial UART
  58   1          InitSPI();                  //initial SPI
  59   1      
  60   1          while (1)
  61   1          {
  62   2              if (RI)
  63   2              {
  64   3                  SPCTL = SPEN | MSTR; //set as master
  65   3                  SendUart(SPISwap(RecvUart()));
  66   3                  SPCTL = SPEN;               //reset as slave
  67   3              }
  68   2              if (SPSTAT & SPIF)
  69   2              {
  70   3                  SPSTAT = SPIF | WCOL; //clear SPI status
  71   3                  SPDAT = SPDAT;              //mov data from receive buffer to send buffer
  72   3              }
  73   2          }
  74   1      }
  75          
  76          ///////////////////////////////////////////////////////////
  77          
  78          void InitUart()
  79          {
  80   1          SCON = 0x5a;                //set UART mode as 8-bit variable baudrate
  81   1          TMOD = 0x20;                //timer1 as 8-bit auto reload mode
  82   1          AUXR = 0x40;                //timer1 work at 1T mode
  83   1          TH1 = TL1 = BAUD;           //115200 bps
  84   1          TR1 = 1;
  85   1      }
  86          
  87          ///////////////////////////////////////////////////////////
  88          
  89          void InitSPI()
  90          {
  91   1          SPDAT = 0;                  //initial SPI data
  92   1          SPSTAT = SPIF | WCOL;       //clear SPI status
  93   1          SPCTL = SPEN;               //slave mode
  94   1      }
  95          
  96          ///////////////////////////////////////////////////////////
  97          
  98          void SendUart(BYTE dat)
  99          {
 100   1          while (!TI);                //wait pre-data sent
 101   1          TI = 0;                     //clear TI flag
 102   1          SBUF = dat;                 //send current data
 103   1      }
 104          
 105          ///////////////////////////////////////////////////////////
 106          
 107          BYTE RecvUart()
 108          {
 109   1          while (!RI);                //wait receive complete
 110   1          RI = 0;                     //clear RI flag
 111   1          return SBUF;                //return receive data
 112   1      }
 113          
 114          ///////////////////////////////////////////////////////////
 115          
 116          BYTE SPISwap(BYTE dat)
 117          {
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:59:45 PAGE 3   

 118   1          SPISS = 0;                  //pull low slave SS
 119   1          SPDAT = dat;                //trigger SPI send
 120   1          while (!(SPSTAT & SPIF));   //wait send complete
 121   1          SPSTAT = SPIF | WCOL;       //clear SPI status
 122   1          SPISS = 1;                  //push high slave SS
 123   1          return SPDAT;               //return received SPI data
 124   1      }
 125          
 126          /********************************************************************
 127                                        结束
 128          *********************************************************************/


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