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

📄 uart.lst

📁 可以实现多路数据采集和传输系统
💻 LST
字号:
C51 COMPILER V7.06   UART                                                                  09/08/2007 06:50:51 PAGE 1   


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

stmt level    source

   1              #include <reg51.h>
   2                  #include "MAX485.h"
   3               uchar temp[8];
   4              data uchar Tbuffer[TCOUNT];  //定义发送缓冲区
   5              data uchar Rbuffer[RCOUNT];//定义接受缓冲器
   6              data unsigned char  Tpointer;          //定义当前位子指针
   7              data unsigned char  Rpointer;
   8              data uchar count_10ms; 
   9              uchar time_over_flag;
  10                  void serial_init(void);
  11              uchar RS485(){
  12   1           
  13   1                                 receive();
  14   1                                      if(Rbuffer[0] == 'A'){
  15   2                                      temp[2] = Rbuffer[2];
  16   2                      return(0);
  17   2                                 }
  18   1                                  else {
  19   2                                  return(-1);}
  20   1                         }
  21          
  22          void command(void){
  23   1                                Tpointer = 0x00;
  24   1                     while(Tpointer<TCOUNT) {                         /* 发送缓冲区初始化 */
  25   2                                              Tbuffer[Tpointer] = 'T';
  26   2                                              Tpointer++;
  27   2                                       }    
  28   1                                      send();
  29   1         }
  30          
  31          void send(void){
  32   1                      RE = 1;
  33   1                  Tpointer=0x00;
  34   1                      EA = 1;
  35   1                      TI = 1;
  36   1              while(Tpointer <= TCOUNT);            /* 等待全部数据帧发送完毕 */  
  37   1                      RE = 0;
  38   1              }
  39          
  40              void receive(void){
  41   1                      RE = 0;
  42   1              Rpointer = 0 ;
  43   1                      time_over_flag = 0;
  44   1                      EA = 0;
  45   1              ET0=1; //关闭定时器T0中断
  46   1              TR0=1; //停止定时器T0
  47   1                      ES = 1;
  48   1                      PS = 1;
  49   1                      EA = 1;
  50   1                  while((Rpointer+1 <= RCOUNT)&&!time_over_flag);
  51   1                  ET0 = 0;
  52   1                      TR0 = 0;
  53   1                      
  54   1              }
  55          
C51 COMPILER V7.06   UART                                                                  09/08/2007 06:50:51 PAGE 2   

  56              /* 发送中断服务函数 */
  57              void serial (void) interrupt 4 using 3 {
  58   1             if (RI){   
  59   2                     RI=0;                                     /* 清接收中断标志 */
  60   2                Rbuffer[Rpointer++]=SBUF;                                            
  61   2                if((Rpointer+1 == RCOUNT)&&!time_over_flag)  return;                   /* 如果已接收完全部数据帧, 则此次通信结

⌨️ 快捷键说明

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