📄 watchdog1.lst
字号:
ARM COMPILER V2.42, watchdog1 09/01/06 14:44:55 PAGE 1
ARM COMPILER V2.42, COMPILATION OF MODULE watchdog1
OBJECT MODULE PLACED IN watchdog1.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe watchdog1.c THUMB DEBUG TABS(4)
stmt level source
1 /*********************************************************************
2
3 Author : ADI - Apps www.analog.com/MicroConverter
4
5 Date : Sept. 2005
6
7 File : Watchdog1.c
8
9 Hardware : Applicable to ADuC702x rev H or I silicon
10 Currently targetting ADuC7026.
11
12 Description : This example demonstrates the use of the Watchdog interrupt.
13 Note that a software reset is required after watchdog interrupt
14 to resume code execution.
15 - on the four first occurences the timer is refreshed/reloaded on time
16 - on the fifth occurence, code is delayed and the timer creates an
17 interrupt
18
19 *********************************************************************/
20 #include<aduc7026.h>
21
22 void delay(int);
23 void IRQ_Handler(void) __irq;
24
25 int main(void)
26 {
27 1
28 1 char i;
29 1 GP1DAT = 0x01000000; // P1.0 configured as output.
30 1 GP4DAT = 0x04000000; // P4.2 configured as output. LED is turned on
31 1
32 1 T3LD = 0x1000; // 0x1000/32768 = 125ms
33 1 T3CON = 0xE2; // IRQ instead of reset, for test purposes only
34 1
35 1 IRQEN = 0x00000020; // Timer3 IRQ
36 1
37 1 while (1)
38 1 {
39 2 for (i=0;i<4;i++){
40 3 delay(0x30000);
41 3 T3CLRI = 0xff;
42 3 GP4DAT ^= 0x00040000;
43 3 }
44 2 delay(0xA0000); // too long delay => gives a watchdog interrupt
45 2 T3CLRI = 0xff;
46 2 GP4DAT ^= 0x00040000;
47 2 }
48 1 }
49
50 void delay (int length)
51 {
52 1 while (length >=0)
53 1 length--;
54 1 }
55
56 /********************************************************************/
57 /* */
58 /* Interrupt Service Rountine */
59 /* */
ARM COMPILER V2.42, watchdog1 09/01/06 14:44:55 PAGE 2
60 /********************************************************************/
61
62 void IRQ_Handler() __irq
63 {
64 1 if ((IRQSTA & WATCHDOG_TIMER_BIT) != 0) // Timer3 IRQ?
65 1 { // Watchdog interrupt allows saving...
66 2 //... data before reset if necessary
67 2 GP1DAT ^= 0x00010000; // Complement P1.0
68 2 RSTSTA = 0x4; // Software reset
69 2 }
70 1 return ;
71 1 }
ARM COMPILER V2.42, watchdog1 09/01/06 14:44:55 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC delay?T
PUBLIC IRQ_Handler?A
PUBLIC main
*** CODE SEGMENT '?PR?main?watchdog1':
25: int main(void)
00000000 B500 PUSH {LR}
26: {
00000002 ; SCOPE-START
29: GP1DAT = 0x01000000; // P1.0 configured as output.
00000002 4800 LDR R1,=0x1000000
00000004 4800 LDR R0,=0xFFFFF430
00000006 6001 STR R1,[R0,#0x0]
30: GP4DAT = 0x04000000; // P4.2 configured as output. LED is turned on
00000008 4800 LDR R1,=0x4000000
0000000A 4800 LDR R0,=0xFFFFF460
0000000C 6001 STR R1,[R0,#0x0]
32: T3LD = 0x1000; // 0x1000/32768 = 125ms
0000000E 4800 LDR R1,=0x1000
00000010 4800 LDR R0,=0xFFFF0360
00000012 6001 STR R1,[R0,#0x0]
33: T3CON = 0xE2; // IRQ instead of reset, for test purposes only
00000014 21E2 MOV R1,#0xE2
00000016 4800 LDR R0,=0xFFFF0368
00000018 6001 STR R1,[R0,#0x0]
35: IRQEN = 0x00000020; // Timer3 IRQ
0000001A 2120 MOV R1,#0x20
0000001C 4800 LDR R0,=0xFFFF0008
0000001E 6001 STR R1,[R0,#0x0]
39: for (i=0;i<4;i++){
00000020 L_9:
00000020 2400 MOV R4,#0x0
00000022 ---- Variable 'i' assigned to Register 'R4' ----
00000022 E00D B L_7 ; T=0x00000040
00000024 L_8:
40: delay(0x30000);
00000024 4800 LDR R0,=0x30000
00000026 F7FF BL delay?T ; T=0x0001 (1)
00000028 FFEB BL delay?T ; T=0x0001 (2)
41: T3CLRI = 0xff;
0000002A 21FF MOV R1,#0xFF
0000002C 4800 LDR R0,=0xFFFF036C
0000002E 6001 STR R1,[R0,#0x0]
42: GP4DAT ^= 0x00040000;
00000030 4800 LDR R2,=0x40000
00000032 4800 LDR R0,=0xFFFFF460
00000034 6801 LDR R1,[R0,#0x0]
00000036 4051 EOR R1,R2
00000038 6001 STR R1,[R0,#0x0]
43: }
0000003A 3401 ADD R4,#0x1
0000003C 0624 LSL R4,R4,#0x18
0000003E 0E24 LSR R4,R4,#0x18
00000040 L_7:
00000040 1C20 MOV R0,R4 ; i
00000042 0600 LSL R0,R0,#0x18 ; i
00000044 0E00 LSR R0,R0,#0x18
00000046 2804 CMP R0,#0x4
00000048 DBEC BLT L_8 ; T=0x00000024
ARM COMPILER V2.42, watchdog1 09/01/06 14:44:55 PAGE 4
44: delay(0xA0000); // too long delay => gives a watchdog interrupt
0000004A 4800 LDR R0,=0xA0000
0000004C F7FF BL delay?T ; T=0x0001 (1)
0000004E FFD8 BL delay?T ; T=0x0001 (2)
45: T3CLRI = 0xff;
00000050 21FF MOV R1,#0xFF
00000052 4800 LDR R0,=0xFFFF036C
00000054 6001 STR R1,[R0,#0x0]
46: GP4DAT ^= 0x00040000;
00000056 4800 LDR R2,=0x40000
00000058 4800 LDR R0,=0xFFFFF460
0000005A 6801 LDR R1,[R0,#0x0]
0000005C 4051 EOR R1,R2
0000005E 6001 STR R1,[R0,#0x0]
47: }
00000060 E7DE B L_9 ; T=0x00000020
00000062 ; SCOPE-END
48: }
00000062 BC08 POP {R3}
00000064 4718 BX R3
00000066 ENDP ; 'main'
*** CODE SEGMENT '?PR?delay?T?watchdog1':
50: void delay (int length)
00000000 ---- Variable 'length' assigned to Register 'R0' ----
52: while (length >=0)
00000000 E000 B L_10 ; T=0x00000004
00000002 L_12:
00000002 3801 SUB R0,#0x1
00000004 L_10:
00000004 1C01 MOV R1,R0 ; length
00000006 2900 CMP R1,#0x0 ; length
00000008 DAFB BGE L_12 ; T=0x00000002
54: }
0000000A 4770 BX R14
0000000C ENDP ; 'delay?T'
*** CODE SEGMENT '?PR?IRQ_Handler?A?watchdog1':
62: void IRQ_Handler() __irq
00000000 E92D0003 STMDB R13!,{R0-R1}
64: if ((IRQSTA & WATCHDOG_TIMER_BIT) != 0) // Timer3 IRQ?
00000004 E5100000 LDR R0,=0xFFFF0000
00000008 E5900000 LDR R0,[R0,#0x0]
0000000C E3100020 TST R0,#0x0020
00000010 0A000006 BEQ L_14 ; Targ=0x30
67: GP1DAT ^= 0x00010000; // Complement P1.0
00000014 E5100000 LDR R0,=0xFFFFF430
00000018 E5901000 LDR R1,[R0,#0x0]
0000001C E2211801 EOR R1,R1,#0x10000
00000020 E5801000 STR R1,[R0,#0x0]
68: RSTSTA = 0x4; // Software reset
00000024 E3A01004 MOV R1,#0x4
00000028 E5100000 LDR R0,=0xFFFF0230
0000002C E5801000 STR R1,[R0,#0x0]
69: }
00000030 L_14:
71: }
00000030 E8BD0003 LDMIA R13!,{R0-R1}
00000034 E25EF004 SUBS R15,R14,#0x0004
00000038 ENDP ; 'IRQ_Handler?A'
Module Information Static
----------------------------------
code size = ------
data size = ------
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 + -