📄 key.lis
字号:
0274 ; if ( KEY_INPUT == AUTO_MAN_DOWN )
0274 80910500 lds R24,_KEY_INPUT
0278 8830 cpi R24,8
027A 71F5 brne L22
027C .dbline 186
027C ; {
027C .dbline 187
027C ; KEY_AUTO_MAN_STATE = !KEY_AUTO_MAN_STATE;
027C 20900100 lds R2,_KEY_AUTO_MAN_STATE
0280 2220 tst R2
0282 19F4 brne L57
0284 41E0 ldi R20,1
0286 50E0 ldi R21,0
0288 02C0 rjmp L58
028A L57:
028A 4427 clr R20
028C 5527 clr R21
028E L58:
028E 40930100 sts _KEY_AUTO_MAN_STATE,R20
0292 .dbline 189
0292 ; //改变手动/自动按键的状态
0292 ; KEY_INPUT = 0;
0292 2224 clr R2
0294 20920500 sts _KEY_INPUT,R2
0298 .dbline 190
0298 ; if ( KEY_AUTO_MAN_STATE )
0298 4423 tst R20
029A 51F0 breq L59
029C .dbline 191
029C ; {
029C .dbline 192
029C ; PORTB |= ( 1 << OUT_AUTO ); //自动
029C C59A sbi 0x18,5
029E .dbline 193
029E ; eeprom_busy_wait();
029E 00D0 rcall _eeprom_busy_wait
02A0 .dbline 194
02A0 ; cli();
02A0 00D0 rcall _cli
02A2 .dbline 195
02A2 ; eeprom_write_byte ( (char*)0x03, 0x01 );
02A2 21E0 ldi R18,1
02A4 30E0 ldi R19,0
02A6 03E0 ldi R16,3
02A8 10E0 ldi R17,0
02AA 00D0 rcall _eeprom_write_byte
02AC .dbline 196
02AC ; sei();
02AC 00D0 rcall _sei
02AE .dbline 197
02AE ; }
02AE 14C0 rjmp L22
02B0 L59:
02B0 .dbline 199
02B0 ; else
02B0 ; {
02B0 .dbline 200
02B0 ; PORTB &= ~( 1 << OUT_AUTO ); //手动
02B0 C598 cbi 0x18,5
02B2 .dbline 201
02B2 ; eeprom_busy_wait();
02B2 00D0 rcall _eeprom_busy_wait
02B4 .dbline 202
02B4 ; cli();
02B4 00D0 rcall _cli
02B6 .dbline 203
02B6 ; eeprom_write_byte ( (char*)0x03, 0x00 );
02B6 2227 clr R18
02B8 3327 clr R19
02BA 03E0 ldi R16,3
02BC 10E0 ldi R17,0
02BE 00D0 rcall _eeprom_write_byte
02C0 .dbline 204
02C0 ; sei();
02C0 00D0 rcall _sei
02C2 .dbline 205
02C2 ; }
02C2 .dbline 206
02C2 ; }
02C2 .dbline 207
02C2 ; }
02C2 .dbline 208
02C2 ; }
02C2 .dbline 209
02C2 ; }
02C2 0AC0 rjmp L22
02C4 L21:
02C4 .dbline 211
02C4 ; else
02C4 ; {
02C4 .dbline 212
02C4 ; KEY_INPUT = KEY_TEMP = 0x00;
02C4 2224 clr R2
02C6 20920600 sts _KEY_TEMP,R2
02CA 20920500 sts _KEY_INPUT,R2
02CE .dbline 213
02CE ; KEY_DOWN_TIME = 0;
02CE 3324 clr R3
02D0 30920100 sts L14+1,R3
02D4 20920000 sts L14,R2
02D8 .dbline 214
02D8 ; }
02D8 L22:
02D8 .dbline 215
02D8 ; if ( SET_STATU )
02D8 20900700 lds R2,_SET_STATU
02DC 2220 tst R2
02DE 09F4 brne X9
02E0 8FC0 rjmp L61
02E2 X9:
02E2 .dbline 216
02E2 ; {
02E2 .dbline 217
02E2 ; CHECK_EDATA_A();
02E2 00D0 rcall _CHECK_EDATA_A
02E4 .dbline 218
02E4 ; if ( KEY_INPUT == POWER_DOWN )
02E4 80910500 lds R24,_KEY_INPUT
02E8 8130 cpi R24,1
02EA 09F0 breq X10
02EC 3CC0 rjmp L63
02EE X10:
02EE .dbline 219
02EE ; {
02EE .dbline 220
02EE ; i++;
02EE 80910400 lds R24,L16
02F2 90910500 lds R25,L16+1
02F6 0196 adiw R24,1
02F8 90930500 sts L16+1,R25
02FC 80930400 sts L16,R24
0300 .dbline 221
0300 ; TIMER_NUM = 0;
0300 2224 clr R2
0302 3324 clr R3
0304 30920A00 sts _TIMER_NUM+1,R3
0308 20920900 sts _TIMER_NUM,R2
030C .dbline 222
030C ; NUM_CHANGE = TRUE;
030C 81E0 ldi R24,1
030E 90E0 ldi R25,0
0310 90930300 sts L15+1,R25
0314 80930200 sts L15,R24
0318 .dbline 223
0318 ; if ( ( i % 25 ) == 0 )
0318 29E1 ldi R18,25
031A 30E0 ldi R19,0
031C 00910400 lds R16,L16
0320 10910500 lds R17,L16+1
0324 00D0 rcall mod16u
0326 0030 cpi R16,0
0328 0107 cpc R16,R17
032A 09F0 breq X11
032C 69C0 rjmp L64
032E X11:
032E X2:
032E .dbline 224
032E ; {
032E .dbline 225
032E ; if ( MAX_A[0] > 0 )
032E 20900000 lds R2,_MAX_A
0332 30900100 lds R3,_MAX_A+1
0336 2220 tst R2
0338 19F4 brne X3
033A 3320 tst R3
033C 09F4 brne X12
033E 60C0 rjmp L64
0340 X12:
0340 X3:
0340 .dbline 226
0340 ; {
0340 .dbline 227
0340 ; MAX_A[0]--;
0340 80910000 lds R24,_MAX_A
0344 90910100 lds R25,_MAX_A+1
0348 0197 sbiw R24,1
034A 90930100 sts _MAX_A+1,R25
034E 80930000 sts _MAX_A,R24
0352 .dbline 228
0352 ; MAX_A[1] = MAX_A[2] = MAX_A[0];
0352 1C01 movw R2,R24
0354 30920500 sts _MAX_A+4+1,R3
0358 20920400 sts _MAX_A+4,R2
035C 30920300 sts _MAX_A+2+1,R3
0360 20920200 sts _MAX_A+2,R2
0364 .dbline 229
0364 ; }
0364 .dbline 230
0364 ; }
0364 .dbline 231
0364 ; }
0364 4DC0 rjmp L64
0366 L63:
0366 .dbline 232
0366 ; else if ( KEY_INPUT == CC_CV_DOWN )
0366 80910500 lds R24,_KEY_INPUT
036A 8430 cpi R24,4
036C 09F0 breq X13
036E 48C0 rjmp L71
0370 X13:
0370 .dbline 233
0370 ; {
0370 .dbline 234
0370 ; i++;
0370 80910400 lds R24,L16
0374 90910500 lds R25,L16+1
0378 0196 adiw R24,1
037A 90930500 sts L16+1,R25
037E 80930400 sts L16,R24
0382 .dbline 235
0382 ; TIMER_NUM = 0;
0382 2224 clr R2
0384 3324 clr R3
0386 30920A00 sts _TIMER_NUM+1,R3
038A 20920900 sts _TIMER_NUM,R2
038E .dbline 236
038E ; NUM_CHANGE = TRUE;
038E 81E0 ldi R24,1
0390 90E0 ldi R25,0
0392 90930300 sts L15+1,R25
0396 80930200 sts L15,R24
039A .dbline 237
039A ; if ( ( i % 25 ) == 0 )
039A 29E1 ldi R18,25
039C 30E0 ldi R19,0
039E 00910400 lds R16,L16
03A2 10910500 lds R17,L16+1
03A6 00D0 rcall mod16u
03A8 0030 cpi R16,0
03AA 0107 cpc R16,R17
03AC 49F5 brne L73
03AE X4:
03AE .dbline 238
03AE ; {
03AE .dbline 239
03AE ; if ( MAX_A[0] < 2000 )
03AE 80910000 lds R24,_MAX_A
03B2 90910100 lds R25,_MAX_A+1
03B6 803D cpi R24,208
03B8 E7E0 ldi R30,7
03BA 9E07 cpc R25,R30
03BC 98F4 brsh L75
03BE .dbline 240
03BE ; {
03BE .dbline 241
03BE ; MAX_A[0]++;
03BE 80910000 lds R24,_MAX_A
03C2 90910100 lds R25,_MAX_A+1
03C6 0196 adiw R24,1
03C8 90930100 sts _MAX_A+1,R25
03CC 80930000 sts _MAX_A,R24
03D0 .dbline 242
03D0 ; MAX_A[1] = MAX_A[2] = MAX_A[0];
03D0 1C01 movw R2,R24
03D2 30920500 sts _MAX_A+4+1,R3
03D6 20920400 sts _MAX_A+4,R2
03DA 30920300 sts _MAX_A+2+1,R3
03DE 20920200 sts _MAX_A+2,R2
03E2 .dbline 243
03E2 ; }
03E2 0EC0 rjmp L76
03E4 L75:
03E4 .dbline 245
03E4 ; else
03E4 ; {
03E4 .dbline 246
03E4 ; MAX_A[1] = MAX_A[2] = MAX_A[0] = 0;
03E4 2224 clr R2
03E6 3324 clr R3
03E8 30920100 sts _MAX_A+1,R3
03EC 20920000 sts _MAX_A,R2
03F0 30920500 sts _MAX_A+4+1,R3
03F4 20920400 sts _MAX_A+4,R2
03F8 30920300 sts _MAX_A+2+1,R3
03FC 20920200 sts _MAX_A+2,R2
0400 .dbline 247
0400 ; }
0400 L76:
0400 .dbline 248
0400 ; }
0400 L73:
0400 .dbline 249
0400 ; }
0400 L71:
0400 L64:
0400 .dbline 250
0400 L61:
0400 .dbline -2
0400 L13:
0400 2296 adiw R28,2
0402 00D0 rcall pop_gset3
0404 .dbline 0 ; func end
0404 0895 ret
0406 .dbsym r key_first 10 c
0406 .dbsym r key_end 20 c
0406 .dbsym r key_press 22 c
0406 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF\key.c
0000 _UP_DOWN_POWER::
0000 .blkb 1
0001 .dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF/init.h
0001 .dbsym e UP_DOWN_POWER _UP_DOWN_POWER c
0001 _KEY_AUTO_MAN_STATE::
0001 .blkb 1
0002 .dbsym e KEY_AUTO_MAN_STATE _KEY_AUTO_MAN_STATE c
0002 _KEY_CC_CV_STATE::
0002 .blkb 1
0003 .dbsym e KEY_CC_CV_STATE _KEY_CC_CV_STATE c
0003 _POWER_STATE::
0003 .blkb 1
0004 .dbsym e POWER_STATE _POWER_STATE c
0004 _KEY_A_V_STATE::
0004 .blkb 1
0005 .dbsym e KEY_A_V_STATE _KEY_A_V_STATE c
0005 _KEY_INPUT::
0005 .blkb 1
0006 .dbsym e KEY_INPUT _KEY_INPUT c
0006 _KEY_TEMP::
0006 .blkb 1
0007 .dbsym e KEY_TEMP _KEY_TEMP c
0007 _SET_STATU::
0007 .blkb 1
0008 .dbsym e SET_STATU _SET_STATU c
0008 _TIMER_EN::
0008 .blkb 1
0009 .dbsym e TIMER_EN _TIMER_EN c
0009 _TIMER_NUM::
0009 .blkb 2
000B .dbsym e TIMER_NUM _TIMER_NUM i
000B _adc_data_temp::
000B .blkb 2
000D .dbsym e adc_data_temp _adc_data_temp i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -