📄 m8demo.s
字号:
;
; {
.dbline 347
;
; if (key_tick > KBD_DEBOUNCE_TEMPO)
ldi R24,50
ldi R25,0
lds R2,_key_tick
lds R3,_key_tick+1
cp R24,R2
cpc R25,R3
brlo X14
rjmp L63
X14:
.dbline 348
; key_state = KBD_DECODE;
ldi R24,2
sts _key_state,R24
.dbline 350
;
; break;
rjmp L63
L71:
.dbline 354
; }
;
; case KBD_DECODE:
; {
.dbline 356
;
; if(key_value==Key_Decode())
rcall _Key_Decode
lds R2,_key_value
cp R2,R16
brne L72
.dbline 357
; {
.dbline 361
; //if(( key_value==key_dec)||(key_value==key_inc))
; // key_state = KBD_DECODE5;
; //else
; key_state = KBD_DECODE2;
ldi R24,3
sts _key_state,R24
.dbline 364
;
;
; }
rjmp L63
L72:
.dbline 366
; else
; key_state = KBD_IDLE;
clr R2
sts _key_state,R2
.dbline 367
; break;
rjmp L63
L74:
.dbline 371
; }
;
; case KBD_DECODE2:
; {
.dbline 372
; if(key_value!=Key_Decode())
rcall _Key_Decode
lds R2,_key_value
cp R2,R16
brne X15
rjmp L63
X15:
.dbline 373
; {key_pressed = true;
.dbline 373
ldi R24,1
sts _key_pressed,R24
.dbline 374
; key_state = KBD_IDLE;
clr R2
sts _key_state,R2
.dbline 375
; }
.dbline 376
; break;
rjmp L63
L77:
.dbline 380
; }
;
; case KBD_DECODE3:
; {
.dbline 381
; if (key_tick > KBD_DEBOUNCE_TEMP1)
ldi R24,300
ldi R25,1
lds R2,_key_tick
lds R3,_key_tick+1
cp R24,R2
cpc R25,R3
brsh L63
.dbline 382
; key_state = KBD_DECODE5;
ldi R24,6
sts _key_state,R24
.dbline 383
; break;
rjmp L63
L80:
.dbline 387
; }
;
; case KBD_DECODE4:
; {
.dbline 389
;
; key_pressed = true;
ldi R24,1
sts _key_pressed,R24
.dbline 390
; key_state = KBD_DECODE3;
ldi R24,4
sts _key_state,R24
.dbline 391
; key_tick=0;
clr R2
clr R3
sts _key_tick+1,R3
sts _key_tick,R2
.dbline 392
; if(key_value!=Key_Decode())
rcall _Key_Decode
lds R2,_key_value
cp R2,R16
breq L63
.dbline 393
; {
.dbline 394
; key_pressed = true;
ldi R24,1
sts _key_pressed,R24
.dbline 395
; key_state = KBD_IDLE;
clr R2
sts _key_state,R2
.dbline 396
; }
.dbline 397
; break;
rjmp L63
L83:
.dbline 400
; }
; case KBD_DECODE5:
; {
.dbline 402
;
; if (key_tick > KBD_DEBOUNCE_TEMP1)
ldi R24,300
ldi R25,1
lds R2,_key_tick
lds R3,_key_tick+1
cp R24,R2
cpc R25,R3
brsh L84
.dbline 403
; key_state = KBD_DECODE4;
ldi R24,5
sts _key_state,R24
L84:
.dbline 404
rcall _Key_Decode
lds R2,_key_value
cp R2,R16
breq L63
.dbline 405
.dbline 406
ldi R24,1
sts _key_pressed,R24
.dbline 407
clr R2
sts _key_state,R2
.dbline 408
.dbline 410
.dbline 413
L63:
.dbline -2
L61:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e UserApplication _UserApplication fV
; nn -> <dead>
.even
_UserApplication::
rcall push_gset5
sbiw R28,2
.dbline -1
.dbline 421
; if(key_value!=Key_Decode())
; {
; key_pressed = true;
; key_state = KBD_IDLE;
; }
;
; break;
; }
;
; default: break;
; }
;
;
; }
;
;
; void UserApplication(void)
; {
.dbline 422
; unsigned char nn;;
.dbline 423
; init_devices();
rcall _init_devices
.dbline 424
; TimerCount=0;
clr R2
clr R3
sts _TimerCount+1,R3
sts _TimerCount,R2
.dbline 425
; TimerCountOld=0;
sts _TimerCountOld+1,R3
sts _TimerCountOld,R2
.dbline 426
; key_state=KBD_IDLE;
sts _key_state,R2
.dbline 427
; mode_state=0;
sts _mode_state,R2
.dbline 428
; PutChar(0x0a);
ldi R16,10
rcall _PutChar
.dbline 429
; PutChar(0x0d);
ldi R16,13
rcall _PutChar
.dbline 430
; PutStr("富友勤电子M8DEMO");
ldi R16,<L89
ldi R17,>L89
rcall _PutStr
.dbline 431
; PutStr("时钟模式");
ldi R16,<L90
ldi R17,>L90
rcall _PutStr
rjmp L92
L91:
.dbline 433
; while(1)
; {
.dbline 434
; Key_Task();
rcall _Key_Task
.dbline 435
; if(key_pressed)
lds R2,_key_pressed
tst R2
brne X27
rjmp L94
X27:
.dbline 436
; {
.dbline 437
; switch(key_value)
lds R14,_key_value
clr R15
movw R24,R14
cpi R24,251
ldi R30,0
cpc R25,R30
brne X28
rjmp L163
X28:
cpi R24,252
ldi R30,0
cpc R25,R30
brne X29
rjmp L134
X29:
cpi R24,253
ldi R30,0
cpc R25,R30
brne X30
rjmp L119
X30:
cpi R24,254
ldi R30,0
cpc R25,R30
breq L99
rjmp L97
X16:
.dbline 438
; {
L99:
.dbline 440
; case key_inc:
; switch(mode_state)
lds R12,_mode_state
clr R13
tst R12
brne X17
tst R13
brne X31
rjmp L97
X31:
X17:
movw R24,R12
cpi R24,1
ldi R30,0
cpc R25,R30
breq L104
cpi R24,2
ldi R30,0
cpc R25,R30
breq L105
cpi R24,3
ldi R30,0
cpc R25,R30
breq L106
cpi R24,4
ldi R30,0
cpc R25,R30
brne X32
rjmp L107
X32:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X33
rjmp L108
X33:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X34
rjmp L109
X34:
cpi R24,8
ldi R30,0
cpc R25,R30
brne X35
rjmp L110
X35:
cpi R24,9
ldi R30,0
cpc R25,R30
brne X36
rjmp L116
X36:
rjmp L97
X18:
.dbline 441
; {
.dbline 442
; case clock_mode:break;
L104:
.dbline 444
; case out_eeprom_addr_modify_mode:
; out_eeprom_addr++;
lds R24,_out_eeprom_addr
subi R24,255 ; addi 1
sts _out_eeprom_addr,R24
.dbline 445
; out_eeprom_data=i2c_Read(out_eeprom_addr);
mov R16,R24
rcall _i2c_Read
sts _out_eeprom_data,R16
.dbline 448
;
;
; break;
rjmp L97
L105:
.dbline 450
; case out_eeprom_data_modify_mode:
; out_eeprom_data++;
lds R24,_out_eeprom_data
subi R24,255 ; addi 1
sts _out_eeprom_data,R24
.dbline 451
; i2c_Write(out_eeprom_addr,out_eeprom_data);
mov R18,R24
lds R16,_out_eeprom_addr
rcall _i2c_Write
.dbline 452
; break;
rjmp L97
L106:
.dbline 454
; case out_eeprom_read_mode:
; out_eeprom_addr++;
lds R24,_out_eeprom_addr
subi R24,255 ; addi 1
sts _out_eeprom_addr,R24
.dbline 455
; out_eeprom_data=i2c_Read(out_eeprom_addr);
mov R16,R24
rcall _i2c_Read
sts _out_eeprom_data,R16
.dbline 456
; break;
rjmp L97
L107:
.dbline 458
; case in_eeprom_addr_modify_mode:
; in_eeprom_addr++;
lds R24,_in_eeprom_addr
subi R24,255 ; addi 1
sts _in_eeprom_addr,R24
.dbline 459
; EEPROM_READ(in_eeprom_addr, in_eeprom_data);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_in_eeprom_data
ldi R19,>_in_eeprom_data
lds R16,_in_eeprom_addr
clr R17
rcall _EEPROMReadBytes_extIO
.dbline 460
; break;
rjmp L97
L108:
.dbline 462
; case in_eeprom_data_modify_mode:
; in_eeprom_data++;
lds R24,_in_eeprom_data
subi R24,255 ; addi 1
sts _in_eeprom_data,R24
.dbline 463
; EEPROM_WRITE (in_eeprom_addr,in_eeprom_data);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_in_eeprom_data
ldi R19,>_in_eeprom_data
lds R16,_in_eeprom_addr
clr R17
rcall _EEPROMWriteBytes_extIO
.dbline 464
; break;
rjmp L97
L109:
.dbline 466
; case in_eeprom_read_mode:
; out_eeprom_addr++;
lds R24,_out_eeprom_addr
subi R24,255 ; addi 1
sts _out_eeprom_addr,R24
.dbline 467
; EEPROM_READ(in_eeprom_addr, in_eeprom_data);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_in_eeprom_data
ldi R19,>_in_eeprom_data
lds R16,_in_eeprom_addr
clr R17
rcall _EEPROMReadBytes_extIO
.dbline 469
;
; break;
rjmp L97
L110:
.dbline 471
; case AT45DB021_addr_modify_mode:
; AT45DB021_addr++;
lds R24,_AT45DB021_addr
subi R24,255 ; addi 1
sts _AT45DB021_addr,R24
.dbline 472
; if(AT45DB021_addr==0x80)
cpi R24,128
brne L111
.dbline 473
; AT45DB021_addr=0x00;
clr R2
sts _AT45DB021_addr,R2
L111:
.dbline 474
; PutStr("45DB21 Read Start Addr");
ldi R16,<L113
ldi R17,>L113
rcall _PutStr
.dbline 475
; PutInt( AT45DB021_addr );
lds R16,_AT45DB021_addr
clr R17
rcall _PutInt
.dbline 476
; AT45DB021_data=ReadBlock(AT45DB021_addr);
lds R16,_AT45DB021_addr
rcall _ReadBlock
sts _AT45DB021_data,R16
.dbline 477
; PutStr("45DB21 Read Data");
ldi R16,<L114
ldi R17,>L114
rcall _PutStr
.dbline 478
; PutInt( AT45DB021_data );
lds R16,_AT45DB021_data
clr R17
rcall _PutInt
.dbline 479
; PutStr("45DB21 Read End");
ldi R16,<L115
ldi R17,>L115
rcall _PutStr
.dbline 480
; break;
rjmp L97
L116:
.dbline 482
; case AT45DB021_data_modify_mode:
; AT45DB021_data++;
lds R24,_AT45DB021_data
subi R24,255 ; addi 1
sts _AT45DB021_data,R24
.dbline 483
; PutStr("45DB21 Write Start");
ldi R16,<L117
ldi R17,>L117
rcall _PutStr
.dbline 484
; WriteBlock(AT45DB021_addr, AT45DB021_data);
lds R18,_AT45DB021_data
lds R16,_AT45DB021_addr
rcall _WriteBlock
.dbline 485
; PutInt( AT45DB021_data );
lds R16,_AT45DB021_data
clr R17
rcall _PutInt
.dbline 486
; PutStr("45DB21 Write End");
ldi R16,<L118
ldi R17,>L118
rcall _PutStr
.dbline 487
; break;
.dbline 489
;
; default :break;
.dbline 491
; }
; break;
rjmp L97
L119:
.dbline 493
; case key_dec:
; switch(mode_state)
lds R10,_mode_state
clr R11
tst R10
brne X19
tst R11
brne X37
rjmp L97
X37:
X19:
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
breq L124
cpi R24,2
ldi R30,0
cpc R25,R30
breq L125
cpi R24,3
ldi R30,0
cpc R25,R30
breq L126
cpi R24,4
ldi R30,0
cpc R25,R30
brne X38
rjmp L127
X38:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X39
rjmp L128
X39:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X40
rjmp L129
X40:
cpi R24,8
ldi R30,0
cpc R25,R30
brne X41
rjmp L130
X41:
cpi R24,9
ldi R30,0
cpc R25,R30
brne X42
rjmp L133
X42:
rjmp L97
X20:
.dbline 494
; {
.dbline 495
; case clock_mode:break;
L124:
.dbline 497
; case out_eeprom_addr_modify_mode:
; out_eeprom_addr--;
lds R24,_out_eeprom_addr
subi R24,1
sts _out_eeprom_addr,R24
.dbline 498
; out_eeprom_data=i2c_Read(out_eeprom_addr);
mov R16,R24
rcall _i2c_Read
sts _out_eeprom_data,R16
.dbline 499
; break;
rjmp L97
L125:
.dbline 501
; case out_eeprom_data_modify_mode:
; out_eeprom_data--;
lds R24,_out_eeprom_data
subi R24,1
sts _out_eeprom_data,R24
.dbline 502
; i2c_Write(out_eeprom_addr,out_eeprom_data);
mov R18,R24
lds R16,_out_eeprom_addr
rcall _i2c_Write
.dbline 503
; break;
rjmp L97
L126:
.dbline 505
; case out_eeprom_read_mode:
; out_eeprom_addr--;
lds R24,_out_eeprom_addr
subi R24,1
sts _out_eeprom_addr,R24
.dbline 506
; out_eeprom_data=i2c_Read(out_eeprom_addr);
mov R16,R24
rcall _i2c_Read
sts _out_eeprom_data,R16
.dbline 507
; break;
rjmp L97
L127:
.dbline 509
; case in_eeprom_addr_modify_mode:
; in_eeprom_addr--;
lds R24,_in_eeprom_addr
subi R24,1
sts _in_eeprom_addr,R24
.dbline 510
; EEPROM_READ(in_eeprom_addr, in_eeprom_data);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_in_eeprom_data
ldi R19,>_in_eeprom_data
lds R16,_in_eeprom_addr
clr R17
rcall _EEPROMReadBytes_extIO
.dbline 512
;
; break;
rjmp L97
L128:
.dbline 514
; case in_eeprom_data_modify_mode:
; in_eeprom_data--;
lds R24,_in_eeprom_data
subi R24,1
sts _in_eeprom_data,R24
.dbline 515
; EEPROM_WRITE (in_eeprom_addr,in_eeprom_data);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_in_eeprom_data
ldi R19,>_in_eeprom_data
lds R16,_in_eeprom_addr
clr R17
rcall _EEPROMWriteBytes_extIO
.dbline 516
; break;
rjmp L97
L129:
.dbline 519
;
; case in_eeprom_read_mode:
; in_eeprom_addr--;
lds R24,_in_eeprom_addr
subi R24,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -