📄 rtctest.lst
字号:
ARM COMPILER V2.53, rtctest 24/10/06 16:55:18 PAGE 1
ARM COMPILER V2.53, COMPILATION OF MODULE rtctest
OBJECT MODULE PLACED IN .\Obj\rtctest.obj
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe rtctest.c THUMB INCDIR(..\Common\inc) DEBUG PRINT(.\LST\RTCTEST.LST) TABS(4)
- OBJECT(.\Obj\rtctest.obj)
stmt level source
1 /*****************************************************************************
2 * rtctest.c: main C entry file for Philips LPC214x Family Microprocessors
3 *
4 * Copyright(C) 2006, Philips Semiconductor
5 * All rights reserved.
6 *
7 * History
8 * 2005.10.01 ver 1.00 Prelimnary version, first Release
9 *
10 ******************************************************************************/
11 #include "LPC214x.H" /* LPC21xx definitions */
12 #include "type.h"
13 #include "irq.h"
14 //#include "timer.h"
15 #include "rtc.h"
16
17 extern DWORD alarm_on;
18 RTCTime local_time, alarm_time, current_time;
19
20 /*****************************************************************************
21 ** Main Function main()
22 ******************************************************************************/
23 int main (void)
24 {
25 1 init_VIC();
26 1
27 1 /* Initialize RTC module */
28 1 RTCInit();
29 1
30 1 // local_time.RTC_Sec = 0;
31 1 // local_time.RTC_Min = 17;
32 1 // local_time.RTC_Hour = 16;
33 1 // local_time.RTC_Mday = 24;
34 1 // local_time.RTC_Wday = 3;
35 1 // local_time.RTC_Yday = 8; /* current date 12/08/2005 */
36 1 // local_time.RTC_Mon = 10;
37 1 // local_time.RTC_Year = 2006;
38 1 // RTCSetTime( local_time ); /* Set local time */
39 1
40 1 alarm_time.RTC_Sec = 0;
41 1 alarm_time.RTC_Min = 0;
42 1 alarm_time.RTC_Hour = 0;
43 1 alarm_time.RTC_Mday = 1;
44 1 alarm_time.RTC_Wday = 0;
45 1 alarm_time.RTC_Yday = 1; /* alarm date 01/01/2006 */
46 1 alarm_time.RTC_Mon = 1;
47 1 alarm_time.RTC_Year = 2006;
48 1 RTCSetAlarm( alarm_time ); /* set alarm time */
49 1
50 1 /* install RTC timer handler mainly for alarm control */
51 1 // if ( install_irq( RTC_INT, (void *)RTCHandler ) == FALSE )
52 1 // {
53 1 // while ( 1 ); /* very bad happened */
54 1 // }
55 1
56 1 /* mask off alarm mask, turn on IMYEAR in the counter increment interrupt
57 1 register */
58 1 RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);
ARM COMPILER V2.53, rtctest 24/10/06 16:55:18 PAGE 2
59 1 CIIR = IMMIN | IMYEAR;
60 1 /* 2006/01/01/00:00:00 is the alarm on */
61 1
62 1 RTCStart();
63 1
64 1 while (1)
65 1 {
66 2 current_time = RTCGetTime();
67 2 /* Loop forever */
68 2 if ( alarm_on != 0 )
69 2 {
70 3 alarm_on = 0;
71 3 /* Get current time when alarm is on */
72 3 current_time = RTCGetTime();
73 3 }
74 2 }
75 1 return 0;
76 1 }
77
78 /******************************************************************************
79 ** End Of File
80 ******************************************************************************/
ARM COMPILER V2.53, rtctest 24/10/06 16:55:18 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (init_VIC?T)
EXTERN CODE16 (RTCInit?T)
EXTERN CODE16 (RTCStart?T)
EXTERN CODE16 (RTCGetTime?T)
EXTERN CODE16 (RTCSetAlarm?T)
EXTERN CODE16 (RTCSetAlarmMask?T)
EXTERN DATA (alarm_on)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC main
PUBLIC local_time
PUBLIC alarm_time
PUBLIC current_time
*** DATA SEGMENT '?DT0?rtctest':
00000000 local_time:
00000000 DS 32
00000020 alarm_time:
00000020 DS 32
00000040 current_time:
00000040 DS 32
*** CODE SEGMENT '?PR?main?rtctest':
23: int main (void)
00000000 B500 PUSH {LR}
25: init_VIC();
00000002 F7FF BL init_VIC?T ; T=0x0001 (1)
00000004 FFFD BL init_VIC?T ; T=0x0001 (2)
28: RTCInit();
00000006 F7FF BL RTCInit?T ; T=0x0001 (1)
00000008 FFFB BL RTCInit?T ; T=0x0001 (2)
40: alarm_time.RTC_Sec = 0;
0000000A 2200 MOV R2,#0x0
0000000C 4800 LDR R0,=alarm_time ; alarm_time
0000000E 6002 STR R2,[R0,#0x0] ; alarm_time
41: alarm_time.RTC_Min = 0;
00000010 4800 LDR R0,=alarm_time + 0x4 ; alarm_time+4
00000012 6002 STR R2,[R0,#0x0] ; alarm_time+4
42: alarm_time.RTC_Hour = 0;
00000014 4800 LDR R0,=alarm_time + 0x8 ; alarm_time+8
00000016 6002 STR R2,[R0,#0x0] ; alarm_time+8
43: alarm_time.RTC_Mday = 1;
00000018 2101 MOV R1,#0x1
0000001A 4800 LDR R0,=alarm_time + 0xC ; alarm_time+12
0000001C 6001 STR R1,[R0,#0x0] ; alarm_time+12
44: alarm_time.RTC_Wday = 0;
0000001E 4800 LDR R0,=alarm_time + 0x18 ; alarm_time+24
00000020 6002 STR R2,[R0,#0x0] ; alarm_time+24
45: alarm_time.RTC_Yday = 1; /* alarm date 01/01/2006 */
00000022 4800 LDR R0,=alarm_time + 0x1C ; alarm_time+28
00000024 6001 STR R1,[R0,#0x0] ; alarm_time+28
46: alarm_time.RTC_Mon = 1;
00000026 4800 LDR R0,=alarm_time + 0x10 ; alarm_time+16
00000028 6001 STR R1,[R0,#0x0] ; alarm_time+16
47: alarm_time.RTC_Year = 2006;
0000002A 4800 LDR R1,=0x7D6
0000002C 4800 LDR R0,=alarm_time + 0x14 ; alarm_time+20
0000002E 6001 STR R1,[R0,#0x0] ; alarm_time+20
48: RTCSetAlarm( alarm_time ); /* set alarm time */
00000030 4800 LDR R0,=alarm_time ; alarm_time
00000032 B088 SUB R13,#0x20
ARM COMPILER V2.53, rtctest 24/10/06 16:55:18 PAGE 4
00000034 4669 MOV R1,R13
00000036 2308 MOV R3,#0x8
00000038 L_8:
00000038 C804 LDMIA R0!,{R2}
0000003A C104 STMIA R1!,{R2}
0000003C 1E5B SUB R3,R3,#0x1
0000003E D1FB BNE L_8 ; T=0x00000038
00000040 F7FF BL RTCSetAlarm?T ; T=0x0001 (1)
00000042 FFDE BL RTCSetAlarm?T ; T=0x0001 (2)
00000044 B008 ADD R13,#0x20
58: RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);
00000046 20FF MOV R0,#0xFF
00000048 F7FF BL RTCSetAlarmMask?T ; T=0x0001 (1)
0000004A FFDA BL RTCSetAlarmMask?T ; T=0x0001 (2)
59: CIIR = IMMIN | IMYEAR;
0000004C 2182 MOV R1,#0x82
0000004E 4800 LDR R0,=0xE002400C
00000050 6001 STR R1,[R0,#0x0]
62: RTCStart();
00000052 F7FF BL RTCStart?T ; T=0x0001 (1)
00000054 FFD5 BL RTCStart?T ; T=0x0001 (2)
64: while (1)
00000056 L_3:
66: current_time = RTCGetTime();
00000056 4800 LDR R0,=current_time ; current_time
00000058 F7FF BL RTCGetTime?T ; T=0x0001 (1)
0000005A FFD2 BL RTCGetTime?T ; T=0x0001 (2)
68: if ( alarm_on != 0 )
0000005C 4800 LDR R0,=alarm_on ; alarm_on
0000005E 6800 LDR R0,[R0,#0x0] ; alarm_on
00000060 2800 CMP R0,#0x0
00000062 D0F8 BEQ L_3 ; T=0x00000056
70: alarm_on = 0;
00000064 2100 MOV R1,#0x0
00000066 4800 LDR R0,=alarm_on ; alarm_on
00000068 6001 STR R1,[R0,#0x0] ; alarm_on
72: current_time = RTCGetTime();
0000006A 4800 LDR R0,=current_time ; current_time
0000006C F7FF BL RTCGetTime?T ; T=0x0001 (1)
0000006E FFC8 BL RTCGetTime?T ; T=0x0001 (2)
74: }
00000070 E7F1 B L_3 ; T=0x00000056
76: }
00000072 BC08 POP {R3}
00000074 4718 BX R3
00000076 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = 96
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -