📄 f350_adc_buffered_2.lst
字号:
166 1 }
167
168
169 //-----------------------------------------------------------------------------
170 // SYSCLK_Init
171 //-----------------------------------------------------------------------------
172 //
173 // This routine initializes the system clock to use the internal 24.5MHz
174 // oscillator as its clock source, with x 2 multiply for
175 // 49 MHz operation. Also enables missing clock detector reset.
176 //
177 void SYSCLK_Init (void)
178 {
179 1 unsigned i;
C51 COMPILER V7.00 F350_ADC_BUFFERED_2 02/08/2009 08:08:02 PAGE 4
180 1
181 1 OSCICN = 0x80; // enable intosc
182 1 CLKSEL = 0x00; // select intosc as sysclk source
183 1
184 1 // INTOSC configure
185 1
186 1 OSCICN = 0x83;
187 1
188 1 // PLL configure
189 1
190 1 CLKMUL = 0x00; // Reset Clock Multiplier
191 1
192 1 CLKMUL &= ~0x03; // select INTOSC / 2 as PLL source
193 1
194 1 CLKMUL |= 0x80; // Enable 4x Multipler (MULEN = 1)
195 1
196 1 for (i = 0; i < 125; i++); // Delay for at least 5us
197 1
198 1 CLKMUL |= 0xC0; // Initialize Multiplier
199 1
200 1 while (!(CLKMUL & 0x20)); // Poll for Multiply Ready
201 1
202 1 // SYSCLK configure
203 1
204 1 VDM0CN = 0x80; // enable VDD monitor
205 1 RSTSRC = 0x06; // enable missing clock detector
206 1 // and VDD monitor reset sources
207 1 CLKSEL = 0x02; // select PLL as clock source
208 1 }
209
210 //-----------------------------------------------------------------------------
211 // PORT_Init
212 //-----------------------------------------------------------------------------
213 //
214 // Configure the Crossbar and GPIO ports.
215 // P0.4 - TX0 (push-pull)
216 // P0.5 - RX0
217
218 void PORT7_Init (void)
219 {
220 1 XBR0 |= 0x01; // UART0 Selected
221 1 XBR1 |= 0x40; // Enable crossbar and weak pull-ups
222 1 P0MDOUT |= 0xD0; // TX, LEDs = Push-pull
223 1 }
224
225 //-----------------------------------------------------------------------------
226 // ADC0_Init extVREF Bipolar AIN0.1-AIN0.0
227 //-----------------------------------------------------------------------------
228 //
229 // This function initializes the ADC to measure across AIN0.1 and AIN0.0
230 // on the Target Board (Differential measurements, Bipolar codes)
231
232 void ADC0_Init (void)
233 {
234 1 unsigned ADC0_decimation;
235 1
236 1 REF0CN &= ~0x01; // disable internal vref
237 1
238 1 // REF0CN |= 0x01; // (enable if using internal vref)
239 1
240 1
241 1 // ADC0CN = 0x00; // unipolar output codes, GAIN=1
C51 COMPILER V7.00 F350_ADC_BUFFERED_2 02/08/2009 08:08:02 PAGE 5
242 1 ADC0CN = 0x10; // Bipolar output codes, GAIN=1
243 1
244 1 // ADC0CF = 0x00; // interrupts upon SINC3 filter output
245 1 // and uses internal VREF
246 1
247 1 ADC0CF = 0x04; // interrupts upon SINC3 filter output
248 1 // and uses external VREF
249 1
250 1
251 1 ADC0CLK = (SYSCLK/MDCLK)-1; // Ideally, MDCLK = 2.4576 MHz
252 1
253 1 // Generate MDCLK for modulator.
254 1
255 1
256 1
257 1 // program decimation rate for desired OWR
258 1
259 1 ADC0_decimation = (unsigned long) SYSCLK/ (unsigned long) OWR /
260 1 (unsigned long) (ADC0CLK+1)/(unsigned long)128;
261 1
262 1 ADC0_decimation--;
263 1
264 1 ADC0DEC = ADC0_decimation;
265 1
266 1
267 1 ADC0BUF = 0x00; // 关闭输入缓冲
268 1
269 1
270 1 ADC0MUX = 0x01; // 差分输入
271 1 // AIN+ => AIN0.0
272 1 // AIN- => AIN0.1
273 1
274 1
275 1
276 1
277 1
278 1 ADC0MD |= 0x80; // 使能(IDLE Mode)
279 1 }
280
281 //-----------------------------------------------------------------------------
282 // UART0_Init
283 //-----------------------------------------------------------------------------
284 //
285 // Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
286 //
287 void UART0_Init (void)
288 {
289 1 SCON0 = 0x10; // 8-bit variable bit rate
290 1 // level of STOP bit is ignored
291 1 // RX enabled
292 1 // ninth bits are zeros
293 1 // clear RI0 and TI0 bits
294 1 if (SYSCLK/BAUDRATE/2/256 < 1)
295 1 {
296 2 TH1 = -(SYSCLK/BAUDRATE/2);
297 2 CKCON |= 0x08; // T1M = 1; SCA1:0 = xx
298 2 }
299 1 else if (SYSCLK/BAUDRATE/2/256 < 4)
300 1 {
301 2 TH1 = -(SYSCLK/BAUDRATE/2/4);
302 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 01
303 2 CKCON |= 0x01;
C51 COMPILER V7.00 F350_ADC_BUFFERED_2 02/08/2009 08:08:02 PAGE 6
304 2 }
305 1 else if (SYSCLK/BAUDRATE/2/256 < 12)
306 1 {
307 2 TH1 = -(SYSCLK/BAUDRATE/2/12);
308 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 00
309 2 }
310 1 else
311 1 {
312 2 TH1 = -(SYSCLK/BAUDRATE/2/48);
313 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10
314 2 CKCON |= 0x02;
315 2 }
316 1
317 1 TL1 = TH1; // init Timer1
318 1 TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit autoreload
319 1 TMOD |= 0x20;
320 1 TR1 = 1; // START Timer1
321 1 TI0 = 1; // Indicate TX0 ready
322 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 972 ----
CONSTANT SIZE = 134 ----
XDATA SIZE = 512 ----
PDATA SIZE = ---- ----
DATA SIZE = 6 14
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 + -