📄 timer.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 09/Sep/2008 07:54:50 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\AT91EBxx\timer.c #
# Command line = E:\AT91EBxx\timer.c --fpu None -D RAMCODE=1 -lCN #
# E:\AT91EBxx\ramcode-EBxx\List\ -o #
# E:\AT91EBxx\ramcode-EBxx\Obj\ -z3 --no_cse #
# --no_unroll --no_inline --no_code_motion --no_tbaa #
# --no_clustering --no_scheduling --debug --cpu_mode #
# arm --endian little --cpu ARM7TDMI --stack_align 4 #
# --interwork -e --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\arm\LIB\dl4tpainl8n.h" -I "C:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Evaluation\arm\INC\" #
# List file = E:\AT91EBxx\ramcode-EBxx\List\timer.lst #
# Object file = E:\AT91EBxx\ramcode-EBxx\Obj\timer.r79 #
# #
# #
##############################################################################
E:\AT91EBxx\timer.c
1
2 /*
3 * $Revision: 1.3 $
4 */
5
6 #include "config.h"
7 #include "timer.h"
8 #include "button.h"
9
\ In segment DATA_Z, align 4, align-sorted
10 static volatile int ms_ctr = 0;
\ ms_ctr:
\ 00000000 DS8 4
\ In segment DATA_Z, align 4, align-sorted
11 static volatile int tick = 0;
\ tick:
\ 00000000 DS8 4
12
13 extern int test_number;
14
15 static void ProcessInput(void);
16
17
\ In segment CODE, align 4, keep-with-next
18 void TimerBeat(void)
19 {
\ TimerBeat:
\ 00000000 00402DE9 PUSH {LR}
20 // Called at 1000 Hz rate.
21 ms_ctr++; // Sleep counter.
\ 00000004 ........ LDR R0,??DataTable5 ;; ms_ctr
\ 00000008 ........ LDR R1,??DataTable5 ;; ms_ctr
\ 0000000C 001091E5 LDR R1,[R1, #+0]
\ 00000010 011091E2 ADDS R1,R1,#+1
\ 00000014 001080E5 STR R1,[R0, #+0]
22 tick++; // Button debounce counter.
\ 00000018 ........ LDR R0,??DataTable7 ;; tick
\ 0000001C ........ LDR R1,??DataTable7 ;; tick
\ 00000020 001091E5 LDR R1,[R1, #+0]
\ 00000024 011091E2 ADDS R1,R1,#+1
\ 00000028 001080E5 STR R1,[R0, #+0]
23 ProcessInput(); // Check buttons.
\ 0000002C ........ BL ProcessInput
24 }
\ 00000030 0040BDE8 POP {LR}
\ 00000034 1EFF2FE1 BX LR ;; return
25
26
\ In segment CODE, align 4, keep-with-next
27 void Sleep(int milliseconds)
28 {
29 ms_ctr = 0;
\ Sleep:
\ 00000000 ........ LDR R1,??DataTable5 ;; ms_ctr
\ 00000004 0020A0E3 MOV R2,#+0
\ 00000008 002081E5 STR R2,[R1, #+0]
30 while (ms_ctr < milliseconds) ;
\ ??Sleep_0:
\ 0000000C ........ LDR R1,??DataTable5 ;; ms_ctr
\ 00000010 001091E5 LDR R1,[R1, #+0]
\ 00000014 000051E1 CMP R1,R0
\ 00000018 FBFFFFBA BLT ??Sleep_0
31 }
\ 0000001C 1EFF2FE1 BX LR ;; return
32
33
\ In segment CODE, align 4, keep-with-next
34 static void ProcessInput(void)
35 {
\ ProcessInput:
\ 00000000 00402DE9 PUSH {LR}
36 /* Scan buttons with 50 ms interval */
37 if (tick >= 50)
\ 00000004 ........ LDR R0,??DataTable7 ;; tick
\ 00000008 000090E5 LDR R0,[R0, #+0]
\ 0000000C 320050E3 CMP R0,#+50
\ 00000010 030000BA BLT ??ProcessInput_0
38 {
39 ButtonScan();
\ 00000014 ........ _BLF ButtonScan,??ButtonScan??rA
40 tick = 0;
\ 00000018 ........ LDR R0,??DataTable7 ;; tick
\ 0000001C 0010A0E3 MOV R1,#+0
\ 00000020 001080E5 STR R1,[R0, #+0]
41 }
42 }
\ ??ProcessInput_0:
\ 00000024 0040BDE8 POP {LR}
\ 00000028 1EFF2FE1 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
\ ??DataTable5:
\ 00000000 ........ DC32 ms_ctr
\ In segment CODE, align 4, keep-with-next
\ ??DataTable7:
\ 00000000 ........ DC32 tick
43
Maximum stack usage in bytes:
Function CSTACK
-------- ------
ProcessInput 4
Sleep 0
TimerBeat 4
Segment part sizes:
Function/Label Bytes
-------------- -----
ms_ctr 4
tick 4
TimerBeat 56
Sleep 32
ProcessInput 44
??DataTable5 4
??DataTable7 4
Others 36
164 bytes in segment CODE
8 bytes in segment DATA_Z
12 bytes in segment INITTAB
140 bytes of CODE memory (+ 36 bytes shared)
8 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -