📄 uart0.lst
字号:
C51 COMPILER V7.06 UART0 01/20/2005 21:48:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE UART0
OBJECT MODULE PLACED IN UART0.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe UART0.c DB OE
stmt level source
1 #include <main.H>
2 #include <stdio.h>
3 //#include <C8051F020.H>
4
5 /*修改时钟!!!!*/
6 /*帧错误和传输错误监测需要吗?查询方式?只是具有发送功能?*/
7 void UART0_transmit (unsigned int *samples, unsigned int numSample)
8 {
9 1 volatile int i;
10 1 // SFRPAGE=0x0F;
11 1 // WDTCN = 0xde; // disable watchdog timer
12 1 // WDTCN = 0xad;
13 1 //Timer1_Init();
14 1 //SYSCLK_Init ();
15 1 // PORT_Init (); // initialize crossbar and GPIO
16 1 UART0_Init (); // initialize UART0
17 1 //Timer2_Init (65536-(SYSCLK/SAMPLE_RATE/32/2)); //可选择定时器1或2作为波特率发生器
18 1 // Timer1_Init();
19 1 //??????????? ES0 =1; // sample rat//允许RI0或TI0产生中断。中断号为4
20 1 //EA =1; // Enable global interrupts
21 1 //ES0 =1; // sample rat//??RI0?TI0????
22 1 // EA =1; // Enable global interrupts
23 1 EA=0;
24 1 LED = 0;
25 1 while (1)
26 1 { // disable interrupts
27 2 SFRPAGE=0x0;
28 2 for(i=0;i<numSample;i++)
29 2 {
30 3 TI0=0;
31 3 SBUF0=(samples[i]>>8)&0x0F;
32 3 while(TI0==0);
33 3 TI0=0;
34 3 SBUF0=samples[i]&0xFF;
35 3 while(TI0==0);
36 3 TI0=0;
37 3 LED=~LED;
38 3 //break;
39 3 }
40 2 break;
41 2 }
42 1 TR1=0;//停止定时器1
43 1 SCON0 &=0xEF; //禁止接收
44 1 TI0=0;
45 1 RI0=0;
46 1 ES0=0;
47 1 EA=0;
48 1
49 1 }
50
51 //-----------------------------------------------------------------------------
52 // SYSCLK_Init
53 //-----------------------------------------------------------------------------
54 //
55 // This routine initializes the system clock to use an 22.1184MHz crystal
C51 COMPILER V7.06 UART0 01/20/2005 21:48:16 PAGE 2
56 // as its clock source.
57 //
58 /*void SYSCLK_Init (void)
59 {
60 int i; // delay counter
61
62 OSCXCN = 0x67; // start external oscillator with
63 // 22.1184MHz crystal
64
65 for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
66
67 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
68
69 OSCICN = 0x88; // select external oscillator as SYSCLK
70 // source and enable missing clock
71 // detector
72 }*/
73
74 /*//-----------------------------------------------------------------------------
75 // PORT_Init
76 //-----------------------------------------------------------------------------
77 //
78 // Configure the Crossbar and GPIO ports
79 //
80 void PORT_UARTO_Init (void)
81 {
82 XBR0 = 0x04; // Enable UART0
83 XBR1 = 0x00;
84 XBR2 = 0x40; // Enable crossbar and weak pull-ups
85 P0MDOUT |= 0x01; // enable TX0 as a push-pull output
86 P1MDOUT |= 0x40; // enable P1.6 (LED) as push-pull output
87 }
88
89 //-----------------------------------------------------------------------------
90 // UART0_Init
91 //-----------------------------------------------------------------------------
92 //
93 // Configure the UART0 using Timer1, for <baudrate> and 8-N-1.
94 //
95 void UART0_Init (void)
96 {
97 SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
98
99 }
100
101 //----------------------------------------------------------------------------
102 void Timer1_UARTO_Init(void)
103 {
104 TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload
105 TH1 = -(SYSCLK_UART0/BAUDRATE/16); // set Timer1 reload value for baudrate
106 //TH1 = 70;
107 //TL1 = 70;
108 // ET1 = 1;
109 TR1 = 1; // start Timer1
110 CKCON |= 0x10; // Timer1 uses SYSCLK as time base
111 PCON |= 0x80; // SMOD00 = 1
112 } */
113
114 void PORT_Init (void)
115 {
116 1 SFRPAGE=0x0F;
117 1 XBR0 = 0x05; //UART0,SMbus0接到端口引脚
C51 COMPILER V7.06 UART0 01/20/2005 21:48:16 PAGE 3
118 1 XBR1 = 0x04; //外部中断0接到端口引脚(P0.4)
119 1 //XBR0 = 0x04; //使能UART0
120 1 //XBR1 = 0x00;
121 1 XBR2 = 0x40; // 使能交叉开关和弱上拉
122 1 //P0MDOUT |=0x0D;
123 1 P0MDOUT |=0x01;
124 1 // P0MDOUT |= 0x01; // ??TX0?????
125 1 P1MDOUT |= 0x40; // ??P1.6(LED)?????
126 1 }
127
128 //-----------------------------------------------------------------------------
129 // UART0初始化
130 //-----------------------------------------------------------------------------
131 //
132 // 配置UART0 使用定时器1为波特率发生器
133 //
134 void UART0_Init (void)
135 {
136 1 SFRPAGE=0x0;
137 1 SCON0 = 0x50; // SCON0: 模式1(异步方式,数据位8,一个起始位和一个停止位), 8位UART,可变波特率。使能RX
138 1
139 1
140 1 /*修改 */
141 1 //TL1 = -(SYSCLK_AD/BAUDRATE/16);
142 1
143 1 TH1 = -(SYSCLK_AD/BAUDRATE/16); // 根据波特率的值设定定时器1重装值
144 1 //TH1 = -(24500000/BAUDRATE/16/8);
145 1
146 1 CKCON |= 0x10; // 定时器1使用系统时钟作为时基(T1M=1)
147 1 //PCON |= 0x80; // SMOD00 = 1
148 1
149 1 SSTA0 |=0x10;//SMOD00 = 1,禁止系统时钟/2
150 1 TL1=TH1;
151 1 //TR1 = 1; // 启动定时器1
152 1 TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位重装
153 1 TR1 = 1; // 启动定时器1
154 1 TI0 = 1; // 表示TX0就绪
155 1 }
156 //void UART0_ISR(void) interrupt 4
157 //{
158 //for(i=0;i<=numSample;i++)
159 // {
160 // SFRPAGE=0x0;
161 //TI0=0;
162 //SBUF0=numSample;
163 //SBUF0=samples[i];
164 //while(TI0==0);
165 //TI0=0;
166 //SBUF0=samples[i]&0xFF;
167 //SBUF0=0xFF;
168 //while(TI0==0);
169 // TI0=0;
170 // SBUF0=(samples[i]>>8)&0x0F;
171 // while(TI0==0);
172 // TI0=0;
173 // LED=~LED;
174 // }
175 //}
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 168 ----
C51 COMPILER V7.06 UART0 01/20/2005 21:48:16 PAGE 4
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
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 + -