📄 menu.lst
字号:
ARM COMPILER V2.42, menu 27/03/06 10:43:15 PAGE 1
ARM COMPILER V2.42, COMPILATION OF MODULE menu
OBJECT MODULE PLACED IN .\obj\menu.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe src\menu.c THUMB DEBUG PRINT(.\LST\MENU.LST) TABS(4) OBJECT(.\obj\menu.obj)
stmt level source
1 /***************************************************************
2 *
3 * Graphical User Interface with GLCD for LPC2000 ARM7TDMI
4 *
5 * by Martin THOMAS <eversmith@heizung-thomas.de>
6 *
7 ***************************************************************/
8
9 #include "types.h"
10 #include "main.h"
11 #include "fonts.h"
12 #include "menu.h"
13
14 #define MENUYOFFS 11
15 #define MENUXOFFS 3
16
17 const char main1[] = "DCF77";
18 const char main2[] = "Real Time Clock";
19 const char main3[] = "Display Options";
20 const char main4[] = "Show Clock";
21 const char* const mainmenutxt[] = {main1, main2, main3, main4};
22 #define mainentries 4
23 #define mainexit (mainentries-1)
24 #define maindcf 0
25 #define mainrtc 1
26 #define maindisplay 2
27
28 const char display1[] = "Contrast";
29 const char display2[] = "Brightness";
30 const char display3[] = "Store Defaults";
31 const char display4[] = "Main Menu";
32 const char* const displaymenutxt[] = {display1, display2, display3, display4};
33
34 #define displayentries (sizeof(displaymenutxt)/sizeof(const char*))
35 #define displayexit (displayentries-1)
36 #define displaycontrast 0
37 #define displaybrightness 1
38 #define displaystore 2
39
40 static void do_menu(const char* title, const char* const ms[], const BYTE n, BYTE* menutop, BYTE *menusel
-, BYTE *mstate)
41 {
42 1 BYTE i;
43 1
44 1 if (*mstate)
45 1 {
46 2 glcd_ClrScr(GLCD_CLEAR_BUFFER);
47 2 glcd_Text(MENUXOFFS+1,2,FONT_SIX_DOT,title);
48 2 glcd_Line(0,9,128,9,GLCD_MODE_SET);
49 2 for (i=0;i<n;i++)
50 2 {
51 3 glcd_Text(MENUXOFFS,MENUYOFFS+1+i*13,FONT_NINE_DOT,ms[i]);
52 3 }
53 2 glcd_Box(1,(*menusel*13)+MENUYOFFS,126,13,GLCD_MODE_XOR);
54 2 glcd_UpdateAll();
55 2 *mstate = 0;
56 2 }
57 1 }
*** WARNING C47 IN LINE 40 OF SRC\MENU.C: 'menutop': unreferenced parameter
ARM COMPILER V2.42, menu 27/03/06 10:43:15 PAGE 2
58
59 void ui_main_menu(BYTE *mainstate)
60 {
61 1 static BYTE state=0;
62 1 static BYTE menutop=0;
63 1 static BYTE menusel=0;
64 1 BYTE mstate=1;
65 1
66 1 if (state == 0)
67 1 {
68 2 mstate=1;
69 2 state=1;
70 2 }
71 1
72 1 do_menu("Main Menu",mainmenutxt,mainentries,&menutop,&menusel,&mstate);
73 1
74 1 if ( 1 )
75 1 {
76 2 glcd_ClrScr(GLCD_CLEAR_BUFFER);
77 2 switch (menusel)
78 2 {
79 3 case maindcf:
80 3 state = 0;
81 3 *mainstate = STATE_MAIN_DCF;
82 3 break;
83 3 case mainrtc:
84 3 state = 0;
85 3 *mainstate = STATE_MAIN_RTC;
86 3 break;
87 3 case maindisplay:
88 3 state = 0;
89 3 *mainstate = STATE_MAIN_DISPLAY;
90 3 break;
91 3 case mainexit:
92 3 state = 0;
93 3 menutop = 0;
94 3 menusel = 0;
95 3 *mainstate = STATE_SHOW_CLOCK;
96 3 break;
97 3 }
98 2 }
99 1 }
ARM COMPILER V2.42, menu 27/03/06 10:43:15 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (glcd_Line?T)
EXTERN CODE16 (glcd_Box?T)
EXTERN CODE16 (glcd_ClrScr?T)
EXTERN CODE16 (glcd_Update?T)
EXTERN CODE16 (glcd_Text?T)
*** PUBLICS:
PUBLIC main1
PUBLIC main2
PUBLIC main3
PUBLIC main4
PUBLIC mainmenutxt
PUBLIC display1
PUBLIC display2
PUBLIC display3
PUBLIC display4
PUBLIC displaymenutxt
PUBLIC ui_main_menu?T
*** DATA SEGMENT '?CON?menu':
00000000 mainmenutxt:
00000000 BEGIN_INIT
00000000 00000000 DD main1
00000004 00000000 DD main2
00000008 00000000 DD main3
0000000C 00000000 DD main4
00000010 END_INIT
00000010 displaymenutxt:
00000010 BEGIN_INIT
00000010 00000000 DD display1
00000014 00000000 DD display2
00000018 00000000 DD display3
0000001C 00000000 DD display4
00000020 END_INIT
00000020 ??S_8:
00000020 DB 'Main Menu',0x00
0000002A main1:
0000002A BEGIN_INIT
0000002A DB 'DCF77',0x00
00000030 END_INIT
00000030 main2:
00000030 BEGIN_INIT
00000030 DB 'Real Time Clock',0x00
00000040 END_INIT
00000040 main3:
00000040 BEGIN_INIT
00000040 DB 'Display Options',0x00
00000050 END_INIT
00000050 main4:
00000050 BEGIN_INIT
00000050 DB 'Show Clock',0x00
0000005B END_INIT
0000005B display1:
0000005B BEGIN_INIT
0000005B DB 'Contrast',0x00
00000064 END_INIT
00000064 display2:
00000064 BEGIN_INIT
00000064 DB 'Brightness',0x00
0000006F END_INIT
0000006F display3:
0000006F BEGIN_INIT
ARM COMPILER V2.42, menu 27/03/06 10:43:15 PAGE 4
0000006F DB 'Store Defaults',0x00
0000007E END_INIT
0000007E display4:
0000007E BEGIN_INIT
0000007E DB 'Main Menu',0x00
00000088 END_INIT
*** DATA SEGMENT '?DT0?menu':
00000000 state:
00000000 BEGIN_INIT
00000000 00 DB 0x0
00000001 END_INIT
00000001 menutop:
00000001 BEGIN_INIT
00000001 00 DB 0x0
00000002 END_INIT
00000002 menusel:
00000002 BEGIN_INIT
00000002 00 DB 0x0
00000003 END_INIT
*** CODE SEGMENT '?PR?do_menu?T?menu':
40: static void do_menu(const char* title, const char* const ms[], const BYTE n, BYTE* menutop, BYTE *menusel, BYTE *
-mstate)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C16 MOV R6,R2 ; n
00000004 ---- Variable 'n' assigned to Register 'R6' ----
00000004 1C0D MOV R5,R1 ; ms
00000006 ---- Variable 'ms' assigned to Register 'R5' ----
00000006 1C04 MOV R4,R0 ; title
00000008 ---- Variable 'title' assigned to Register 'R4' ----
41: {
00000008 ; SCOPE-START
44: if (*mstate)
00000008 9801 LDR R0,[R13,#0x4] ; mstate
0000000A 7800 LDRB R0,[R0,#0x0]
0000000C 2800 CMP R0,#0x0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -