📄 f320_blinky.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 + -