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

📄 uart1.lst

📁 通过车载终端采集GPS数据
💻 LST
字号:
C51 COMPILER V7.09   UART1                                                                 09/25/2008 11:56:18 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE UART1
OBJECT MODULE PLACED IN .\output\bin\uart1.obj
COMPILER INVOKED BY: C:\Keil709\C51\BIN\C51.EXE mcu\uart1.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gps\;i
                    -nter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\uart1.lst) OBJECT(.\output\bin\uart1.ob
                    -j)

line level    source

   1          /***************************************************************
   2          *77LE516的串口0!!!程序
   3          *为GPS定位程序使用。此应用中只是接收GPS发送过来的数据
   4          *在一体机中使用串口0!!!!
   5          ***************************************************************/
   6          #include "w77e532.h"
   7          #include "uart.h"
   8          #include "mcuInit.h"
   9          #include "string.h"
  10          
  11          /*全双工串口数据结构*/
  12          typedef struct 
  13          {
  14              unsigned char rxState;          /*接收状态标志*/
  15              unsigned char rxTimer;          /*接收超时控制*/
  16              unsigned int rxLen;            /*接收数据长度*/
  17              unsigned char *rxPtr;           /*当前接收指针*/
  18          }GPS_UART_INFO;
  19          
  20          
  21          GPS_UART_INFO uart1;
  22          
  23          #define UART1_BUFFER_LENGTH     612
  24          
  25          unsigned char uart1RxBuffer[UART1_BUFFER_LENGTH];
  26          
  27          
  28          
  29          /*串口1采用定时器1作为波特率发生器*/
  30          void uart1_init(void)
  31          {
  32   1          uart1.rxState = 0;
  33   1          uart1.rxLen = 0;
  34   1          uart1.rxTimer = 0;
  35   1          uart1.rxPtr = uart1RxBuffer;
  36   1      
  37   1          memset(uart1RxBuffer, 0, sizeof(uart1RxBuffer) );
  38   1      
  39   1          /*initialize serial port*/
  40   1      #ifdef UART_PCON
                  PCON |= 0x80;
              #endif
  43   1      
  44   1          T2CON = 0x30;   /**/
  45   1          T2MOD = 0;
  46   1      
  47   1      
  48   1              RCAP2L = T2BAUD_9600;
  49   1              RCAP2H = T2BAUD_9600 >> 8;
  50   1      
  51   1          TR2 = 1;        /*波特率发生器工作*/
  52   1      
  53   1          /*初始化串口0*/ 
C51 COMPILER V7.09   UART1                                                                 09/25/2008 11:56:18 PAGE 2   

  54   1          SCON  = SCON_INIT;
  55   1          
  56   1      //    REN1 = 1;        /*允许接收数据*///old主机
  57   1          ES0 = 1;
  58   1          REN = 1;
  59   1      }
  60          
  61          void uart1_timeout(void) using 1
  62          {
  63   1      
  64   1          if( uart1.rxState == 1)
  65   1          {
  66   2              uart1.rxTimer ++;
  67   2      
  68   2              if( uart1.rxTimer > 20)
  69   2              {/*至少25ms未收到数据,认为接收到一帧数据*/
  70   3                  uart1.rxState = PACKET_RECEIVE_OK;
  71   3          //        REN1 = 0;            /*禁止接收,准备处理一帧数据*/////old主机
  72   3                  REN = 0;
  73   3              }
  74   2          }
  75   1          else if( uart1.rxState != PACKET_RECEIVE_OK )
  76   1          {
  77   2              uart1.rxState = 0;
  78   2              uart1.rxLen = 0;
  79   2      //        REN1 = 1;//old主机
  80   2              REN = 1;
  81   2          }
  82   1      }
  83          
  84          void enable_rcv_gps(void)
  85          {
  86   1      
  87   1          uart1.rxState = 0;
  88   1          uart1.rxLen = 0;
  89   1          uart1.rxPtr = uart1RxBuffer;
  90   1      //    REN1 = 1;//old主机
  91   1          REN = 1;
  92   1      }
  93          
  94          /********************************************************
  95          *查看是否收到一个GPS数据包
  96          *return 0:ERROR, \
  97          *other: 接收到的GPS数据包长度
  98          *********************************************************/
  99          int get_gps_packet(char **retPtr)
 100          {
 101   1      
 102   1          *retPtr = uart1RxBuffer;
 103   1      
 104   1          if(uart1.rxState == PACKET_RECEIVE_OK )
 105   1          {
 106   2              uart1.rxState = 0;
 107   2              return uart1.rxLen;
 108   2          }
 109   1          else
 110   1          {
 111   2              return 0;
 112   2          }
 113   1              
 114   1      }
 115          
C51 COMPILER V7.09   UART1                                                                 09/25/2008 11:56:18 PAGE 3   

 116          
 117          /*串口接收中断函数*/
 118          void ISR1uart(void) interrupt 4//7//old主机
 119          {    
 120   1          if(RI)//RI1)//old主机
 121   1          {
 122   2      //        RI1 = 0;//old主机
 123   2              RI = 0;
 124   2      
 125   2              if( uart1.rxLen == 0 )
 126   2              {
 127   3                  uart1.rxPtr = uart1RxBuffer;
 128   3              }
 129   2      
 130   2              if( uart1.rxLen < UART1_BUFFER_LENGTH )
 131   2              {
 132   3                  *uart1.rxPtr ++ = SBUF;//SBUF1;//old主机
 133   3                  uart1.rxLen ++;
 134   3                  uart1.rxTimer = 0;
 135   3                  uart1.rxState = 1;
 136   3              }
 137   2          }
 138   1      
 139   1      //    if(TI1)//old主机
 140   1          if (TI)
 141   1          {
 142   2      //        TI1 = 0;
 143   2              TI = 0;
 144   2          }
 145   1      }


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