📄 fp_lut.s
字号:
.module fp_lut.c
.area data(ram, con, rel)
_repeat::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
.dbsym s repeat _repeat c
.area lit(rom, con, rel)
_repeat_key::
.word 2
.word 0
.dbsym s repeat_key _repeat_key A[4:2]i
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
.dbfunc s is_repeat_ui_key _is_repeat_ui_key fI
; i -> R20
; value -> R16,R17
.even
_is_repeat_ui_key::
xcall push_gset1
.dbline -1
.dbline 15
; #include "nec_fp.h"
; #include "key.h"
; #include "main.h"
; extern unsigned char work_mode;
; extern unsigned char p_keycode[BYTES_USED_TO_SCANKEY];
; extern unsigned int key_buff,dvd_key;
; unsigned char repeat=0;
; #define REPEAT_DELAY 3
; #define REPEAT_KEY_CNT 2
; const unsigned int repeat_key[REPEAT_KEY_CNT]=
; {
; IRKC_VOLUME_UP,IRKC_VOLUME_DOWN
; };
; unsigned char is_repeat_ui_key(unsigned int value)
; {
.dbline 17
; unsigned char i;
; for(i=0;i<REPEAT_KEY_CNT;i++)
clr R20
xjmp L5
L2:
.dbline 18
; {
.dbline 19
; if(value==repeat_key[i])
ldi R24,<_repeat_key
ldi R25,>_repeat_key
mov R30,R20
clr R31
lsl R30
rol R31
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
cp R16,R30
cpc R17,R31
brne L6
.dbline 20
; return 1;
ldi R16,1
ldi R17,0
xjmp L1
L6:
.dbline 21
L3:
.dbline 17
inc R20
L5:
.dbline 17
cpi R20,2
brlo L2
.dbline 22
; }
; return 0;
clr R16
clr R17
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r value 16 i
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
L9:
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
L10:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
L11:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\fp_lut.c
.dbfunc s fp_key_scan2 _fp_key_scan2 fI
.dbsym s longkeyflag L11 c
.dbsym s key_time L10 c
.dbsym s LastFPKey L9 i
; Fp_KeyCode -> R20,R21
; i -> R22,R23
.even
_fp_key_scan2::
xcall push_gset2
.dbline -1
.dbline 26
; }
;
; void fp_key_scan2(void)
; {
.dbline 29
; unsigned int i;
; static unsigned int LastFPKey= 0;
; unsigned int Fp_KeyCode = 0;
clr R20
clr R21
.dbline 33
; static unsigned char key_time=0,longkeyflag=0;
;
;
; VFD_LL_ReadKeyScan();
xcall _VFD_LL_ReadKeyScan
.dbline 34
; Fp_KeyCode = 0;
.dbline 35
; for (i=0; i<BYTES_USED_TO_SCANKEY; i++)
clr R22
clr R23
xjmp L15
L12:
.dbline 36
; if (p_keycode[i])
ldi R24,<_p_keycode
ldi R25,>_p_keycode
movw R30,R22
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
breq L16
.dbline 37
; Fp_KeyCode = ((unsigned int)p_keycode[i] |(i+1)<<8);
movw R30,R22
add R30,R24
adc R31,R25
ldd R20,z+0
clr R21
movw R24,R22
adiw R24,1
mov R25,R24
clr R24
or R20,R24
or R21,R25
L16:
L13:
.dbline 35
subi R22,255 ; offset = 1
sbci R23,255
L15:
.dbline 35
cpi R22,4
ldi R30,0
cpc R23,R30
brlo L12
.dbline 39
;
; if(Fp_KeyCode==272) Fp_KeyCode = 0;
cpi R20,16
ldi R30,1
cpc R21,R30
brne L18
.dbline 39
clr R20
clr R21
L18:
.dbline 40
; if(Fp_KeyCode ==0)
cpi R20,0
cpc R20,R21
brne L20
.dbline 41
; {
.dbline 42
; repeat = 0;
clr R2
sts _repeat,R2
.dbline 45
; //Fp_KeyCode =LastFPKey;//temp_FpKey;
; //LastFPKey = 0;
; if(work_mode<2)
lds R24,_work_mode
cpi R24,2
brsh L22
.dbline 46
; {
.dbline 47
; if((LastFPKey == FPKC_NEXT)||(LastFPKey == FPKC_PREV))
lds R25,L9+1
lds R24,L9
cpi R24,32
ldi R30,1
cpc R25,R30
breq L26
cpi R24,48
ldi R30,1
cpc R25,R30
brne L24
L26:
.dbline 48
; {
.dbline 49
; if(longkeyflag)
lds R2,L11
tst R2
breq L27
.dbline 50
; {
.dbline 51
; longkeyflag = 0;
clr R2
sts L11,R2
.dbline 52
; if(work_mode==DVD_MODE)
lds R2,_work_mode
tst R2
brne L28
.dbline 53
; Fp_KeyCode = FPKC_STOPSERACH;
ldi R20,600
ldi R21,2
.dbline 54
; }
xjmp L28
L27:
.dbline 56
; else
; {
.dbline 57
; Fp_KeyCode = LastFPKey;
lds R21,L9+1
lds R20,L9
.dbline 58
; }
L28:
.dbline 59
; }
L24:
.dbline 60
; }
L22:
.dbline 62
;
; LastFPKey = 0;
clr R2
clr R3
sts L9+1,R3
sts L9,R2
.dbline 64
;
; }
xjmp L21
L20:
.dbline 65
; else if (LastFPKey == Fp_KeyCode)
lds R3,L9+1
lds R2,L9
cp R2,R20
cpc R3,R21
breq X0
xjmp L31
X0:
.dbline 66
; {
.dbline 68
; /*Not send eject or power key again if it's not released*/
; if(is_repeat_ui_key(Fp_KeyCode))
movw R16,R20
xcall _is_repeat_ui_key
movw R2,R16
tst R2
breq L33
.dbline 69
; {
.dbline 70
; repeat = repeat%REPEAT_DELAY;
ldi R17,3
lds R16,_repeat
xcall mod8u
sts _repeat,R16
.dbline 71
; if (repeat != 0)
mov R2,R16
tst R2
breq L34
.dbline 72
; Fp_KeyCode = 0;
clr R20
clr R21
.dbline 73
; }
xjmp L34
L33:
.dbline 75
; else
; Fp_KeyCode = 0;
clr R20
clr R21
L34:
.dbline 78
;
;
; if(work_mode <2)
lds R24,_work_mode
cpi R24,2
brlo X1
xjmp L32
X1:
.dbline 79
; {
.dbline 80
; if(key_time>50)
ldi R24,50
lds R2,L10
cp R24,R2
brsh L39
.dbline 81
; {
.dbline 82
; if(!longkeyflag)
lds R2,L11
tst R2
brne L32
.dbline 83
; {
.dbline 84
; if(LastFPKey == FPKC_PREV)
lds R25,L9+1
lds R24,L9
cpi R24,48
ldi R30,1
cpc R25,R30
brne L43
.dbline 85
; {
.dbline 86
; Fp_KeyCode = FPKC_TUNING_DOWN;
ldi R20,606
ldi R21,2
.dbline 87
; }
xjmp L44
L43:
.dbline 88
; else if(LastFPKey == FPKC_NEXT)
lds R25,L9+1
lds R24,L9
cpi R24,32
ldi R30,1
cpc R25,R30
brne L45
.dbline 89
; {
.dbline 90
; Fp_KeyCode = FPKC_TUNING_UP;
ldi R20,605
ldi R21,2
.dbline 91
; }
L45:
L44:
.dbline 92
; longkeyflag = 1;
ldi R24,1
sts L11,R24
.dbline 93
; }
.dbline 95
;
; }
xjmp L32
L39:
.dbline 97
; else
; key_time++;
lds R24,L10
subi R24,255 ; addi 1
sts L10,R24
.dbline 99
;
; }
.dbline 101
;
; }
xjmp L32
L31:
.dbline 103
; else
; {
.dbline 104
; repeat = 0;
clr R2
sts _repeat,R2
.dbline 105
; longkeyflag = 0;
sts L11,R2
.dbline 106
; key_time = 0;
sts L10,R2
.dbline 108
; //if(Fp_keyCode!=
; LastFPKey = Fp_KeyCode;
sts L9+1,R21
sts L9,R20
.dbline 109
; if((work_mode<2)&&((LastFPKey == FPKC_NEXT)||(LastFPKey == FPKC_PREV)))
lds R24,_work_mode
cpi R24,2
brsh L47
movw R24,R20
cpi R24,32
ldi R30,1
cpc R25,R30
breq L49
cpi R24,48
ldi R30,1
cpc R25,R30
brne L47
L49:
.dbline 110
; Fp_KeyCode = 0;
clr R20
clr R21
L47:
.dbline 111
; }
L32:
L21:
.dbline 113
cpi R20,0
cpc R20,R21
breq L50
.dbline 114
.dbline 115
sts _key_buff+1,R21
sts _key_buff,R20
.dbline 116
L50:
.dbline -2
.dbline 117
;
; if(Fp_KeyCode!=0)
; {
; key_buff = Fp_KeyCode;
; }
; }
L8:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r Fp_KeyCode 20 i
.dbsym r i 22 i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -