⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f06x_spi0_eeprom_polled_mode.lst

📁 // This program accesses a SPI EEPROM using polled mode access. The F06x MCU // is configured in 4-
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -