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

📄 f320_blinky.lst

📁 c8051f320 的程序
💻 LST
字号:
C51 COMPILER V8.08   F320_BLINKY                                                           01/06/2009 23:17:26 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE F320_BLINKY
OBJECT MODULE PLACED IN F320_Blinky.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F320_Blinky.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-----------------------------------------------------------------------------
   2          // F320_Blinky.c
   3          //-----------------------------------------------------------------------------
   4          // Copyright (C) 2007 Silicon Laboratories, Inc.
   5          //
   6          // AUTH: HF
   7          // DATE: 06 NOV 02
   8          //
   9          // MOD: BD
  10          // DATE: 12 APR 04
  11          // - changed timer 2 setup of CKCON
  12          //    from:    CKCON  &= ~0x60;
  13          //    to:      CKCON  &= ~0x30;
  14          //
  15          // This program flashes the green LED on the C8051F320 target board about
  16          // five times a second using the interrupt handler for Timer2.
  17          //
  18          // Target: C8051F320/1
  19          //
  20          // Tool chain: KEIL Eval 'c'
  21          //
  22          
  23          //-----------------------------------------------------------------------------
  24          // Includes
  25          //-----------------------------------------------------------------------------
  26          #include <c8051f320.h>                    // SFR declarations
  27          
  28          //-----------------------------------------------------------------------------
  29          // 16-bit SFR Definitions for 'F32x
  30          //-----------------------------------------------------------------------------
  31          
  32          sfr16 TMR2RL   = 0xca;                    // Timer2 reload value
  33          sfr16 TMR2     = 0xcc;                    // Timer2 counter
  34          
  35          //-----------------------------------------------------------------------------
  36          // Global CONSTANTS
  37          //-----------------------------------------------------------------------------
  38          
  39          #define SYSCLK       24500000 / 8         // SYSCLK frequency in Hz
  40          
  41          sbit LED_Red = P2^2;                          // LED='1' means ON
  42          sbit LED_Green = P2^3;                        // LED='1' means ON
  43          
  44          sbit SW2 = P2^0;                          // SW2='0' means switch pressed
  45          
  46          //-----------------------------------------------------------------------------
  47          // Function PROTOTYPES
  48          //-----------------------------------------------------------------------------
  49          void SYSCLK_Init (void);
  50          void PORT_Init (void);
  51          void Timer2_Init (int counts);
  52          void Timer2_ISR (void);
  53          
  54          //-----------------------------------------------------------------------------
  55          // MAIN Routine
C51 COMPILER V8.08   F320_BLINKY                                                           01/06/2009 23:17:26 PAGE 2   

  56          //-----------------------------------------------------------------------------
  57          void main (void) {
  58   1      
  59   1         // disable watchdog timer
  60   1         PCA0MD &= ~0x40;                       // WDTE = 0 (clear watchdog timer
  61   1                                                // enable)
  62   1      
  63   1         SYSCLK_Init ();                        // Initialize system clock to
  64   1                                                // 24.5MHz
  65   1         PORT_Init ();                          // Initialize crossbar and GPIO
  66   1         Timer2_Init (SYSCLK / 12 / 10);        // Init Timer2 to generate
  67   1                                                // interrupts at a 10Hz rate.
  68   1      
  69   1         LED_Red = 0;                            //Init the state of LED_Red
  70   1         LED_Green = 1;                        // Init the of LED_Green
  71   1      
  72   1         EA = 1;                                // enable global interrupts
  73   1      
  74   1         while (1) {                            // spin forever
  75   2         }
  76   1      }
  77          
  78          //-----------------------------------------------------------------------------
  79          // SYSCLK_Init
  80          //-----------------------------------------------------------------------------
  81          //
  82          // This routine initializes the system clock to use the internal 24.5MHz / 8
  83          // oscillator as its clock source.  Also enables missing clock detector reset.
  84          //
  85          void SYSCLK_Init (void)
  86          {
  87   1         OSCICN = 0x80;                         // configure internal oscillator for
  88   1                                                // its lowest frequency
  89   1         RSTSRC = 0x04;                         // enable missing clock detector
  90   1      }
  91          
  92          //-----------------------------------------------------------------------------
  93          // PORT_Init
  94          //-----------------------------------------------------------------------------
  95          //
  96          // Configure the Crossbar and GPIO ports.
  97          // P3.3 - LED (push-pull)
  98          //
  99          void PORT_Init (void)
 100          {
 101   1         XBR0     = 0x00;                       // no digital peripherals selected
 102   1         XBR1     = 0x40;                       // Enable crossbar and weak pull-ups
 103   1         P2MDOUT |= 0x0C;                       // enable LED as a push-pull output
 104   1      }
 105          
 106          //-----------------------------------------------------------------------------
 107          // Timer2_Init
 108          //-----------------------------------------------------------------------------
 109          //
 110          // Configure Timer2 to 16-bit auto-reload and generate an interrupt at
 111          // interval specified by <counts> using SYSCLK/48 as its time base.
 112          //
 113          void Timer2_Init (int counts)
 114          {
 115   1         TMR2CN  = 0x00;                        // Stop Timer2; Clear TF2;
 116   1                                                // use SYSCLK/12 as timebase
 117   1         CKCON  &= ~0x30;                       // Timer2 clocked based on T2XCLK;
C51 COMPILER V8.08   F320_BLINKY                                                           01/06/2009 23:17:26 PAGE 3   

 118   1      
 119   1         TMR2RL  = -counts;                     // Init reload values
 120   1         TMR2    = 0xffff;                      // set to reload immediately
 121   1         ET2     = 1;                           // enable Timer2 interrupts
 122   1         TR2     = 1;                           // start Timer2
 123   1      }
 124          
 125          //-----------------------------------------------------------------------------
 126          // Interrupt Service Routines
 127          //-----------------------------------------------------------------------------
 128          
 129          //-----------------------------------------------------------------------------
 130          // Timer2_ISR
 131          //-----------------------------------------------------------------------------
 132          // This routine changes the state of the LED whenever Timer2 overflows.
 133          //
 134          void Timer2_ISR (void) interrupt 5
 135          {
 136   1         TF2H = 0;                              // clear Timer2 interrupt flag
 137   1         LED_Red = ~LED_Red;                            // change state of LED
 138   1         LED_Green = ~LED_Green;                        // change state of LED
 139   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     74    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -