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

📄 www.ourhc.cn.lst

📁 STC12C5A60S2精简开发板使用手机及其经典例程
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 16:07:52 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串口2演示程序9位数据
   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          功能    :STC12C5A60S2串口2演示程序9位数据
  17          注意    :下载完程序后请复位系统!!(切记!)
  18          *********************************************************************/
  19          #include "reg52.h"
  20          
  21          #define FOSC 18432000L
  22          #define BAUD 115200
  23          
  24          #define NONE_PARITY     0   //无校验位
  25          #define ODD_PARITY      1   //奇校验
  26          #define EVEN_PARITY     2   //偶校验
  27          #define MARK_PARITY     3   //标记校验
  28          #define SPACE_PARITY    4   //空校验
  29          
  30          #define PARITYBIT EVEN_PARITY
  31          
  32          #define S2RI  0x01
  33          #define S2TI  0x02
  34          #define S2RB8 0x04
  35          #define S2TB8 0x08
  36          
  37          sfr AUXR  = 0x8e;
  38          sfr S2CON = 0x9a;
  39          sfr S2BUF = 0x9b;
  40          sfr BRT   = 0x9c;
  41          sfr IE2   = 0xaf;
  42          
  43          bit busy;
  44          
  45          void SendData(char dat);
  46          void SendString(char *s);
  47          
  48          void main()
  49          {
  50   1      #if (PARITYBIT == NONE_PARITY)
                  S2CON = 0x5a;               //8位可变波特率 (无校验位)
              #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  53   1          S2CON = 0xda;               //9位可变波特率,校验位初始为1
  54   1      #elif (PARITYBIT == SPACE_PARITY)
                  S2CON = 0xd5;               //9位可变波特率,校验位初始为0
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 16:07:52 PAGE 2   

              #endif
  57   1      
  58   1          BRT = -(FOSC/32/BAUD);      //设置独立波特率发生器的重载初值
  59   1          AUXR = 0x14;                //独立波特率发生器工作在1T模式
  60   1          IE2 = 0x01;                 //使能串口2中断
  61   1          EA = 1;                     //开总中断
  62   1      
  63   1          SendString("STC12C5A60S2\r\nUart2 Test !\r\n");
  64   1          while(1);
  65   1      }
  66          
  67          void Uart2() interrupt 8 using 1
  68          {
  69   1          if (S2CON & S2RI)
  70   1          {
  71   2              S2CON &= ~S2RI;         //清除接收完成标志
  72   2              P0 = S2BUF;             //P0显示串口数据
  73   2              P2 = (S2CON & S2RB8);   //P2.2显示校验位
  74   2          }
  75   1          if (S2CON & S2TI)
  76   1          {
  77   2              S2CON &= ~S2TI;         //清除发送完成标志
  78   2              busy = 0;
  79   2          }
  80   1      }
  81          
  82          void SendData(char dat)
  83          {
  84   1          while (busy);               //等待上个数据发送完成
  85   1          ACC = dat;                  //取得偶校验位P
  86   1          if (P)                                              //根据P来设置串口数据的校验位
  87   1          {
  88   2      #if (PARITYBIT == ODD_PARITY)
                      S2CON &= ~S2TB8;        //置校验位为0
              #elif (PARITYBIT == EVEN_PARITY)
  91   2              S2CON |= S2TB8;         //置校验位为1
  92   2      #endif
  93   2          }
  94   1          else
  95   1          {
  96   2      #if (PARITYBIT == ODD_PARITY)
                      S2CON |= S2TB8;         //置校验位为1
              #elif (PARITYBIT == EVEN_PARITY)
  99   2              S2CON &= ~S2TB8;        //置校验位为0
 100   2      #endif
 101   2          }
 102   1          busy = 1;
 103   1          S2BUF = ACC;                //发送数据
 104   1      }
 105          
 106          void SendString(char *s)
 107          {
 108   1          while (*s)                  //判断字符串结束标志
 109   1          {
 110   2              SendData(*s++);         //发送字符
 111   2          }
 112   1      }
 113          
 114          
 115          /********************************************************************
 116                                        结束
 117          *********************************************************************/
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 16:07:52 PAGE 3   



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


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

⌨️ 快捷键说明

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