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