📄 uart.lst
字号:
C51 COMPILER V8.02 UART 10/05/2008 17:55:06 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\UART.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\UART\UART.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\UART.lst) OBJECT(.\U
-ART.obj)
line level source
1 /********************************************************************************/
2 /* filename : UART.c */
3 /* created : xillinx */
4 /* descript : 处理与串口相关的事情 */
5 /********************************************************************************/
6 #include "../CPU/CPU.h"
7 #include "../CFG/CFG.h"
8 #include "../UART/UART.h"
9
10 unsigned char code ascii_table[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
11
12 unsigned char UART_send_buffer[UART_SEND_BUF_MAX];
13 unsigned int uart_xmit_wr;
14 unsigned int uart_xmit_rd;
15 unsigned char data uart_xmit_start;
16
17 unsigned char UART_recv_buffer[UART_RECV_BUF_MAX];
18 unsigned char data uart_recv_wr;
19 unsigned char data uart_recv_rd;
20 unsigned char data uart_recv_start;
21
22 /********************************************************************************/
23 /* fun_name : UART_buffer_initilize() */
24 /* version : v1.00 */
25 /* created : xillinx */
26 /********************************************************************************/
27 void UART_buffer_initilize(void)
28 { uart_xmit_start = 0x0;
29 1 uart_recv_start = 0x0;
30 1 uart_xmit_wr = 0x0;
31 1 uart_xmit_rd = 0x0;
32 1 uart_recv_wr = 0x0;
33 1 uart_recv_rd = 0x0;
34 1 }
35
36 /********************************************************************************/
37 /* fun_name : UART_printf() */
38 /* version : v1.00 */
39 /* created : xillinx */
40 /********************************************************************************/
41 void UART_printf(char * string,...)
42 { unsigned int length;
43 1 unsigned char i;
44 1 char uart_buffer[UART_EACH_MSG_MAX];
45 1 va_list arguments;
46 1 EA=0x0;
47 1 va_start(arguments,string);
48 1 vsprintf(uart_buffer,string,arguments);
49 1 va_end(arguments);
50 1 length=strlen(uart_buffer);
51 1
52 1 for(i=0x0;i<length;i++)
53 1 { if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
54 2 { break;
C51 COMPILER V8.02 UART 10/05/2008 17:55:06 PAGE 2
55 3 }
56 2 UART_send_buffer[uart_xmit_wr]=uart_buffer[i];
57 2 uart_xmit_wr++;
58 2 uart_xmit_wr&=UART_SEND_BUF_MSK;
59 2 }
60 1
61 1 if(uart_xmit_start==0x0) //* 如果需要启动发生,就启动
62 1 { uart_xmit_start=0x1;
63 2 TI=1;
64 2 }
65 1 EA=0x1;
66 1 return;
67 1 }
68
69 /********************************************************************************/
70 /* fun_name : UART_print_ascii() */
71 /* version : v1.00 */
72 /* created : xillinx */
73 /********************************************************************************/
74 void UART_print_ascii(unsigned char * buffer, unsigned char len)
75 { unsigned char i;
76 1 ES=0x0;
77 1 for(i=0x0;i<len;i++)
78 1 { if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
79 2 { break;
80 3 }
81 2 UART_send_buffer[uart_xmit_wr]=ascii_table[(buffer[i]>>0x4)&0xF];
82 2 uart_xmit_wr++;
83 2 uart_xmit_wr&=UART_SEND_BUF_MSK;
84 2 if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
85 2 { break;
86 3 }
87 2 UART_send_buffer[uart_xmit_wr]=ascii_table[(buffer[i]>>0x0)&0xF];
88 2 uart_xmit_wr++;
89 2 uart_xmit_wr&=UART_SEND_BUF_MSK;
90 2 if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
91 2 { break;
92 3 }
93 2 UART_send_buffer[uart_xmit_wr]='|';
94 2 uart_xmit_wr++;
95 2 uart_xmit_wr&=UART_SEND_BUF_MSK;
96 2 }
97 1 if(uart_xmit_start==0x0) //* 如果需要启动发生,就启动
98 1 { uart_xmit_start=0x1;
99 2 TI=1;
100 2 }
101 1 ES=0x1;
102 1 return;
103 1 }
104
105 /********************************************************************************/
106 /* fun_name : UART_put_double_char() */
107 /* version : v1.00 */
108 /* created : xillinx */
109 /********************************************************************************/
110 void UART_put_double_char(unsigned char status, unsigned char hi,unsigned char lo)
111 { UART_send_buffer[uart_xmit_wr]=status;
112 1 uart_xmit_wr++;
113 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
114 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x4)&0xF];
115 1 uart_xmit_wr++;
116 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
C51 COMPILER V8.02 UART 10/05/2008 17:55:06 PAGE 3
117 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x0)&0xF];
118 1 uart_xmit_wr++;
119 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
120 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x4)&0xF];
121 1 uart_xmit_wr++;
122 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
123 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x0)&0xF];
124 1 uart_xmit_wr++;
125 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
126 1 if(uart_xmit_start==0x0) //* 如果需要启动发生,就启动
127 1 { uart_xmit_start=0x1;
128 2 TI=1;
129 2 }
130 1 }
131
132 /********************************************************************************/
133 /* fun_name : UART_putchar() */
134 /* version : v1.00 */
135 /* created : xillinx */
136 /********************************************************************************/
137 void UART_putchar(char ch)
138 { if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
139 1 { return;
140 2 }
141 1 EA=0x0;
142 1 UART_send_buffer[uart_xmit_wr]=ch;
143 1 uart_xmit_wr++;
144 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
145 1 if(uart_xmit_start==0x00)
146 1 { uart_xmit_start=0x1;
147 2 TI=0x1;
148 2 }
149 1 EA=0x1;
150 1 return;
151 1 }
152
153 /********************************************************************************/
154 /* fun_name : UART_xmit_isr_process() */
155 /* version : v1.00 */
156 /* created : xillinx */
157 /********************************************************************************/
158 void UART_xmit_isr_process(void)
159 { if(uart_xmit_wr!=uart_xmit_rd)
160 1 { SBUF=UART_send_buffer[uart_xmit_rd];
161 2 uart_xmit_rd++;
162 2 uart_xmit_rd&=UART_SEND_BUF_MSK;
163 2 uart_xmit_start=0x1;
164 2 }
165 1 else
166 1 { uart_xmit_start=0x0;
167 2 }
168 1 return;
169 1 }
170
171 /********************************************************************************/
172 /* fun_name : UART_recv_isr_process() */
173 /* version : v1.00 */
174 /* created : xillinx */
175 /********************************************************************************/
176 void UART_recv_isr_process(void)
177 { unsigned char mdata;
178 1 mdata=SBUF;
C51 COMPILER V8.02 UART 10/05/2008 17:55:06 PAGE 4
179 1 if(((uart_recv_wr+0x1)&UART_RECV_BUF_MSK)==uart_recv_rd) //* 缓冲区已经满了
180 1 { uart_recv_rd=uart_recv_wr;
181 2 return;
182 2 }
183 1 UART_recv_buffer[uart_recv_wr]=mdata;
184 1 uart_recv_wr++;
185 1 uart_recv_wr&=UART_RECV_BUF_MSK;
186 1 if(mdata==0xFF)
187 1 { uart_recv_start=0x1;
188 2 }
189 1 return;
190 1 }
191
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 932 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = 292 85
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -