📄 uart1.lst
字号:
C51 COMPILER V7.10 UART1 02/27/2009 10:50:57 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE UART1
OBJECT MODULE PLACED IN UART1.OBJ
COMPILER INVOKED BY: D:\silicon labs\IDEfiles\C51\BIN\C51.exe UART1.C DB OE
line level source
1 //-----------------------------------------------------------------------------
2 // WUART0.c
3 //-----------------------------------------------------------------------------
4 //
5 // 作者: LILU
6 // DATE: 2008年12月22号
7 //
8 // Target: C8051F02x
9 // Tool chain: KEIL C51
10 //
11 // 描述:
12 //
13 //
14 //-----------------------------------------------------------------------------
15 // 包含文件
16 //-----------------------------------------------------------------------------
17
18 #include <c8051f020.h> // SFR声明
19 #include <intrins.h>
20
21 //-----------------------------------------------------------------------------
22 // C8051F02X的16位SFR定义
23 //-----------------------------------------------------------------------------
24
25
26 //-----------------------------------------------------------------------------
27 // 全局常量
28 //-----------------------------------------------------------------------------
29
30 #define SYSCLK 22118400 // SYSCLK frequency in Hz
31 #define BAUDRATE 9600 // Baud rate of UART in bps
32
33 bit sendbit0;
34 bit sendbit1;
35 unsigned char tempr0,tempr1,tempt0,tempt1;
36
37 //-----------------------------------------------------------------------------
38 // 函数原型
39 //-----------------------------------------------------------------------------
40
41 void main (void);
42 void SYSCLK_Init (void);
43 void PORT_Init (void);
44 void UART0_Init (void);
45 void UART0_ISR (void);
46 void UART1_Init (void);
47 void UART1_ISR (void);
48 void delay (unsigned int x);//unsigned int m
49 //-----------------------------------------------------------------------------
50 // 主程序
51 //-----------------------------------------------------------------------------
52
53 void main (void)
54 {
55 1 char bdata i;
C51 COMPILER V7.10 UART1 02/27/2009 10:50:57 PAGE 2
56 1 WDTCN = 0xde; // 禁止看门狗定时器
57 1 WDTCN = 0xad;
58 1
59 1 SYSCLK_Init ();
60 1 PORT_Init ();
61 1 UART0_Init ();
62 1 UART1_Init ();
63 1 EA = 1; // 允许全局变量
64 1 ES0 = 1; // UART0 中断允许
65 1 EIE2 |= 0x40; // UART1 中断允许
66 1
67 1 tempt0 = 0x03;
68 1 tempt1 = 0x55;
69 1
70 1 sendbit0 = 0;
71 1 sendbit1 = 0;
72 1
73 1
74 1 while(1)
75 1 {
76 2 if(sendbit0)
77 2 {
78 3
79 3 SBUF0 = tempt0;
80 3
81 3 }
82 2 if(sendbit1)
83 2 {
84 3
85 3 SBUF1 = tempt1;
86 3
87 3 }
88 2 }
89 1
90 1 _nop_();
91 1
92 1 }
*** WARNING C280 IN LINE 55 OF UART1.C: 'i': unreferenced local variable
93 //-----------------------------------------------------------------------------
94 // 初始化程序
95 //-----------------------------------------------------------------------------
96
97 //-----------------------------------------------------------------------------
98 // 系统时钟初始化
99 //-----------------------------------------------------------------------------
100 //
101 // 该程序初始化系统时钟,使用22.1184MHz的晶振作为时钟源
102 //
103 void SYSCLK_Init (void)
104 {
105 1 int i; // 延时计数器
106 1
107 1 OSCXCN = 0x67; // 启动外部振荡器使用
108 1 // 22.1184MHz 的晶体
109 1
110 1 for (i=0; i < 256; i++) ; // 等待振荡器起振
111 1
112 1 while (!(OSCXCN & 0x80)) ; // 等待晶体振荡器稳定
113 1
114 1 OSCICN = 0x88; // 选择外部振荡器作为系统时钟源并允许时钟丢失检测器
115 1
116 1
C51 COMPILER V7.10 UART1 02/27/2009 10:50:57 PAGE 3
117 1 }
118
119
120
121 //-----------------------------------------------------------------------------
122 // IO口初始化
123 //-----------------------------------------------------------------------------
124 //
125 // 配置交叉开关和GPIO端口
126 //
127 void PORT_Init (void)
128 {
129 1 XBR0 = 0x07; // 允许UART0
130 1 XBR1 = 0x00;
131 1 XBR2 = 0x44; // 允许交叉开关和弱上拉,允许UART1,P1.0(TX1),P1.1(RX1)
132 1 P0MDOUT |= 0x01; // 使能TX0作为推拉输出
133 1 P1MDOUT |= 0x01; // 使能TX1作为推拉输出
134 1 }
135 //-----------------------------------------------------------------------------
136 // UART0_Init(串口通信扩展用)
137 //-----------------------------------------------------------------------------
138 //
139 // 配置UART0使用Timer1, 波特率为<baudrate>,桢格式为8-N-1.
140 //
141 void UART0_Init (void)
142 {
143 1 SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
144 1 TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload
145 1 TH1 = 244; // set Timer1 reload value for baudrate:-(SYSCLK/BAUDRATE/16)
146 1 TL1 = TH1;
147 1 TR1 = 1; // start Timer1
148 1 // CKCON |= 0x10; // Timer1 uses SYSCLK as time base
149 1 PCON |= 0x90; // SMOD0 = 1,SMOD1 = 1
150 1 // TI0 = 1; // Indicate TX0 ready
151 1 }
152
153 //-----------------------------------------------------------------------------
154 // UART1_Init(串口通信扩展用)
155 //-----------------------------------------------------------------------------
156 //
157 // 配置UART1使用Timer4, 波特率为<baudrate>,桢格式为8-N-1.
158 //
159 void UART1_Init (void)
160 {
161 1
162 1 // RCAP4L = 0xB8; //set value for baudrater:-(65536-SYSCLK/BAUDRATE)/32,(=1976)
163 1 // RCAP4H = 0x07;
164 1 // TL4 = 0xB8;
165 1 // TH4 = 0x07;
166 1 // T4CON = 0x34; //T4CON: timer4, mode 3,UART1 tx/rx rate;Indicate TR4 ready
167 1 SCON1 = 0x50; // SCON1: mode 1, 8-bit UART, enable RX
168 1 }
169
170
171
172 //-----------------------------------------------------------------------------
173 // UART0_ISR(串口中断0子程序)
174 //-----------------------------------------------------------------------------
175 //
176 void UART0_ISR (void) interrupt 4
177 {
178 1 if(RI0)// 接收中断
C51 COMPILER V7.10 UART1 02/27/2009 10:50:57 PAGE 4
179 1 {
180 2 RI0 = 0;// 清接收标志位
181 2 tempr0 = SBUF0;
182 2
183 2 }
184 1 }
185
186
187 //-----------------------------------------------------------------------------
188 // UART1_ISR(串口中断1子程序)
189 //-----------------------------------------------------------------------------
190 //
191 void UART1_ISR (void) interrupt 20
192 {
193 1 if(SCON1 == 0x55)// 接收中断
194 1 {
195 2 SCON1 = 0x50;// 清接收志位
196 2 tempr1 = SBUF1;
197 2 tempt1 = tempr1;
198 2 sendbit1 = 1;
199 2
200 2 }
201 1 }
202
203
204 void delay(unsigned int x)
205 {
206 1 int i;
207 1 for(i=0;i<=x;i++);
208 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 167 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -