?? uart.lst
字號:
C51 COMPILER V7.06 UART 03/23/2007 23:58:30 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE UART.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************
2 本程序只供學習使用,未經作者許可,不得用于其它任何用途
3 我的郵箱:computer-lov@tom.com
4 歡迎訪問我的blog: http://computer00.21ic.org
5
6 UART.C file
7
8 作者:Computer-lov
9 建立日期: 2007.03.20
10 修改日期: 2007.03.22
11 版本:V1.1
12 版權所有,盜版必究。
13 Copyright(C) Computer-lov 2007-2017
14 All rights reserved
15 *******************************************************************/
16
17 #include <at89x52.H>
18
19 #include "UART.h"
20 #include "my_type.h"
21
22 uint8 Sending;
23
24
25 //**************************************************************************************
26 void InitUART(void) //串口初始化函數,使用22.1184M晶體
27 {
28 1 EA=0;
29 1 TMOD&=0x0F;
30 1 TMOD|=0x20; //定時器1工作在模式2
31 1 SCON=0x50; //串口工作在模式1
32 1 TCON=0x05;
33 1 TH1=0xF4; //9600bps
34 1 TL1=0xF4;
35 1 PCON=0x80; //串口波特率加倍
36 1 ES=1; //串行中斷允許
37 1 TR1=1; //啟動定時器1
38 1 REN=1; //允許接收
39 1 EA=1; //允許中斷
40 1 }
41 //****************************************************************************************
42
43
44 //******************************* 串口中斷處理 ***********************************
45 void SerialPort(void) interrupt 4
46 {
47 1 if(RI) //收到數據
48 1 {
49 2 RI=0; //清中斷請求
50 2 }
51 1 else //發送完一字節數據
52 1 {
53 2 TI=0;
54 2 Sending=0; //清正在發送標志
55 2 }
C51 COMPILER V7.06 UART 03/23/2007 23:58:30 PAGE 2
56 1 }
57 //*****************************************************************************************
58
59 //*****************************************************************************************
60 void SendToComport(unsigned char d) //往串口發送一字節數據
61 {
62 1 Sending=1;
63 1 SBUF=d;
64 1 while(Sending);
65 1 }
66 //*****************************************************************************************
67
68 //*****************************************************************************************
69 //發送一個字符串
70 void prints(uint8 * pd,uint8 line_feed)
71 {
72 1 while((*pd)!='\0')
73 1 {
74 2 SendToComport(*pd);
75 2 pd++;
76 2 }
77 1 if(line_feed)
78 1 {
79 2 SendToComport(13);
80 2 SendToComport(10);
81 2 }
82 1 }
83 //****************************************************************************************
84
85
86
87 //*****************************************************************************************
88 void PrintLongInt(uint32 x) //將整數轉按十進制字符串發送
89 {
90 1 int8 i;
91 1 uint8 display_buffer[10];
92 1 display_buffer[10]=0;
93 1 for(i=9;i>=0;i--)
94 1 {
95 2 display_buffer[i]='0'+x%10;
96 2 x/=10;
97 2 }
98 1 for(i=0;i<9;i++)
99 1 {
100 2 if(display_buffer[i]!='0')break;
101 2 }
102 1 for(;i<10;i++)SendToComport(display_buffer[i]);
103 1 }
104 //*****************************************************************************************
105
106
107 code uint8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
108 //*****************************************************************************************
109 /*
110 void PrintLongIntHex(uint32 x) //將整數按十六進制發送
111 {
112 uint8 i;
113 uint8 display_buffer[11];
114 display_buffer[10]=0;
115 display_buffer[0]='0';
116 display_buffer[1]='x';
117 for(i=9;i>=2;i--)
C51 COMPILER V7.06 UART 03/23/2007 23:58:30 PAGE 3
118 {
119 display_buffer[i]=HexTable[(x&0xf)];
120 x>>=4;
121 }
122 prints(display_buffer,0);
123 }
124 */
125 //*****************************************************************************************
126
127
128 //*****************************************************************************************
129 void Printc(uint8 x) //發送一個byte的數據
130 {
131 1 Sending=1;
132 1 SBUF=x;
133 1 while(Sending);
134 1 }
135 //*****************************************************************************************
136
137
138 //*****************************************************************************************
139 void PrintHex(uint8 x) //以HEX格式發送一個byte的數據
140 {
141 1 Printc('0');
142 1 Printc('x');
143 1 Printc(HexTable[x>>4]);
144 1 Printc(HexTable[x&0xf]);
145 1 Printc(' ');
146 1 }
147 //*****************************************************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 254 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 15
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 + -