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

📄 www.ourhc.cn.lst

📁 STC15F104E单片机最小系统开发板
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 15:19:05 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          实现功能:STC15F104E系列单片机之串口通讯应用程序
   5          使用芯片:STC15F104E系列单片机
   6          晶振:11.0592MHZ
   7          波特率:9600
   8          编译环境:Keil
   9          作者:zhangxinchun
  10          网站:www.ourhc.cn
  11          淘宝店:
  12          汇诚科技 http://ourhc.taobao.com
  13          郑兴电子直销部 http://shop68451856.taobao.com
  14          声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  15          
  16          *********************************************************************/
  17          /********************************************************************
  18          单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
  19          单片机接收PC机发送的数据码表如下:
  20          
  21          01、开:PC发送'A'IO口输出高电平; 
  22          02、关:PC发送'B'IO口输出低电平; 
  23          03、输出状态查询:PC发送C;单片机返回输出状态‘A’表示开 ‘B’表示关;
  24          04、继电器状态取反:PC发送D     继电器状态取反
  25          *********************************************************************/
  26          #include "reg52.h" 
  27          #include <intrins.H>
  28          #define uchar unsigned char //宏定义字符型变量
  29          #define uint  unsigned int      //宏定义整型变量
  30          /********************************************************************
  31                                      波特率设定
  32          *********************************************************************/
  33          //#define BAUD 0XF400  //1200bps@ 11.0592MHZ
  34          //#define BAUD 0XFA00  //2400bps@ 11.0592MHZ
  35          //#define BAUD 0XFD00  //4800bps@ 11.0592MHZ
  36          #define BAUD 0XFE80  //9600bps@ 11.0592MHZ
  37          //#define BAUD 0XFF40  //19200bps@ 11.0592MHZ
  38          //#define BAUD 0XFFA0  //38400bps@ 11.0592MHZ
  39          
  40          uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
  41          sbit  P33=P3^3; //定义继电器控制输出脚
  42          
  43          /********************************************************************
  44                                      定义特殊寄存器
  45          *********************************************************************/
  46          sfr AUXR  =  0x8E;   //辅助寄存器
  47          sbit RXB=P3^0;
  48          sbit TXB=P3^1;
  49          /********************************************************************
  50                                     定义数据类型
  51          *********************************************************************/
  52          uchar TBUF,RBUF;
  53          uchar TDAT,RDAT;
  54          uchar TCNT,RCNT;
  55          uchar TBIT,RBIT;
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 15:19:05 PAGE 2   

  56          uint TING,RING;
  57          uint TEND,REND;
  58          
  59          void UART_INIT(); //声明函数
  60          
  61          uchar t,r;                //定义数据类型
  62          uchar but[16];    //数据存储数组
  63          /********************************************************************
  64                                      延时函数
  65          *********************************************************************/
  66          void delay(uchar t)
  67          {
  68   1        uchar i,j;
  69   1         for(i=0;i<t;i++)
  70   1         {
  71   2               for(j=13;j>0;j--);
  72   2               { ;
  73   3               }
  74   2         }
  75   1      }
  76          /********************************************************************
  77                                      主函数
  78          *********************************************************************/
  79          void main()
  80          {
  81   1      
  82   1      TMOD=0X00;         //定时器T0设定
  83   1      AUXR=0X80;         //辅助寄存器
  84   1      TL0=BAUD;          //十六位寄存器
  85   1      TH0=BAUD>>8;   //十六位寄存器
  86   1      TR0=1;             //开定时器
  87   1      ET0=1;
  88   1      PT0=1;
  89   1      EA=1;              //开总中断
  90   1      UART_INIT();   //串口初始化
  91   1      while(1)           //无线循环
  92   1      {
  93   2      if(REND)
  94   2        {
  95   3         REND=0;
  96   3         r++;
  97   3         //but[r++&0x0f]=RBUF;
  98   3         dat=RBUF;
  99   3         }
 100   2        if(TEND)
 101   2         {
 102   3         if(t!=r)
 103   3           {
 104   4               TEND=0;
 105   4      //       TBUF=dat;
 106   4      switch(dat) //接收数据判断
 107   4      {
 108   5      uchar k;
 109   5      k=10;
 110   5      case 'A': P33=1;delay(k);TBUF = dat;dat=0xee;break;        //  开,并返回数据值
 111   5      case 'B': P33=0;delay(k);TBUF = dat;dat=0xee;break;        //  关,并返回数据值
 112   5      case 'C': if(P33==1){TBUF = 'A';}if(P33==0){TBUF = 'B';}delay(k);dat=0xee;break;           //  读输出口状态,并返
             -回数据值
 113   5      case 'D': P33=!P33;delay(k);TBUF = dat;dat=0xee;break;  //  输出口取反
 114   5      default:break;                                     //  跳出
 115   5      }
 116   4               t++;
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 15:19:05 PAGE 3   

 117   4               //TBUF=but[t++&0x0f];
 118   4               TING=1;
 119   4               }
 120   3         }
 121   2      }
 122   1      }
 123          
 124          /********************************************************************
 125                                      定时器T0
 126          *********************************************************************/
 127          void tm0()interrupt 1 using 1
 128          {
 129   1       if(RING)
 130   1        {
 131   2         if(--RCNT==0)
 132   2          {
 133   3               RCNT=3;
 134   3               if(--RBIT==0)
 135   3              {
 136   4                       RBUF=RDAT;
 137   4                       RING=0;
 138   4               REND=1;
 139   4                      }
 140   3                      else
 141   3                      {
 142   4                       RDAT>>=1;
 143   4                       if(RXB)RDAT|=0X80;
 144   4                      }
 145   3      
 146   3          }
 147   2        }
 148   1          else if(!RXB)
 149   1              {
 150   2               RING=1;
 151   2               RCNT=4;
 152   2               RBIT=9;
 153   2              }
 154   1          if(--TCNT==0)
 155   1              {
 156   2              TCNT=3;
 157   2              if(TING)
 158   2              {
 159   3                if(TBIT==0)
 160   3                {
 161   4                TXB=0;
 162   4                TDAT=TBUF;
 163   4                TBIT=9;
 164   4                }
 165   3                else
 166   3                {
 167   4                TDAT>>=1;
 168   4                if(--TBIT==0)
 169   4                {
 170   5                 TXB=1;
 171   5                 TING=0;
 172   5                 TEND=1;
 173   5                }
 174   4                else
 175   4                {
 176   5                TXB=CY;
 177   5                }
 178   4                }
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 15:19:05 PAGE 4   

 179   3              }
 180   2              }
 181   1      }
 182          /********************************************************************
 183                        功能:串口初始化,波特率9600,方式1
 184          *********************************************************************/
 185          void UART_INIT()
 186          {
 187   1      TING=0;
 188   1      RING=0;
 189   1      
 190   1      TEND=1;
 191   1      REND=0;
 192   1      
 193   1      TCNT=0;
 194   1      RCNT=0;
 195   1      }
 196          
 197          /********************************************************************
 198                                      结束
 199          *********************************************************************/


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