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

📄 serial_port.lst

📁 本程序能够实现温度测量
💻 LST
字号:
C51 COMPILER V7.06   SERIAL_PORT                                                           11/18/2006 22:47:03 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SERIAL_PORT
OBJECT MODULE PLACED IN serial_port.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial_port.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*---------------------------------------------------
   2           serial_port.c file
   3           Creat by Computer-lov Date: 2005.7.19
   4           Last edit date:2005.11.17
   5           Copyright(C) 2005-2015 Computer-lov
   6           All rights reserved
   7           Welcome to my Blog: Http://computer00.21ic.org
   8          -----------------------------------------------------*/
   9          
  10          #include <serial_port.h>
  11          #include <hardware.h>
  12          
  13          
  14          unsigned char Sending;
  15          
  16          
  17          //**************************************************************************************
  18          void InitComport(void)  //串口初始化函数,使用11.0592M晶体
  19          {
  20   1       EA=0;
  21   1       TMOD=0x21;    //定时器0工作在模式1,定时器1工作在模式2
  22   1       SCON=0x50;    //串口工作在模式1
  23   1       TCON=0x05;
  24   1       TH1=0xFF;     //57600bps
  25   1       TL1=0xFF;
  26   1      // TH1=0xE8;
  27   1      // TL1=0xE8;
  28   1       PCON=0x80;    //串口波特率加倍
  29   1       ES=1;         //串行中断允许
  30   1       TR1=1;        //启动定时器1
  31   1       REN=1;        //允许接收 
  32   1       EA=1;         //允许中断
  33   1      }
  34          //****************************************************************************************
  35          
  36          
  37          unsigned char Buffer[10];
  38          unsigned char OK;
  39          unsigned char Cancel;
  40          
  41          
  42          //*******************************   串口中断处理        ***********************************
  43          void SerialPort(void) interrupt 4
  44          {
  45   1       unsigned char i;
  46   1       if(RI)    //收到数据
  47   1        {
  48   2         RI=0;                     //清中断请求
  49   2         if(SBUF=='T')   //收到请求连接的命令
  50   2          {
  51   3           TI=0;
  52   3           SBUF='A';   //则返回A应答
  53   3           while(!TI);  //等待发送完毕
  54   3           TI=0;
  55   3          }
C51 COMPILER V7.06   SERIAL_PORT                                                           11/18/2006 22:47:03 PAGE 2   

  56   2         if(SBUF=='C')    //接收到取消命令
  57   2          {
  58   3           TI=0;
  59   3           Cancel=1;    //取消置1
  60   3          }
  61   2         if(SBUF==0xAA)  //0xAA、0x55表示参数开始
  62   2          {
  63   3           while(!RI);  //等待下一个数据
  64   3           RI=0;
  65   3           if(SBUF==0x55)  //要连续收到0xAA和0x55后才能开始接收参数
  66   3            {
  67   4             for(i=0;i<10;i++)  //连续接收10个参数
  68   4              {
  69   5               while(!RI);
  70   5               RI=0;
  71   5               Buffer[i]=SBUF;  //数据保存在Buffer中
  72   5              }
  73   4             while(!RI);
  74   4             RI=0;
  75   4             if(SBUF==0x55)  //参数包以0x55结束,如果是,则表示参数接收正确
  76   4              {
  77   5               OK=1;  //则OK置1
  78   5               Cancel=0;
  79   5               return;
  80   5              }
  81   4             else  //若包尾错误,则OK置0
  82   4              {
  83   5               OK=0;
  84   5               return;
  85   5              }
  86   4            }
  87   3           else
  88   3            {
  89   4             return;
  90   4            }
  91   3          }
  92   2         return;
  93   2        }
  94   1       else  //发送完一字节数据
  95   1        {
  96   2         TI=0;
  97   2         Sending=0;               //清正在发送标志
  98   2        }
  99   1      }
 100          //*****************************************************************************************
 101          
 102          //*****************************************************************************************
 103          void SendToComport(unsigned char d)       //往串口发送一字节数据
 104          {
 105   1       Sending=1;
 106   1       SBUF=d;
 107   1       while(Sending);
 108   1      }
 109          //*****************************************************************************************
 110          
 111          //*****************************************************************************************
 112          //发送一个字符串
 113          /*
 114          void prints(unsigned char * pd,unsigned char line_feed)
 115          {
 116           while((*pd)!='\0')
 117            {
C51 COMPILER V7.06   SERIAL_PORT                                                           11/18/2006 22:47:03 PAGE 3   

 118             SendToComport(*pd);
 119             pd++;
 120            }
 121           if(line_feed)
 122           {
 123            SendToComport(13);
 124            SendToComport(10);
 125           }
 126          }
 127          */
 128          //****************************************************************************************
 129          
 130          //****************************************************************************************
 131          //将16bit的数分成4个4bit的发送
 132          void PrintHex(unsigned int x)
 133          {
 134   1       SendToComport((x>>12)&0x0F);
 135   1       SendToComport((x>>8)&0x0F);
 136   1       SendToComport(((unsigned char)x>>4)&0x0F);
 137   1       SendToComport((unsigned char)x&0x0F);
 138   1      }
 139          //*****************************************************************************************
 140          
 141          
 142          //*****************************************************************************************
 143          /*
 144          void PrintLongInt(unsigned long int x)  //将整数转按十进制字符串发送
 145          {
 146           signed char i;
 147           unsigned char display_buffer[10];
 148           display_buffer[10]=0;
 149           for(i=9;i>=0;i--)
 150            {
 151             display_buffer[i]='0'+x%10;
 152             x/=10;
 153            }
 154           for(i=0;i<9;i++)
 155            {
 156             if(display_buffer[i]!='0')break;
 157            }
 158           for(;i<10;i++)SendToComport(display_buffer[i]);
 159          }
 160          */
 161          //*****************************************************************************************


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