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

📄 chengxu.lst

📁 可编程继电器模块
💻 LST
字号:
C51 COMPILER V8.05a   CHENGXU                                                              03/08/2012 13:59:51 PAGE 1   


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

line level    source

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

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

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

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


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 + -