📄 uart.lst
字号:
C51 COMPILER V7.06 UART 06/18/2007 09:21:15 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.obj
COMPILER INVOKED BY: d:\Program Files\Keil\C51\BIN\C51.EXE CODE\uart.c BROWSE DEBUG OBJECTEXTEND PRINT(.\uart.lst) OBJEC
-T(uart.obj)
stmt level source
1 #include "stc51reg.h"
2
3 //***************************************************************
4 void config()
5 {
6 1 WDT_CONTR = 0x00; // Watchdog Timer Control Register 关闭看门狗定时器。
7 1 PCON = 0x00;
8 1
9 1 SCON = 0x50; // Serial Port Control Register
10 1 SCON &= 0xFC; //clear interrupt pending flags
11 1 TH1 = 0xFD; // Timer 1 High Byte
12 1 TL1 = 0xFD;
13 1 TMOD = 0x20; // Timer Mode Register
14 1 TCON = 0x40; // Timer Control Register
15 1
16 1 }
17 //初始化单片机
18 //*************************************************************************
19
20 //********************************************************************
21 void uart_sendByte(unsigned char dat)
22 {
23 1 SBUF=dat;
24 1 while(!TI); //waite for data to transmit completely
25 1 SCON &= 0xFD;
26 1 }
27 //通过串口发送1个字节的数据,dat为发送的数据
28 //**************************************************************************
29
30 //***************************************************************************
31 unsigned char uart_recByte(void)
32 {
33 1 unsigned char rec=0;
34 1 while(!RI); //waite to recieve data in SBUF0
35 1 rec=SBUF;
36 1 SCON &= 0xFE;
37 1 return rec;
38 1 }
39 //接收一个字节的数据,函数返回读取到的数据
40 //***************************************************************************
41
42 //***************************************************************************
43 unsigned char read_reg(unsigned char port,unsigned char reg)
44 {
45 1 uart_sendByte(((port-1)<<4)+reg);
46 1 return uart_recByte();
47 1 }
48 //读取寄存器的值,port为子串口的路数,reg为寄存器的地址,返回值是寄存器的值
49 //***************************************************************************
50
51 //****************************************************************************
52 void write_reg(unsigned char port,unsigned char reg,unsigned char dat)
53 {
54 1 uart_sendByte(0x80+((port-1)<<4)+reg);
C51 COMPILER V7.06 UART 06/18/2007 09:21:15 PAGE 2
55 1 uart_sendByte(dat);
56 1 }
57 //往寄存器里面写数据,port为子串口的路数,reg为寄存器的地址,dat 为写入寄存器的值
58 //****************************************************************************
59
60 //*******************************************************************************
61 unsigned char *read_fifo(unsigned char port,unsigned char num)
62 {
63 1 unsigned char n;
64 1 unsigned char * dat;
65 1 uart_sendByte(0x40+((port-1)<<4)+num);
66 1 for(n=0;n<num;n++)
67 1 {
68 2 *(dat+n)=uart_recByte();
69 2 }
70 1 return dat;
71 1 }
72 //读取fifo中的数据,port为子串口的路数,num是读取的数据的个数,函数返回读取到的
73 //数据的首地址指针
74 //*****************************************************************************
75
76 //*****************************************************************************
77 void write_fifo(unsigned char port,unsigned char *p,unsigned char num)
78 {
79 1 unsigned char n;
80 1 uart_sendByte(0xc0+((port-1)<<4)+num);
81 1 for(n=0;n<num;n++)
82 1 uart_sendByte(*(p+n));
83 1 }
84 //写fifo,port为子串口的路数,num是读取的数据的个数,p是将要写入数据的首地址
85 //****************************************************************************
86
87
88
89
90
91
92
93 /*
94 #include "C8051F020.h"
95 // P0.0 = UART TX0 (Push-Pull Output)
96 // P0.1 = UART RX0 (Open-Drain Output/Input)
97 //***************************************************************
98 void config()
99 {
100 WDTCN = 0x07; // Watchdog Timer Control Register
101 WDTCN = 0xDE; // Disable WDT
102 WDTCN = 0xAD;
103
104 PCON = 0X00;
105 P0MDOUT = 0x01; // Output configuration for P0
106 P1MDOUT = 0x40; // Output configuration for P1
107
108
109 XBR0 = 0x04; // XBAR0: Initial Reset Value
110 XBR1 = 0x00; // XBAR1: Initial Reset Value
111 XBR2 = 0xC0; // XBAR2: Initial Reset Value
112
113 SCON0 = 0x50; // Serial Port Control Register
114 SCON0 &= 0xFC; //clear interrupt pending flags
115
116 CKCON = 0x10; // Clock Control Register
C51 COMPILER V7.06 UART 06/18/2007 09:21:15 PAGE 3
117 TH1 = 0xF9; // Timer 1 High Byte
118
119 TMOD = 0x20; // Timer Mode Register
120 TCON = 0x40; // Timer Control Register
121 // P0.0 = UART TX0 (Push-Pull Output)
122 // P0.1 = UART RX0 (Open-Drain Output/Input)
123
124 }
125 //初始化单片机
126 //*************************************************************************
127
128 //********************************************************************
129 void uart_sendByte(unsigned char dat)
130 {
131 SBUF0=dat;
132 while(!TI0); //waite for data to transmit completely
133 SCON0 &= 0xFD;
134 }
135 //通过串口发送1个字节的数据,dat为发送的数据
136 //**************************************************************************
137
138 //***************************************************************************
139 unsigned char uart_recByte(void)
140 {
141 unsigned char rec=0;
142 while(!RI0); //waite to recieve data in SBUF0
143 rec=SBUF0;
144 SCON0 &= 0xFE;
145 return rec;
146 }
147 //接收一个字节的数据,函数返回读取到的数据
148 //***************************************************************************
149
150 //***************************************************************************
151 unsigned char read_reg(unsigned char port,unsigned char reg)
152 {
153 uart_sendByte(((port-1)<<4)+reg);
154 return uart_recByte();
155 }
156 //读取寄存器的值,port为子串口的路数,reg为寄存器的地址,返回值是寄存器的值
157 //***************************************************************************
158
159 //****************************************************************************
160 void write_reg(unsigned char port,unsigned char reg,unsigned char dat)
161 {
162 uart_sendByte(0x80+((port-1)<<4)+reg);
163 uart_sendByte(dat);
164 }
165 //往寄存器里面写数据,port为子串口的路数,reg为寄存器的地址,dat 为写入寄存器的值
166 //****************************************************************************
167
168 //*******************************************************************************
169 unsigned char *read_fifo(unsigned char port,unsigned char num)
170 {
171 unsigned char n;
172 unsigned char * dat;
173 uart_sendByte(0x40+((port-1)<<4)+num);
174 for(n=0;n<num;n++)
175 {
176 *(dat+n)=uart_recByte();
177 }
178 return dat;
C51 COMPILER V7.06 UART 06/18/2007 09:21:15 PAGE 4
179 }
180 //读取fifo中的数据,port为子串口的路数,num是读取的数据的个数,函数返回读取到的
181 //数据的首地址指针
182 //*****************************************************************************
183
184 //*****************************************************************************
185 void write_fifo(unsigned char port,unsigned char *p,unsigned char num)
186 {
187 unsigned char n;
188 uart_sendByte(0xc0+((port-1)<<4)+num);
189 for(n=0;n<num;n++)
190 uart_sendByte(*(p+n));
191 }
192 //写fifo,port为子串口的路数,num是读取的数据的个数,p是将要写入数据的首地址
193 //****************************************************************************
194
195
196 */
197
198
199
200
201
202
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 173 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
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 + -