📄 uart1.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 + -