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