?? uart.lst
字號:
C51 COMPILER V7.02b UART 03/06/2006 15:01:38 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\output\Uart.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Uart.c LARGE BROWSE DEBUG OBJECTEXTEND TABS(3) OBJECT(.\output\Uart.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安銘朗電子科技有限責任公司
3 * All rights reserved.
4 *
5 * 文件名稱: Uart.c
6 * 文件標識: none
7 * 適用器件: C8051F040
8 *
9 * 摘 要: 本文件是串口0、1子程序;使用外部22.1184MHz晶振. Uart驅動程序,包括初始化、
10 * 波特率設置,單字節發送接收、字符串發送接受等。將跳線器JP7、短接。
11 * 使用外部22.1184MHz晶振。
12 *
13 * 當前版本:1.2
14 * 作 者:張寧強
15 * 完成日期:2006年1月10日
16 *
17 * 歷史版本:1.0
18 * 原作者 : 李林利 盧陽
19 * 完成日期:2005年6月1日
20 *************************************************************************************/
21
22 /************************************************************************************/
23 // 引用外部頭文件
24
25 #include "c8051F040.h"
26 #include "const.h"
27 #include "uart.h"
28
29 /************************************************************************************/
30
31 /************************************************************************************
32 // 常量及全局變量定義
33 *************************************************************************************/
34
35 /************************************************************************************
36 * Uart子程序
37 *************************************************************************************/
38
39 /***********************************************************************************
40 * 函數名稱:Uart0_Init;
41 *
42 * 函數功能描述:Uart0初始化;
43 *
44 * 輸入參數:unsigned char類型,發送數據波特率;
45 *
46 * 返回數據:none;
47 *
48 * 注意: none;
49 ************************************************************************************/
50 void Uart0_Init(unsigned long BaudRate) //Uart0初始化
51 {
52 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
53 1 SFRPAGE = SFR_PAGE_0;// set SFR page 0
54 1
55 1
C51 COMPILER V7.02b UART 03/06/2006 15:01:38 PAGE 2
56 1 SCON0 = 0x50; // SCON0: 模式1, 8位UART, 使能RX
57 1
58 1 SSTA0 = 0x1a; // // SMOD00 = 1
59 1 ES0=0; // 關閉串口Uart0中斷
60 1 PS=0; // 關閉串口Uart0中斷優先權
61 1 TI0 = 1; // Indicate TX0 ready
62 1 RI0 = 0; // Indicate RX0 ready
63 1
64 1
65 1 SFRPAGE = SFR_PAGE_1;// set SFR page 1
66 1 TMR3CN&=~0x04; // 關閉定時器Timer3
67 1 RCAP3H =(65536-(SYSCLK/(BaudRate*16)))/256;
68 1 RCAP3L =(65536-(SYSCLK/(BaudRate*16)))%256;
69 1 // 設置定時器Timer3重載值, Uart1_CLK=SYSCLK
70 1 TMR3CF=0x08; // clk = SYS_CLK;
71 1 TMR3CN=0x04; // 工作模式2: TX,RX 波特率模式
72 1
73 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
74 1 }
75
76 /***********************************************************************************
77 * 函數名稱:Uart0_Enable;
78 *
79 * 函數功能描述:Uart0初始化;
80 *
81 * 輸入參數:bool類型,打開輸入1;關閉輸入0;
82 *
83 * 返回數據:none;
84 *
85 * 注意: none;
86 ************************************************************************************/
87
88 void Uart0_Enable(bool Flag)
89 {
90 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
91 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
92 1
93 1 if (Flag)
94 1 TR1=1; // 打開串口Uart0
95 1 else
96 1 TR1=0; // 關閉串口Uart0
97 1
98 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
99 1 }
100
101 /***********************************************************************************
102 * 函數名稱:Uart0_SendString;
103 *
104 * 函數功能描述:Uart0初始化;
105 *
106 * 輸入參數: unsigned char類型指針,發送數據;
107 *
108 * 返回數據:none;
109 *
110 * 注意: none;
111 ************************************************************************************/
112
113 void Uart0_SendString(unsigned char *pt)
114 {
115 1 while(*pt)
116 1 {
117 2 Uart0_SendByte(*pt++);
C51 COMPILER V7.02b UART 03/06/2006 15:01:38 PAGE 3
118 2 }
119 1 }
120
121 /***********************************************************************************
122 * 函數名稱:Uart0_SendByte;
123 *
124 * 函數功能描述:Uart0初始化;
125 *
126 * 輸入參數:unsigned char類型指針,發送數據;
127 *
128 * 返回數據:none;
129 *
130 * 注意: none;
131 ************************************************************************************/
132
133 void Uart0_SendByte(unsigned char value)
134 {
135 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
136 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
137 1
138 1 while(!TI0); // 等待發送1個字節數據完成
139 1 SBUF0=value; // 發送數據到uart0
140 1 TI0=0; // 清除中斷標志
141 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
142 1 }
143
144 /***********************************************************************************
145 * 函數名稱:Uart0_ReceiveData;
146 *
147 * 函數功能描述:Uart0初始化;
148 *
149 * 輸入參數:none;
150 *
151 * 返回數據:unsigned char類型,接收數據;
152 *
153 * 注意: none;
154 ************************************************************************************/
155 unsigned char Uart0_ReceiveData(void)
156 {
157 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
158 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
159 1
160 1 while(!RI0);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -