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

📄 www.ourhc.cn.lst

📁 STC12C5A60S2精简开发板使用手机及其经典例程
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:40:47 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 slave' 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:40:47 PAGE 2   

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

 117   1      #ifdef MASTER
                  SPISS = 0;                  //pull low slave SS
              #endif
 120   1          SPDAT = dat;                //trigger SPI send
 121   1          while (!(SPSTAT & SPIF));   //wait send complete
 122   1          SPSTAT = SPIF | WCOL;       //clear SPI status
 123   1      #ifdef MASTER
                  SPISS = 1;                  //push high slave SS
              #endif
 126   1          return SPDAT;               //return received SPI data
 127   1      }
 128          
 129          /********************************************************************
 130                                        结束
 131          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     70    ----
   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 + -