📄 mode_task.lst
字号:
C51 COMPILER V6.20c MODE_TASK 07/10/2002 15:17:41 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE MODE_TASK
OBJECT MODULE PLACED IN ..\obj\mode_task.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\src\mode\mode_task.c BROWSE INCDIR(..\src\system;..\..\..\lib) DEFINE(KE
-IL) DEBUG OBJECTEXTEND PRINT(.\mode_task.lst) OBJECT(..\obj\mode_task.obj)
stmt level source
1 /*C**************************************************************************
2 * $RCSfile: mode_task.c,v $
3 *----------------------------------------------------------------------------
4 * Copyright (c) 2002 Atmel.
5 *----------------------------------------------------------------------------
6 * RELEASE: $Name: DEMO_FAT_1_2_5 $
7 * REVISION: $Revision: 1.5 $
8 * FILE_CVSID: $Id: mode_task.c,v 1.5 2002/06/07 15:46:56 ffosse Exp $
9 *----------------------------------------------------------------------------
10 * PURPOSE:
11 * This file contains the mode task and attached routines
12 *
13 * NOTES:
14 * Global Variables:
15 * - gl_key_press: bit in bdata space
16 * - gl_key: byte in idata space
17 * - gl_cpt_tick: byte in data space
18 *****************************************************************************/
19
20
21 /*_____ I N C L U D E S ____________________________________________________*/
22
23 #include "config.h" /* system configuration */
24 #include "..\..\..\..\lib_demob\board.h" /* board definition */
25 #include "..\display\disp.h" /* display definition */
26 #include "..\song\song_task.h" /* song task definition */
27 #include "..\voice\voice_task.h" /* voice task definition */
28 #include "..\tool\tool_task.h" /* tool task definition */
29 #include "..\kbd\kbd_task.h" /* keyboard task definition */
30 #include "..\mem\mem_task.h" /* memory task definition */
31 #include "mode_task.h" /* mode task definition */
32
33
34 /*_____ M A C R O S ________________________________________________________*/
35
36
37 /*_____ D E F I N I T I O N ________________________________________________*/
38
39 extern bdata bit gl_key_press; /* set to TRUE if a key is decoded */
40 extern idata Byte gl_key; /* value of the key pressed */
41 extern data Byte gl_cpt_tick; /* general tick counter */
42
43 static data Byte mode_state; /* task state */
44
45
46 /*_____ D E C L A R A T I O N ______________________________________________*/
47
48
49 /*F**************************************************************************
50 * NAME: mode_task_init
51 *----------------------------------------------------------------------------
52 * PARAMS:
53 *
54 * return:
C51 COMPILER V6.20c MODE_TASK 07/10/2002 15:17:41 PAGE 2
55 *----------------------------------------------------------------------------
56 * PURPOSE:
57 * Mode task initialization
58 *----------------------------------------------------------------------------
59 * EXAMPLE:
60 *----------------------------------------------------------------------------
61 * NOTE:
62 *----------------------------------------------------------------------------
63 * REQUIREMENTS:
64 *****************************************************************************/
65 void mode_task_init (void)
66 {
67 1 mode_state = MODE_BOOT;
68 1 song_task_init();
69 1 voice_task_init();
70 1 tool_task_init();
71 1 }
72
73
74 /*F**************************************************************************
75 * NAME: mode_task
76 *----------------------------------------------------------------------------
77 * PARAMS:
78 *
79 * return:
80 *----------------------------------------------------------------------------
81 * PURPOSE:
82 * Mode task
83 *----------------------------------------------------------------------------
84 * EXAMPLE:
85 *----------------------------------------------------------------------------
86 * NOTE:
87 * STATES:
88 * MODE_BOOT boot state
89 * MODE_SPLASH wait splash time
90 * MODE_DOWNLOAD file download mode
91 * MODE_SONG song playing mode
92 * MODE_VOICE voice playing & recording mode
93 * MODE_TOOL tool mode
94 * MODE_IDLE idle mode (switch back to first task)
95 *----------------------------------------------------------------------------
96 * REQUIREMENTS:
97 *****************************************************************************/
98 void mode_task (void)
99 {
100 1 switch (mode_state)
101 1 {
102 2 case MODE_BOOT:
103 2 {
104 3 if ((NVERS != CHIP_VERSION) && (NVERS != (CHIP_VERSION + 1)))
105 3 {
106 4 print_screen(FATAL_SCREEN);
107 4 while (1); /* stop if bad chip version */
108 4 }
109 3 else
110 3 {
111 4 print_screen(SPLASH_SCREEN);
112 4 print_string(SYS_VERSION);
113 4 mode_state = MODE_SPLASH;
114 4 gl_cpt_tick = SPLASH_TEMPO_INIT;
115 4 }
116 3 break;
C51 COMPILER V6.20c MODE_TASK 07/10/2002 15:17:41 PAGE 3
117 3 }
118 2
119 2 case MODE_SPLASH:
120 2 {
121 3 if (gl_key_press || (gl_cpt_tick > SPLASH_TEMPO))
122 3 {
123 4 if (gl_key == KEY_LOCK)
124 4 {
125 5 print_kbd_lock(); /* print keyboard status */
126 5 }
127 4 gl_key_press = FALSE; /* ack possible key press */
128 4 mode_state = MODE_SONG;
129 4 }
130 3 break;
131 3 }
132 2
133 2 case MODE_DOWNLOAD:
134 2 {
135 3 break;
136 3 }
137 2
138 2 case MODE_SONG:
139 2 {
140 3 song_task(); /* song mode */
141 3 break;
142 3 }
143 2
144 2 case MODE_VOICE:
145 2 {
146 3 voice_task(); /* voice mode */
147 3 break;
148 3 }
149 2
150 2 case MODE_TOOL:
151 2 {
152 3 tool_task(); /* tool mode */
153 3 break;
154 3 }
155 2
156 2 case MODE_IDLE:
157 2 {
158 3 mode_state = MODE_SONG;
159 3 break;
160 3 }
161 2 }
162 1 }
163
164
165 /*F**************************************************************************
166 * NAME: mode_set_init
167 *----------------------------------------------------------------------------
168 * PARAMS:
169 *
170 * return:
171 *----------------------------------------------------------------------------
172 * PURPOSE:
173 * Sets mode task in init state
174 *----------------------------------------------------------------------------
175 * EXAMPLE:
176 *----------------------------------------------------------------------------
177 * NOTE:
178 * Called from song, voice, mass, tool, usb tasks before stopping
C51 COMPILER V6.20c MODE_TASK 07/10/2002 15:17:41 PAGE 4
179 *----------------------------------------------------------------------------
180 * REQUIREMENTS:
181 *****************************************************************************/
182 void mode_set_init (void)
183 {
184 1 mode_state++;
185 1 }
186
187
188 /*F**************************************************************************
189 * NAME: mode_set_download
190 *----------------------------------------------------------------------------
191 * PARAMS:
192 *
193 * return:
194 *----------------------------------------------------------------------------
195 * PURPOSE:
196 * Set mode task in download state
197 *----------------------------------------------------------------------------
198 * EXAMPLE:
199 *----------------------------------------------------------------------------
200 * NOTE:
201 * Called from usb task to stop the current task and switch to download task
202 *----------------------------------------------------------------------------
203 * REQUIREMENTS:
204 *****************************************************************************/
205 void mode_set_download (void)
206 {
207 1 mem_card_select(FALSE); /* try selecting card */
208 1 switch (mode_state)
209 1 {
210 2 case MODE_SONG:
211 2 {
212 3 while (mode_state == MODE_SONG)
213 3 {
214 4 kbd_set_stop();
215 4 song_task(); /* exit song task */
216 4 }
217 3 mode_state = MODE_DOWNLOAD;
218 3 break;
219 3 }
220 2
221 2 case MODE_VOICE:
222 2 {
223 3 while (mode_state == MODE_VOICE)
224 3 {
225 4 kbd_set_stop();
226 4 voice_task(); /* exit voice task */
227 4 }
228 3 mode_state = MODE_DOWNLOAD;
229 3 break;
230 3 }
231 2
232 2 case MODE_TOOL:
233 2 {
234 3 while (mode_state == MODE_TOOL)
235 3 {
236 4 kbd_set_stop();
237 4 tool_task(); /* exit tool task */
238 4 }
239 3 mode_state = MODE_DOWNLOAD;
240 3 break;
C51 COMPILER V6.20c MODE_TASK 07/10/2002 15:17:41 PAGE 5
241 3 }
242 2
243 2 default:
244 2 {
245 3 mode_state = MODE_DOWNLOAD;
246 3 break;
247 3 }
248 2 }
249 1 }
250
251
252 /*F**************************************************************************
253 * NAME: mode_exit_download
254 *----------------------------------------------------------------------------
255 * PARAMS:
256 *
257 * return:
258 *----------------------------------------------------------------------------
259 * PURPOSE:
260 * Switch mode task from download to song state
261 *----------------------------------------------------------------------------
262 * EXAMPLE:
263 *----------------------------------------------------------------------------
264 * NOTE:
265 * Called from usb task when disconnecting
266 *----------------------------------------------------------------------------
267 * REQUIREMENTS:
268 *****************************************************************************/
269 void mode_exit_download (void)
270 {
271 1 if (mode_state == MODE_DOWNLOAD)
272 1 {
273 2 mode_state++;
274 2 mem_card_select(FALSE); /* force reselect memory */
275 2 }
276 1 }
277
278
279
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 195 ----
CONSTANT SIZE = 69 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
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 + -