📄 uart.lst
字号:
165 1 return 0xff;
166 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
167 1 }
168
169 /***********************************************************************************
170 * 函数名称:Uart1_Init;
171 *
172 * 函数功能描述:Uart1初始化;
173 *
174 * 输入参数:unsigned char类型,发送数据波特率;
175 *
176 * 返回数据:none;
177 *
178 * 注意: none;
179 ************************************************************************************/
C51 COMPILER V7.50 UART 07/18/2006 13:03:12 PAGE 4
180 void Uart1_Init(unsigned long BaudRate) //Uart0初始化
181 {
182 1
183 1
184 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
185 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
186 1
187 1 TR1=0; // 关闭定时器Timer1
188 1 ET1=0; // 关闭定时器Timer1中断
189 1 PT1=0; // 关闭定时器Timer1中断优先权
190 1 TMOD&= 0x0f; // TMOD: 定时器1, 模式2, 8位重载
191 1 TMOD|= 0x20; // TMOD: 定时器1, 模式2, 8位重载
192 1
193 1 if (BaudRate>=172800)
194 1 {
195 2 CKCON |= 0x10; // 定时器Timer1使用系统时钟作为时间基准
196 2 TH1 = -(SYSCLK/(BaudRate*2)); // 设置定时器Timer1重载值
197 2 }
198 1 else if ((BaudRate<172800)&&(BaudRate>=14400))
199 1 {
200 2 CKCON = 0x00; // 定时器Timer1使用系统时钟作为时间/12基准
201 2 TH1 = -(SYSCLK/(BaudRate*2*12)); // 设置定时器Timer1重载值
202 2 }
203 1 else
204 1 {
205 2
206 2 CKCON = 0x02; // 定时器Timer1使用系统时钟作为时间/48基准
207 2 TH1 = -(SYSCLK/(BaudRate*2*48)); // 设置定时器Timer1重载值
208 2 }
209 1
210 1 ES0=0; // 关闭串口Uart0中断
211 1 PS=0; // 关闭串口Uart0中断优先权
212 1 TR1=1; // 打开串口Uart1
213 1
214 1
215 1 SFRPAGE = SFR_PAGE_1;// set SFR page 1
216 1 SCON1=0x52; // SCON0:模式1, 8字节UART, 打开RX, TI1=1,RI1=0
217 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
218 1 }
219
220 /***********************************************************************************
221 * 函数名称:Uart1_Enable;
222 *
223 * 函数功能描述:Uart0初始化;
224 *
225 * 输入参数:bool类型,打开输入1;关闭输入0;
226 *
227 * 返回数据:none;
228 *
229 * 注意: none;
230 ************************************************************************************/
231
232 void Uart1_Enable(bool Flag)
233 {
234 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
235 1 SFRPAGE = SFR_PAGE_2;
236 1
237 1 if (Flag)
238 1 TMR4CN|=0x04; // 打开Uart1
239 1 else
240 1 TMR4CN&=~0x04; // 关闭Uart1
241 1
C51 COMPILER V7.50 UART 07/18/2006 13:03:12 PAGE 5
242 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
243 1 }
244
245 /***********************************************************************************
246 * 函数名称: Uart1_SendString;
247 *
248 * 函数功能描述:Uart0初始化;
249 *
250 * 输入参数:unsigned char类型指针,发送数据;
251 *
252 * 返回数据:none;
253 *
254 * 注意: none;
255 ************************************************************************************/
256
257 void Uart1_SendString(unsigned char *pt)
258 {
259 1 while(*pt)
260 1 {
261 2 Uart1_SendByte(*pt++);
262 2 }
263 1 }
264
265 /***********************************************************************************
266 * 函数名称:Uart1_SendByte;
267 *
268 * 函数功能描述:Uart0初始化;
269 *
270 * 输入参数:unsigned char类型指针,发送数据;
271 *
272 * 返回数据:none;
273 *
274 * 注意: none;
275 ************************************************************************************/
276
277 void Uart1_SendByte(unsigned char value)
278 {
279 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
280 1 SFRPAGE = SFR_PAGE_1;
281 1
282 1 while(!(TI1)); // 等待发送1个字节数据完成
283 1 SBUF1=value; // 发送数据到uart1
284 1 SCON1&=~0x02; // 清除中断标志
285 1
286 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
287 1 }
288
289 /***********************************************************************************
290 * 函数名称:Uart1_ReceiveData;
291 *
292 * 函数功能描述:Uart0初始化;
293 *
294 * 输入参数:none;
295 *
296 * 返回数据:unsigned char类型,接收数据;
297 *
298 * 注意: none;
299 ************************************************************************************/
300
301 unsigned char Uart1_ReceiveData(void)
302 {
303 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
C51 COMPILER V7.50 UART 07/18/2006 13:03:12 PAGE 6
304 1 SFRPAGE = SFR_PAGE_1;
305 1
306 1 if(RI1)
307 1 {
308 2 SCON1&=~0x01; // 清除RI1标志位
309 2 return SBUF1;
310 2 }
311 1
312 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
313 1
314 1 return 0xff;
315 1 }
316
317 /***********************************************************************************/
318 // 文件结束
319 /***********************************************************************************/
320
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 557 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 14
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 + -