📄 uart.lst
字号:
C51 COMPILER V8.02 UART 09/25/2008 20:18:48 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 int uart_xmit_start;
16
17 unsigned char UART_recv_buffer[UART_RECV_BUF_MAX];
18 unsigned int uart_recv_wr;
19 unsigned int uart_recv_rd;
20 unsigned int 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 09/25/2008 20:18:48 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_put_double_char() */
71 /* version : v1.00 */
72 /* created : xillinx */
73 /********************************************************************************/
74 void UART_put_double_char(unsigned char status, unsigned char hi,unsigned char lo)
75 { UART_send_buffer[uart_xmit_wr]=status;
76 1 uart_xmit_wr++;
77 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
78 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x4)&0xF];
79 1 uart_xmit_wr++;
80 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
81 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x0)&0xF];
82 1 uart_xmit_wr++;
83 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
84 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x4)&0xF];
85 1 uart_xmit_wr++;
86 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
87 1 UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x0)&0xF];
88 1 uart_xmit_wr++;
89 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
90 1 if(uart_xmit_start==0x0) //* 如果需要启动发生,就启动
91 1 { uart_xmit_start=0x1;
92 2 TI=1;
93 2 }
94 1 }
95
96 /********************************************************************************/
97 /* fun_name : UART_putchar() */
98 /* version : v1.00 */
99 /* created : xillinx */
100 /********************************************************************************/
101 void UART_putchar(char ch)
102 { if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
103 1 { return;
104 2 }
105 1 EA=0x0;
106 1 UART_send_buffer[uart_xmit_wr]=ch;
107 1 uart_xmit_wr++;
108 1 uart_xmit_wr&=UART_SEND_BUF_MSK;
109 1 if(uart_xmit_start==0x00)
110 1 { uart_xmit_start=0x1;
111 2 TI=0x1;
112 2 }
113 1 EA=0x1;
114 1 return;
115 1 }
116
C51 COMPILER V8.02 UART 09/25/2008 20:18:48 PAGE 3
117 /********************************************************************************/
118 /* fun_name : UART_xmit_isr_process() */
119 /* version : v1.00 */
120 /* created : xillinx */
121 /********************************************************************************/
122 void UART_xmit_isr_process(void)
123 { if(uart_xmit_wr!=uart_xmit_rd)
124 1 { SBUF=UART_send_buffer[uart_xmit_rd];
125 2 uart_xmit_rd++;
126 2 uart_xmit_rd&=UART_SEND_BUF_MSK;
127 2 uart_xmit_start=0x1;
128 2 }
129 1 else
130 1 { uart_xmit_start=0x0;
131 2 }
132 1 return;
133 1 }
134
135 /********************************************************************************/
136 /* fun_name : UART_recv_isr_process() */
137 /* version : v1.00 */
138 /* created : xillinx */
139 /********************************************************************************/
140 void UART_recv_isr_process(void)
141 { if(((uart_recv_wr+0x1)&UART_RECV_BUF_MSK)==uart_recv_rd) //* 缓冲区已经满了
142 1 { return;
143 2 }
144 1 UART_recv_buffer[uart_recv_wr]=SBUF;
145 1 uart_recv_wr++;
146 1 uart_recv_wr&=UART_RECV_BUF_MSK;
147 1
148 1 uart_recv_start=0x1;
149 1
150 1 return;
151 1 }
152
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 721 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = 300 80
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 + -