📄 f06x_spi0_eeprom_polled_mode.lst
字号:
196 2 // print status to UART0
197 2 if ((address % 16) == 0)
198 2 {
199 3 printf ("\nVerifying 0x%04x: %02x ", address, (UINT)test_byte);
200 3 LED = ~LED;
201 3 }
202 2 else
203 2 printf ("%02x ", (UINT)test_byte);
204 2
205 2 /* if (test_byte = (address & 0xFF))
206 2 {
207 2 LED = 0;
208 2 printf ("Error at %u\n", address);
209 2 while (1); // Stop here on error (for debugging)
210 2 } */
211 2 }
212 1
213 1 printf ("\n\nVerification success!\n");
214 1
215 1 while (1) // Loop forever
216 1 {
217 2 LED = ~LED; // Flash LED when done (all verified)
218 2 Delay_ms (200);
219 2 }
220 1 }
221
222 //-----------------------------------------------------------------------------
223 // Initialization Subroutines
224 //-----------------------------------------------------------------------------
225
226 //-----------------------------------------------------------------------------
227 // PCA0_Init
228 //-----------------------------------------------------------------------------
229 //
230 // Return Value : None
231 // Parameters : None
232 //
233 // This function disables the watchdog timer.
234 //
235 //-----------------------------------------------------------------------------
236 void Reset_Sources_Init (void)
237 {
238 1 WDTCN = 0xDE;
239 1 WDTCN = 0xAD;
240 1 }
241
C51 COMPILER V8.08 F06X_SPI0_EEPROM_POLLED_MODE 01/31/2008 14:21:16 PAGE 5
242 //-----------------------------------------------------------------------------
243 // OSCILLATOR_Init
244 //-----------------------------------------------------------------------------
245 //
246 // Return Value : None
247 // Parameters : None
248 //
249 // This function initializes the system clock to use the internal oscillator
250 // at 24.5 MHz.
251 //
252 //-----------------------------------------------------------------------------
253 void OSCILLATOR_Init (void)
254 {
255 1 SFRPAGE = CONFIG_PAGE;
256 1 OSCICN = 0x83;
257 1 }
258
259 //-----------------------------------------------------------------------------
260 // PORT_Init
261 //-----------------------------------------------------------------------------
262 //
263 // Return Value : None
264 // Parameters : None
265 //
266 // This function configures the crossbar and GPIO ports.
267 //
268 // P0.0 - TX0 (UART0), Push-Pull, Digital
269 // P0.1 - RX0 (UART0), Open-Drain, Digital
270 // P0.2 - SCK (SPI0), Push-Pull, Digital
271 // P0.3 - MISO (SPI0), Open-Drain, Digital
272 // P0.4 - MOSI (SPI0), Push-Pull, Digital
273 // P0.5 - NSS (SPI0), Push-Pull, Digital
274 // P0.6 - Unassigned, Open-Drain, Digital
275 // P0.7 - Unassigned, Open-Drain, Digital
276
277 // P1.0 - Unassigned, Open-Drain, Digital
278 // P1.1 - Unassigned, Open-Drain, Digital
279 // P1.2 - Unassigned, Open-Drain, Digital
280 // P1.3 - Unassigned, Open-Drain, Digital
281 // P1.4 - Unassigned, Open-Drain, Digital
282 // P1.5 - Unassigned, Open-Drain, Digital
283 // P1.6 - Unassigned, Push-Pull, Digital (LED D3 on Target Board)
284 // P1.7 - Unassigned, Open-Drain, Digital
285
286 // P2.0 - Unassigned, Open-Drain, Digital
287 // P2.1 - Unassigned, Open-Drain, Digital
288 // P2.2 - Unassigned, Open-Drain, Digital
289 // P2.3 - Unassigned, Open-Drain, Digital
290 // P2.4 - Unassigned, Open-Drain, Digital
291 // P2.5 - Unassigned, Open-Drain, Digital
292 // P2.6 - Unassigned, Open-Drain, Digital
293 // P2.7 - Unassigned, Open-Drain, Digital
294
295 // P3.0 - Unassigned, Open-Drain, Digital
296 // P3.1 - Unassigned, Open-Drain, Digital
297 // P3.2 - Unassigned, Open-Drain, Digital
298 // P3.3 - Unassigned, Open-Drain, Digital
299 // P3.4 - Unassigned, Open-Drain, Digital
300 // P3.5 - Unassigned, Open-Drain, Digital
301 // P3.6 - Unassigned, Open-Drain, Digital
302 // P3.7 - Unassigned, Open-Drain, Digital (Switch SW2 on Target Board)
303 //
C51 COMPILER V8.08 F06X_SPI0_EEPROM_POLLED_MODE 01/31/2008 14:21:16 PAGE 6
304 //-----------------------------------------------------------------------------
305 void PORT_Init (void)
306 {
307 1 SFRPAGE = CONFIG_PAGE;
308 1 P0MDOUT = 0x35;
309 1 P1MDOUT = 0x40;
310 1 XBR0 = 0x06;
311 1 XBR2 = 0x40;
312 1 }
313
314 //-----------------------------------------------------------------------------
315 // TIMER2_Init
316 //-----------------------------------------------------------------------------
317 //
318 // Return Value : None
319 // Parameters : None
320 //
321 // Initializes Timer2 to be clocked by SYSCLK for use as a delay timer.
322 //
323 //-----------------------------------------------------------------------------
324 void TIMER2_Init (void)
325 {
326 1 SFRPAGE = TMR2_PAGE;
327 1 TMR2CF = 0x08;
328 1 }
329
330 //-----------------------------------------------------------------------------
331 // UART0_Init
332 //-----------------------------------------------------------------------------
333 //
334 // Return Value : None
335 // Parameters : None
336 //
337 // Configures the UART0 using Timer1, for <BAUDRATE> and 8-N-1. Once this is
338 // set up, the standard printf function can be used to output data.
339 //
340 //-----------------------------------------------------------------------------
341 void UART0_Init (void)
342 {
343 1 SFRPAGE = TIMER01_PAGE;
344 1
345 1 CKCON |= 0x10; // Timer1 uses SYSCLK as clock source
346 1
347 1 TCON &= ~0xC0; // Stop Timer1; clear TF1
348 1 TMOD &= ~0xF0; // Timer1 in 8-bit autoreload mode
349 1 TMOD |= 0x20;
350 1
351 1 TH1 = -(SYSCLK/BAUDRATE/16); // configure reload rate
352 1 TL1 = TH1; // init T1
353 1 TR1 = 1; // Start Timer1
354 1
355 1 SFRPAGE = UART0_PAGE;
356 1
357 1 SCON0 = 0x50; // 8-bit variable baud rate;
358 1 // 9th bit ignored; RX enabled
359 1 // clear all flags
360 1 SSTA0 = 0x10; // clear all flags; enable baud rate
361 1 // doubler;
362 1 // Use Timer1 as RX and TX baud rate
363 1 // source;
364 1 TI0 = 1; // Indicate TX0 ready
365 1 }
C51 COMPILER V8.08 F06X_SPI0_EEPROM_POLLED_MODE 01/31/2008 14:21:16 PAGE 7
366
367 //-----------------------------------------------------------------------------
368 // SPI0_Init
369 //-----------------------------------------------------------------------------
370 //
371 // Return Value : None
372 // Parameters : None
373 //
374 // Configures SPI0 to use 4-wire Single-Master mode. The SPI timing is
375 // configured for Mode 0,0 (data centered on first edge of clock phase and
376 // SCK line low in idle state). The SPI clock is set to 1.75 MHz. The NSS pin
377 // is set to 1.
378 //
379 //-----------------------------------------------------------------------------
380 void SPI0_Init()
381 {
382 1 SFRPAGE = SPI0_PAGE;
383 1 SPI0CFG = 0x40;
384 1 SPI0CN = 0x0D;
385 1
386 1 // The equation for SPI0CKR is (SYSCLK/(2*F_SCK_MAX))-1, but this yields
387 1 // a SPI frequency that is slightly more than 2 MHz. But, 2 MHz is the max
388 1 // frequency spec of the EEPROM used here. So, the "-1" term is omitted
389 1 // in the following usage:
390 1 SPI0CKR = (SYSCLK/(2*F_SCK_MAX));
391 1 }
392
393 //-----------------------------------------------------------------------------
394 // Init_Device
395 //-----------------------------------------------------------------------------
396 //
397 // Return Value : None
398 // Parameters : None
399 //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -