📄 uart.lst
字号:
C51 COMPILER V8.02 UART 04/26/2008 21:37:28 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: D:\Keil1\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include "uart.h"
4 #include <REGX51.H>
5
6
7 /*
8
9 #define UARTBUFSIZE 4
10 typedef struct tUARTBUF
11 {
12 BYTE bBuffer[UARTBUFSIZE];
13 BYTE bWritePtr;
14 BYTE bReadPtr;
15 BYTE bCntData;
16 }
17 UARTBUF;
18
19
20
21 UARTBUF uart_RcevBuf;
22 UARTBUF uart_SendBuf;
23 BIT uart_TranStopped;
24
25
26
27 void uartInit(void)
28 {
29 BYTE save;
30
31 uart_RcevBuf.bWritePtr = 0;
32 uart_RcevBuf.bReadPtr = 0;
33 uart_RcevBuf.bCntData = 0;
34 //
35 uart_SendBuf.bWritePtr = 0;
36 uart_SendBuf.bReadPtr = 0;
37 uart_SendBuf.bCntData = 0;
38 uart_TranStopped = 1;
39
40 // 57600 baud with 11.0592MHz osc
41 save = TMOD;
42 TMOD = (save & T0_MASK_) | (0x20 & T1_MASK_);
43 TH1 = 255;
44 TL1 = 255;
45 TR1 = 1;
46
47 PCON = SMOD_;
48
49 REN = 1;
50 SM2 = 0;
51 SM1 = 1;
52 SM0 = 0;
53
54 ES = 1;
55 }
C51 COMPILER V8.02 UART 04/26/2008 21:37:28 PAGE 2
56
57
58 void uartIntrq(void) interrupt SIO_VECTOR
59 {
60 if (TI)
61 {
62 TI = 0;
63
64 if (uart_SendBuf.bCntData)
65 {
66 uart_SendBuf.bReadPtr %= UARTBUFSIZE;
67 SBUF = uart_SendBuf.bBuffer[ uart_SendBuf.bReadPtr ];
68 uart_SendBuf.bReadPtr++;
69 uart_SendBuf.bCntData--;
70 }
71 else
72 {
73 uart_TranStopped = 1;
74 }
75 }
76
77 if (RI)
78 {
79 RI = 0;
80
81 uart_RcevBuf.bWritePtr %= UARTBUFSIZE;
82 uart_RcevBuf.bBuffer[ uart_RcevBuf.bWritePtr ] = SBUF;
83 uart_RcevBuf.bWritePtr++;
84 uart_RcevBuf.bCntData++;
85 }
86 }
87
88
89 void uartSendByte(BYTE byte)
90 {
91 uart_SendBuf.bWritePtr %= UARTBUFSIZE;
92 uart_SendBuf.bBuffer[ uart_SendBuf.bWritePtr ] = byte;
93 uart_SendBuf.bWritePtr++;
94 uart_SendBuf.bCntData++;
95
96 if (uart_TranStopped)
97 {
98 uart_TranStopped = 0;
99 TI = 1;
100 }
101 }
102
103
104 BYTE uartReceiveByte(void)
105 {
106 BYTE rt;
107
108 if (uart_RcevBuf.bCntData)
109 {
110 uart_RcevBuf.bReadPtr %= UARTBUFSIZE;
111 rt = uart_RcevBuf.bBuffer[ uart_RcevBuf.bReadPtr ];
112 uart_RcevBuf.bReadPtr++;
113 uart_RcevBuf.bCntData--;
114 }
115
116 return rt;
117 }
C51 COMPILER V8.02 UART 04/26/2008 21:37:28 PAGE 3
118
119
120 BYTE uartCntReceive(void)
121 {
122 return uart_RcevBuf.bCntData;
123 }
124
125 BYTE uartCntSend(void)
126 {
127 return uart_SendBuf.bCntData;
128 }
129
130 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = ---- ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
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 + -