?? keyproc.lst
字號:
1 .file "keyproc.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
124 .global SystemStatusName
125 .section .progmem.data,"a",@progbits
128 SystemStatusName:
129 0000 00 .byte 0
130 0001 0B .byte 11
131 0002 0C .byte 12
132 0003 0D .byte 13
133 0004 0E .byte 14
134 0005 15 .byte 21
135 0006 16 .byte 22
136 0007 1F .byte 31
137 0008 20 .byte 32
138 0009 1F .byte 31
139 000a 20 .byte 32
140 000b 21 .byte 33
141 .lcomm fMenuFlash,1
144 LongPress_exe:
145 000c 0000 .word pm(key_do_nothing)
146 000e 0000 .word pm(key_add_long_press)
147 0010 0000 .word pm(key_dec_long_press)
148 0012 0000 .word pm(key_set_long_press)
151 LongPreskey_addst_exe:
152 0014 0000 .word pm(key_do_nothing)
153 0016 0000 .word pm(key_do_nothing)
154 0018 0000 .word pm(key_do_nothing)
155 001a 0000 .word pm(key_set_long_press_first)
158 Click_exe:
159 001c 0000 .word pm(key_ch_click)
160 001e 0000 .word pm(key_add_click)
161 0020 0000 .word pm(key_dec_click)
162 0022 0000 .word pm(key_set_click)
163 .text
165 .global KeyProcess
167 KeyProcess:
1:task/keyproc.c ****
2:task/keyproc.c ****
3:task/keyproc.c **** #define _KEY_MENU_TSK_C 1
4:task/keyproc.c ****
5:task/keyproc.c **** #include "inc/config.h"
6:task/keyproc.c ****
7:task/keyproc.c **** extern u08 SystemStatus; //system state ,global variables
8:task/keyproc.c ****
9:task/keyproc.c **** /***************************************************************/
10:task/keyproc.c **** static BOOL fMenuFlash=FALSE;//indicate the editting state
11:task/keyproc.c ****
12:task/keyproc.c ****
13:task/keyproc.c ****
14:task/keyproc.c **** static void ( * Click_exe[] )(void) PROGMEM =
15:task/keyproc.c ****
16:task/keyproc.c **** {
17:task/keyproc.c **** key_ch_click,
18:task/keyproc.c **** key_add_click,
19:task/keyproc.c **** key_dec_click,
20:task/keyproc.c **** key_set_click
21:task/keyproc.c **** };
22:task/keyproc.c ****
23:task/keyproc.c **** static prog_uint16_t LongPreskey_addst_exe[4] =
24:task/keyproc.c **** {
25:task/keyproc.c **** (prog_uint16_t)key_do_nothing,
26:task/keyproc.c **** (prog_uint16_t)key_do_nothing,
27:task/keyproc.c **** (prog_uint16_t)key_do_nothing,
28:task/keyproc.c **** (prog_uint16_t)key_set_long_press_first
29:task/keyproc.c **** };
30:task/keyproc.c ****
31:task/keyproc.c **** static prog_uint16_t LongPress_exe[4] =
32:task/keyproc.c **** {
33:task/keyproc.c **** (prog_uint16_t)key_do_nothing,
34:task/keyproc.c **** (prog_uint16_t)key_add_long_press,
35:task/keyproc.c **** (prog_uint16_t)key_dec_long_press,
36:task/keyproc.c **** (prog_uint16_t)key_set_long_press
37:task/keyproc.c **** };
38:task/keyproc.c ****
39:task/keyproc.c ****
40:task/keyproc.c **** void KeyProcess(void)
41:task/keyproc.c **** {
169 .LM1:
170 /* prologue: frame size=0 */
171 /* prologue end (size=0) */
42:task/keyproc.c **** if ( (key.type==PRESS_ONCE) && key.val<=4 )// ′óóú4?aòì3£?μ
173 .LM2:
174 0000 8091 0000 lds r24,key+1
175 0004 8130 cpi r24,lo8(1)
176 0006 61F4 brne .L2
178 .LM3:
179 0008 E091 0000 lds r30,key
180 000c E530 cpi r30,lo8(5)
181 000e 28F5 brsh .L3
182 .LBB2:
43:task/keyproc.c **** {
44:task/keyproc.c **** (*(void (*)()) pgm_read_word(Click_exe+key.val-1))();
184 .LM4:
185 0010 FF27 clr r31
186 0012 EE0F add r30,r30
187 0014 FF1F adc r31,r31
188 0016 E050 subi r30,lo8(-(Click_exe-2))
189 0018 F040 sbci r31,hi8(-(Click_exe-2))
190 /* #APP */
191 001a 8591 lpm r24, Z+
192 001c 9491 lpm r25, Z
193
194 /* #NOAPP */
195 001e 1BC0 rjmp .L7
196 .L2:
197 .LBE2:
45:task/keyproc.c **** }
46:task/keyproc.c ****
47:task/keyproc.c **** else if( (key.type==PRESS_LONG_1ST) && key.val<=4 )// ′óóú4?aòì3£?μ
199 .LM5:
200 0020 8230 cpi r24,lo8(2)
201 0022 61F4 brne .L4
202 0024 E091 0000 lds r30,key
203 0028 E530 cpi r30,lo8(5)
204 002a B8F4 brsh .L3
205 .LBB3:
48:task/keyproc.c **** {
49:task/keyproc.c **** (* (void (*)())pgm_read_word(LongPreskey_addst_exe+key.val-1))();
207 .LM6:
208 002c FF27 clr r31
209 002e EE0F add r30,r30
210 0030 FF1F adc r31,r31
211 0032 E050 subi r30,lo8(-(LongPreskey_addst_exe-2))
212 0034 F040 sbci r31,hi8(-(LongPreskey_addst_exe-2))
213 /* #APP */
214 0036 8591 lpm r24, Z+
215 0038 9491 lpm r25, Z
216
217 /* #NOAPP */
218 003a 0DC0 rjmp .L7
219 .L4:
220 .LBE3:
50:task/keyproc.c **** }
51:task/keyproc.c ****
52:task/keyproc.c **** else if( (key.type==PRESS_LONG) && key.val<=4 ) // ′óóú4?aòì3£?μ
222 .LM7:
223 003c 8330 cpi r24,lo8(3)
224 003e 69F4 brne .L3
225 0040 E091 0000 lds r30,key
226 0044 E530 cpi r30,lo8(5)
227 0046 48F4 brsh .L3
228 .LBB4:
53:task/keyproc.c **** {
54:task/keyproc.c **** (* (void (*)())pgm_read_word(LongPress_exe+key.val-1))();
230 .LM8:
231 0048 FF27 clr r31
232 004a EE0F add r30,r30
233 004c FF1F adc r31,r31
234 004e E050 subi r30,lo8(-(LongPress_exe-2))
235 0050 F040 sbci r31,hi8(-(LongPress_exe-2))
236 /* #APP */
237 0052 8591 lpm r24, Z+
238 0054 9491 lpm r25, Z
239
240 /* #NOAPP */
241 .L7:
242 .LBE4:
243 0056 FC01 movw r30,r24
244 0058 0995 icall
245 .L3:
55:task/keyproc.c **** }
56:task/keyproc.c **** key.val=0;
247 .LM9:
248 005a 1092 0000 sts key,__zero_reg__
57:task/keyproc.c **** key.type=NON;
250 .LM10:
251 005e 1092 0000 sts key+1,__zero_reg__
58:task/keyproc.c **** key.fkeydone=YES;
253 .LM11:
254 0062 81E0 ldi r24,lo8(1)
255 0064 8093 0000 sts key+2,r24
256 /* epilogue: frame size=0 */
257 0068 0895 ret
258 /* epilogue end (size=1) */
259 /* function KeyProcess size 65 (64) */
273 .Lscope0:
275 .global key_ch_click
277 key_ch_click:
59:task/keyproc.c **** }
60:task/keyproc.c **** /****************************************************/
61:task/keyproc.c **** /*--based on the KeyValue ,implement different event*/
62:task/keyproc.c **** /*--only support the single click event temperally. */
63:task/keyproc.c **** /****************************************************/
64:task/keyproc.c ****
65:task/keyproc.c **** extern BOOL fIsSampling;
66:task/keyproc.c ****
67:task/keyproc.c **** //////////////////////////
68:task/keyproc.c **** void key_ch_click(void)
69:task/keyproc.c **** {
279 .LM12:
280 /* prologue: frame size=0 */
281 /* prologue end (size=0) */
282 /* epilogue: frame size=0 */
283 006a 0895 ret
284 /* epilogue end (size=1) */
285 /* function key_ch_click size 1 (0) */
287 .Lscope1:
290 .global MenuIndexDisp
292 MenuIndexDisp:
70:task/keyproc.c ****
71:task/keyproc.c ****
72:task/keyproc.c **** }
73:task/keyproc.c **** void key_add_click(void)
74:task/keyproc.c **** {
75:task/keyproc.c **** if (SystemStatus!=RUN )
76:task/keyproc.c **** {
77:task/keyproc.c **** RstSoftTimer(_60S);
78:task/keyproc.c **** MenuValDeal (SystemStatus,true,SYS_ch);//true :add false:decrease
79:task/keyproc.c **** MenuIndexDisp( SystemStatus );
80:task/keyproc.c **** MenuValDisp (SystemStatus,SYS_ch) ; //
81:task/keyproc.c **** }
82:task/keyproc.c **** }
83:task/keyproc.c ****
84:task/keyproc.c **** void key_dec_click(void)
85:task/keyproc.c **** {
86:task/keyproc.c **** if (SystemStatus!=RUN )
87:task/keyproc.c **** {
88:task/keyproc.c **** RstSoftTimer(3);
89:task/keyproc.c **** MenuValDeal (SystemStatus,false,SYS_ch);//true :add false:decrease
90:task/keyproc.c **** MenuIndexDisp( SystemStatus );
91:task/keyproc.c **** MenuValDisp (SystemStatus,SYS_ch) ; //
92:task/keyproc.c **** }
93:task/keyproc.c **** }
94:task/keyproc.c **** void key_set_click(void)
95:task/keyproc.c ****
96:task/keyproc.c **** {
97:task/keyproc.c **** if(SystemStatus!=RUN)
98:task/keyproc.c **** {
99:task/keyproc.c **** RstSoftTimer(_60S);
100:task/keyproc.c ****
101:task/keyproc.c **** SystemStatus++;
102:task/keyproc.c ****
103:task/keyproc.c **** if( SystemStatus>=EDIT14 )
104:task/keyproc.c **** {
105:task/keyproc.c **** SystemStatus=EDIT11;
106:task/keyproc.c **** }
107:task/keyproc.c ****
108:task/keyproc.c **** MenuIndexDisp( SystemStatus );
109:task/keyproc.c ****
110:task/keyproc.c **** MenuValDisp ( SystemStatus,SYS_ch ) ;
111:task/keyproc.c **** }
112:task/keyproc.c **** else//as a manual key
113:task/keyproc.c **** {
114:task/keyproc.c **** if( SystemMode== AUTO_TH)
115:task/keyproc.c **** {
116:task/keyproc.c **** SystemMode = MANU_TH;
117:task/keyproc.c **** FlashDigOn(1);
118:task/keyproc.c **** FlashDigOn(2);
119:task/keyproc.c **** FlashDigOn(3);
120:task/keyproc.c **** FlashDigOn(4);
121:task/keyproc.c **** FlashDigOn(5);
122:task/keyproc.c **** FlashDigOn(6);
123:task/keyproc.c **** fan (ON);
124:task/keyproc.c **** heat(ON);
125:task/keyproc.c **** DisplayHumidityAlarm(ON);
126:task/keyproc.c **** DisplayTemperatureAlarm(ON);
127:task/keyproc.c ****
128:task/keyproc.c **** }
129:task/keyproc.c **** else
130:task/keyproc.c **** {
131:task/keyproc.c **** SystemMode = AUTO_TH;
132:task/keyproc.c **** FlashDigRst();
133:task/keyproc.c **** ///////
134:task/keyproc.c **** if(AlrmStatusT==NO_ALARM)
135:task/keyproc.c **** {
136:task/keyproc.c **** DisplayTemperatureAlarm(OFF);
137:task/keyproc.c **** }
138:task/keyproc.c **** else
139:task/keyproc.c **** {
140:task/keyproc.c **** DisplayTemperatureAlarm(ON);
141:task/keyproc.c **** }
142:task/keyproc.c **** ///////
143:task/keyproc.c **** if(AlrmStatusH!=NO_ALARM)
144:task/keyproc.c **** {
145:task/keyproc.c **** DisplayHumidityAlarm(ON);
146:task/keyproc.c **** }
147:task/keyproc.c **** else
148:task/keyproc.c **** {
149:task/keyproc.c **** DisplayHumidityAlarm(OFF);
150:task/keyproc.c **** }
151:task/keyproc.c ****
152:task/keyproc.c **** }
153:task/keyproc.c **** }
154:task/keyproc.c **** }
155:task/keyproc.c ****
156:task/keyproc.c ****
157:task/keyproc.c **** //////////////////////////////
158:task/keyproc.c **** void key_do_nothing(void)
159:task/keyproc.c **** {
160:task/keyproc.c ****
161:task/keyproc.c ****
162:task/keyproc.c **** }
163:task/keyproc.c ****
164:task/keyproc.c **** void key_set_long_press_first(void)
165:task/keyproc.c **** {
166:task/keyproc.c **** RstSoftTimer(_60S);
167:task/keyproc.c **** FlashDigRst();
168:task/keyproc.c ****
169:task/keyproc.c **** if(SystemStatus==RUN)
170:task/keyproc.c **** {
171:task/keyproc.c **** SystemStatus=EDIT11;
172:task/keyproc.c ****
173:task/keyproc.c **** MenuIndexDisp( SystemStatus);
174:task/keyproc.c ****
175:task/keyproc.c **** MenuValDisp ( SystemStatus,SYS_ch);
176:task/keyproc.c **** }
177:task/keyproc.c ****
178:task/keyproc.c **** else
179:task/keyproc.c **** {
180:task/keyproc.c **** SynE2promFromRam();
181:task/keyproc.c ****
182:task/keyproc.c **** RelayRst ();
183:task/keyproc.c ****
184:task/keyproc.c **** FlashDigRst();
185:task/keyproc.c ****
186:task/keyproc.c **** RmvDot(5);
187:task/keyproc.c **** SystemStatus=RUN;
188:task/keyproc.c ****
189:task/keyproc.c **** fMenuFlash = FALSE;
190:task/keyproc.c ****
191:task/keyproc.c **** }
192:task/keyproc.c ****
193:task/keyproc.c ****
194:task/keyproc.c **** }
195:task/keyproc.c ****
196:task/keyproc.c ****
197:task/keyproc.c ****
198:task/keyproc.c **** void key_dec_long_press(void)
199:task/keyproc.c **** {
200:task/keyproc.c **** u08 i;
201:task/keyproc.c **** for( i = 0;i < 10;i++ )
202:task/keyproc.c **** {
203:task/keyproc.c **** key_dec_click();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -