?? uart.lst
字號:
C51 COMPILER V7.50 UART 04/25/2008 10:51:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN Uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Uart.c BROWSE DEBUG OBJECTEXTEND
line 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 "intrins.h"
27 #include "const.h"
28 #include "uart.h"
29
30 /************************************************************************************/
31
32 /************************************************************************************
33 // 常量及全局變量定義
34 *************************************************************************************/
35 unsigned char data utxok=1;
36
37 /************************************************************************************
38 * Uart子程序
39 *************************************************************************************/
40
41 /***********************************************************************************
42 * 函數名稱:Uart1_Init;
43 *
44 * 函數功能描述:Uart1初始化;
45 *
46 * 輸入參數:unsigned char類型,發送數據波特率;
47 *
48 * 返回數據:none;
49 *
50 * 注意: none;
51 ************************************************************************************/
52 void Uart1_Init(unsigned long BaudRate) //Uart1初始化
53 {
54 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
55 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
C51 COMPILER V7.50 UART 04/25/2008 10:51:19 PAGE 2
56 1
57 1 TR1=0; // 關閉定時器Timer1
58 1 ET1=0; // 關閉定時器Timer1中斷
59 1 PT1=0; // 關閉定時器Timer1中斷優先權
60 1 TMOD&= 0x0f; // TMOD: 定時器1, 模式2, 8位重載
61 1 TMOD|= 0x20; // TMOD: 定時器1, 模式2, 8位重載
62 1
63 1 if (BaudRate>=57600)
64 1 {
65 2 CKCON |= 0x10; // 定時器Timer1使用系統時鐘作為時間基準
66 2 TH1 = 256-(SYSCLK/(BaudRate*2)); // 設置定時器Timer1重載值
67 2 }
68 1 else if ((BaudRate<57600)&&(BaudRate>=9600))
69 1 {
70 2 CKCON = 0x00; // 定時器Timer1使用系統時鐘作為時間/12基準
71 2 TH1 = 256-(SYSCLK/(BaudRate*2*12)); // 設置定時器Timer1重載值
72 2 }
73 1 else
74 1 {
75 2
76 2 CKCON = 0x02; // 定時器Timer1使用系統時鐘作為時間/48基準
77 2 TH1 = 256-(SYSCLK/(BaudRate*2*48)); // 設置定時器Timer1重載值
78 2 }
79 1
80 1 //ES0=0; // 打開串口Uart1中斷
81 1 EIE2 |= 0x40;
82 1 //PS=0; // 串口Uart1中斷優先權設為"低"
83 1 EIP2 &= 0xBF;
84 1 utxok=1; //can send bytes
85 1 TR1=1; // 打開串口Uart1
86 1
87 1
88 1 SFRPAGE = SFR_PAGE_1;// set SFR page 1
89 1 SCON1=0x56; // SCON1:模式1, 8字節UART, 打開RX, TI1=1,RI1=0
90 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
91 1 }
92
93 /***********************************************************************************
94 * 函數名稱:Uart1_Enable;
95 *
96 * 函數功能描述:Uart0初始化;
97 *
98 * 輸入參數:bool類型,打開輸入1;關閉輸入0;
99 *
100 * 返回數據:none;
101 *
102 * 注意: none;
103 ************************************************************************************/
104 /*
105 void Uart1_Enable(bool Flag)
106 {
107 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
108 SFRPAGE = SFR_PAGE_2;
109
110 if (Flag)
111 TMR4CN|=0x04; // 打開Uart1
112 else
113 TMR4CN&=~0x04; // 關閉Uart1
114
115 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
116 }
117 */
C51 COMPILER V7.50 UART 04/25/2008 10:51:19 PAGE 3
118 /***********************************************************************************
119 * 函數名稱: Uart1_SendString;
120 *
121 * 函數功能描述:Uart0初始化;
122 *
123 * 輸入參數:unsigned char類型指針,發送數據;
124 *
125 * 返回數據:none;
126 *
127 * 注意: none;
128 ************************************************************************************/
129
130 void Uart1_SendString(unsigned char *pt)
131 {
132 1 while(*pt)
133 1 {
134 2 Uart1_SendByte(*pt++);
135 2 }
136 1 }
137
138 /***********************************************************************************
139 * 函數名稱:Uart1_SendByte;
140 *
141 * 函數功能描述:Uart0初始化;
142 *
143 * 輸入參數:unsigned char類型指針,發送數據;
144 *
145 * 返回數據:none;
146 *
147 * 注意: none;
148 ************************************************************************************/
149
150 void Uart1_SendByte(unsigned char value)
151 {
152 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
153 1 SFRPAGE = SFR_PAGE_1;
154 1 /*
155 1 while(utxok!=1); // 等待發送1個字節數據完成
156 1 SBUF1=value; // 發送數據到uart1
157 1 utxok=0;
158 1 //SCON1&=~0x02; // 清除中斷標志
159 1 */
160 1 while(!(SCON1&0x02));
161 1 SBUF1 = value;
162 1 SCON1 &= ~0x02;
163 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
164 1 }
165
166 /***********************************************************************************
167 * 函數名稱:Uart1_ReceiveData;
168 *
169 * 函數功能描述:Uart0初始化;
170 *
171 * 輸入參數:none;
172 *
173 * 返回數據:unsigned char類型,接收數據;
174 *
175 * 注意: none;
176 ************************************************************************************/
177
178 unsigned char Uart1_ReceiveData(void)
179 {
C51 COMPILER V7.50 UART 04/25/2008 10:51:19 PAGE 4
180 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
181 1 SFRPAGE = SFR_PAGE_1;
182 1 while(!(SCON1&0x01));
183 1 SCON1 &= ~0x01;
184 1 return SBUF1;
185 1 }
186
187 void Uart1_ReceiveLong(char command[])
188 {
189 1 unsigned int i;
190 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
191 1 SFRPAGE = SFR_PAGE_1;
192 1 for (i=0;i<3;i++)
193 1 {
194 2 command[i] = Uart1_ReceiveData();//當收到3個字節命令的時候,command收滿了跳到主函數main()
195 2
196 2 }
197 1
198 1 }
199 /***********************************************************************************/
200 // 文件結束
201 /***********************************************************************************/
202
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 276 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 13
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 + -