📄 blinky.lst
字号:
C51 COMPILER V8.02 BLINKY 10/12/2007 11:27:01 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE BLINKY
OBJECT MODULE PLACED IN blinky.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe blinky.c DB OE SRC
line level source
1
2 //------------------------------------------------------------------------------------
3 // Blinky.c
4 //------------------------------------------------------------------------------------
5 // Copyright (C) 2005 Silicon Laboratories, Inc.
6 //
7 // AUTH: BD
8 // DATE: 15 MAR 2002
9 //
10 // This program flashes the green LED on the C8051F040 target board about five times
11 // a second using the interrupt handler for Timer3.
12 // Target: C8051F04x
13 //
14 // Tool chain: KEIL Eval 'c'
15 //
16
17 //------------------------------------------------------------------------------------
18 // Includes
19 //------------------------------------------------------------------------------------
20 #include <c8051f040.h> // SFR declarations
21
22 //-----------------------------------------------------------------------------
23 // 16-bit SFR Definitions for 'F04x
24 //-----------------------------------------------------------------------------
25
26 sfr16 RCAP3 = 0xCA; // Timer3 reload value
27 sfr16 TMR3 = 0xCC; // Timer3 counter
28
29 //------------------------------------------------------------------------------------
30 // Global CONSTANTS
31 //------------------------------------------------------------------------------------
32
33 #define SYSCLK 3062500 // approximate SYSCLK frequency in Hz
34
35 sbit LED = P1^6; // green LED: '1' = ON; '0' = OFF
36
37 //------------------------------------------------------------------------------------
38 // Function PROTOTYPES
39 //------------------------------------------------------------------------------------
40 void PORT_Init (void);
41 void Timer3_Init (int counts);
42 void Timer3_ISR (void);
43
44 //------------------------------------------------------------------------------------
45 // MAIN Routine
46 //------------------------------------------------------------------------------------
47 void main (void) {
48 1
49 1 // disable watchdog timer
50 1 WDTCN = 0xde;
51 1 WDTCN = 0xad;
52 1
53 1 SFRPAGE = CONFIG_PAGE; // Switch to configuration page
54 1 PORT_Init ();
55 1
C51 COMPILER V8.02 BLINKY 10/12/2007 11:27:01 PAGE 2
56 1 SFRPAGE = TMR3_PAGE; // Switch to Timer 3 page
57 1 Timer3_Init (SYSCLK / 12 / 10); // Init Timer3 to generate interrupts
58 1 // at a 10 Hz rate.
59 1 EA = 1; // enable global interrupts
60 1 #pragma asm
61 1 mov acc,#00h
62 1 #pragma endasm
63 1
64 1 SFRPAGE = LEGACY_PAGE; // Page to sit in for now
65 1
66 1 while (1) { // spin forever
67 2
68 2 }
69 1 }
70
71 //------------------------------------------------------------------------------------
72 // PORT_Init
73 //------------------------------------------------------------------------------------
74 //
75 // Configure the Crossbar and GPIO ports
76 //
77 void PORT_Init (void)
78 {
79 1 XBR2 = 0x40; // Enable crossbar and weak pull-ups
80 1 P1MDOUT |= 0x40; // enable P1.6 (LED) as push-pull output
81 1 }
82
83 //------------------------------------------------------------------------------------
84 // Timer3_Init
85 //------------------------------------------------------------------------------------
86 //
87 // Configure Timer3 to auto-reload and generate an interrupt at interval
88 // specified by <counts> using SYSCLK/12 as its time base.
89 //
90 //
91 void Timer3_Init (int counts)
92 {
93 1 TMR3CN = 0x00; // Stop Timer3; Clear TF3;
94 1 // use SYSCLK/12 as timebase
95 1 RCAP3 = -counts; // Init reload values
96 1 TMR3 = 0xffff; // set to reload immediately
97 1 EIE2 |= 0x01; // enable Timer3 interrupts
98 1 TR3 = 1; // start Timer3
99 1 }
100
101 //------------------------------------------------------------------------------------
102 // Interrupt Service Routines
103 //------------------------------------------------------------------------------------
104
105 //------------------------------------------------------------------------------------
106 // Timer3_ISR
107 //------------------------------------------------------------------------------------
108 // This routine changes the state of the LED whenever Timer3 overflows.
109 //
110 // NOTE: The SFRPAGE register will automatically be switched to the Timer 3 Page
111 // When an interrupt occurs. SFRPAGE will return to its previous setting on exit
112 // from this routine.
113 //
114 void Timer3_ISR (void) interrupt 14
115 {
116 1 TF3 = 0; // clear TF3
117 1 LED = ~LED; // change state of LED
C51 COMPILER V8.02 BLINKY 10/12/2007 11:27:01 PAGE 3
118 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 68 ----
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 + -