📄 remote.s
字号:
L50:
.dbline 214
inc R20
L52:
.dbline 214
; for (i=0;i<9;i++) LcdLine(0,i,83,i,PIXEL_XOR);
cpi R20,9
brlo L49
.dbline 215
; LcdGotoXY(5,3);
ldi R18,3
ldi R16,5
rcall _LcdGotoXY
.dbline 216
; LcdStrConst(1,"Sylvain");
ldi R18,<L53
ldi R19,>L53
ldi R16,1
rcall _LcdStrConst
.dbline 217
; LcdGotoXY(3,4);
ldi R18,4
ldi R16,3
rcall _LcdGotoXY
.dbline 218
; LcdStrConst(1,"Bissonnette");
ldi R18,<L54
ldi R19,>L54
ldi R16,1
rcall _LcdStrConst
.dbline 219
; LcdGotoXY(4,6);
ldi R18,6
ldi R16,4
rcall _LcdGotoXY
.dbline 220
; LcdStrConst(1,"Ver : 1.0");
ldi R18,<L55
ldi R19,>L55
ldi R16,1
rcall _LcdStrConst
.dbline 221
; LcdUpdate();
rcall _LcdUpdate
.dbline 222
; delay_ms(1000);
ldi R16,1000
ldi R17,3
rcall _delay_ms
.dbline 223
; LcdClear();
rcall _LcdClear
.dbline 224
; LcdUpdate();
rcall _LcdUpdate
.dbline -2
.dbline 225
; }
L47:
adiw R28,5
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e LineDisplay _LineDisplay fV
; buffer -> y+5
; i -> R20
.even
_LineDisplay::
rcall push_gset1
sbiw R28,19
.dbline -1
.dbline 231
;
; //*************************************
; // void LineDisplay(void)
; //*************************************
; void LineDisplay(void)
; {
.dbline 235
; unsigned char i;
; char buffer[14];
;
; LcdClear();
rcall _LcdClear
.dbline 236
; LcdGotoXY(3,1);
ldi R18,1
ldi R16,3
rcall _LcdGotoXY
.dbline 237
; if (ListType == SONG) LcdStrConst(1,"Song List" );
lds R2,_ListType
tst R2
brne L57
.dbline 237
ldi R18,<L59
ldi R19,>L59
ldi R16,1
rcall _LcdStrConst
L57:
.dbline 238
; if (ListType == DIR) LcdStrConst(1,"Dir List" );
lds R24,_ListType
cpi R24,1
brne L60
.dbline 238
ldi R18,<L62
ldi R19,>L62
ldi R16,1
rcall _LcdStrConst
L60:
.dbline 239
; if (ListType == PLAY) LcdStrConst(1," Playing" );
lds R24,_ListType
cpi R24,2
brne L63
.dbline 239
ldi R18,<L65
ldi R19,>L65
ldi R16,1
rcall _LcdStrConst
L63:
.dbline 240
ldi R20,1
rjmp L69
L66:
.dbline 240
ldi R24,2
std y+4,R24
std y+2,R20
ldi R24,83
std y+0,R24
mov R18,R20
clr R16
rcall _LcdLine
L67:
.dbline 240
inc R20
L69:
.dbline 240
; for (i=1;i<8;i++) LcdLine(0,i,83,i,PIXEL_XOR);
cpi R20,8
brlo L66
.dbline 242
;
; for (i=0;i<5;i++)
clr R20
rjmp L73
L70:
.dbline 243
.dbline 244
ldi R24,13
ldi R25,0
std y+1,R25
std y+0,R24
ldi R24,40
mul R24,R20
movw R18,R0
ldi R24,<_Line
ldi R25,>_Line
add R18,R24
adc R19,R25
movw R16,R28
subi R16,251 ; offset = 5
sbci R17,255
rcall _memcpy
.dbline 245
clr R2
std y+18,R2
.dbline 246
mov R18,R20
subi R18,254 ; addi 2
ldi R16,2
rcall _LcdGotoXY
.dbline 247
movw R18,R28
subi R18,251 ; offset = 5
sbci R19,255
ldi R16,1
rcall _LcdStr
.dbline 248
L71:
.dbline 242
inc R20
L73:
.dbline 242
cpi R20,5
brlo L70
.dbline 249
; {
; memcpy(&buffer[0],&Line[i][0],13);
; buffer[13] = 0x00;
; LcdGotoXY(2,2+i);
; LcdStr(1,&buffer[0]);
; }
; LcdGotoXY(1,2+LinePtr);
lds R18,_LinePtr
subi R18,254 ; addi 2
ldi R16,1
rcall _LcdGotoXY
.dbline 250
; LcdChr(1,134); // c'est la fleche
ldi R18,134
ldi R16,1
rcall _LcdChr
.dbline -2
.dbline 251
; }
L56:
adiw R28,19
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l buffer 5 A[14:14]c
.dbsym r i 20 c
.dbend
.area vector(rom, abs)
.org 18
rjmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
.area data(ram, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
L76:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
L77:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
L78:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
.area bss(ram, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
L79:
.blkb 14
.area text(rom, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.dbsym s buffer L79 A[14:14]c
.dbsym s LastLinePtr L78 c
.dbsym s i L77 c
.dbsym s tick L76 c
; j -> R20
.even
_timer0_ovf_isr::
rcall push_lset
rcall push_gset1
sbiw R28,2
.dbline -1
.dbline 260
;
; //*************************************
; // void timer1_ovf_isr(void)
; //
; // 3.8 Hit/Second
; //*************************************
; #pragma interrupt_handler timer0_ovf_isr:10
; void timer0_ovf_isr(void)
; {
.dbline 268
;
; static unsigned char tick = 0;
; static unsigned char i = 0;
; static unsigned char LastLinePtr = 0;
; static char buffer[14];
; unsigned char j;
;
; if (LinePtr != LastLinePtr) // if line ptr change
lds R2,L78
lds R3,_LinePtr
cp R3,R2
breq L80
.dbline 269
; {
.dbline 270
; LineDisplay();
rcall _LineDisplay
.dbline 271
; i = 0;
clr R2
sts L77,R2
.dbline 272
; LastLinePtr = LinePtr;
lds R2,_LinePtr
sts L78,R2
.dbline 273
; }
L80:
.dbline 275
;
; if (Refresh == TRUE)
lds R24,_Refresh
cpi R24,1
brne L82
.dbline 276
; {
.dbline 277
; LineDisplay();
rcall _LineDisplay
.dbline 278
; i = 0;
clr R2
sts L77,R2
.dbline 279
; Refresh = FALSE;
sts _Refresh,R2
.dbline 280
; }
L82:
.dbline 282
;
; if (UpdateLcd == TRUE) LcdUpdate();
lds R24,_UpdateLcd
cpi R24,1
brne L84
.dbline 282
rcall _LcdUpdate
L84:
.dbline 284
;
; tick++;
lds R24,L76
subi R24,255 ; addi 1
sts L76,R24
.dbline 285
; if (tick < 6) return;
cpi R24,6
brsh L86
.dbline 285
rjmp L75
L86:
.dbline 286
; tick = 0;
clr R2
sts L76,R2
.dbline 289
;
; #ifndef NOTIMEOUT
; TimeOut++;
lds R24,_TimeOut
lds R25,_TimeOut+1
adiw R24,1
sts _TimeOut+1,R25
sts _TimeOut,R24
.dbline 291
; #endif
; Light++;
lds R24,_Light
lds R25,_Light+1
adiw R24,1
sts _Light+1,R25
sts _Light,R24
.dbline 294
;
;
; if (strlen(&Line[LinePtr][0]) < 14) return;
lds R17,_LinePtr
ldi R16,40
muls R16,R17
movw R16,R0
ldi R24,<_Line
ldi R25,>_Line
add R16,R24
adc R17,R25
rcall _strlen
cpi R16,14
ldi R30,0
cpc R17,R30
brsh L88
.dbline 294
rjmp L75
L88:
.dbline 296
clr R20
rjmp L93
L90:
.dbline 296
ldi R24,<L79
ldi R25,>L79
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldi R24,32
std z+0,R24
L91:
.dbline 296
inc R20
L93:
.dbline 296
;
; for (j=0;j<14;j++) buffer[j] = ' ';
cpi R20,14
brlo L90
.dbline 297
; if (i > (strlen(&Line[LinePtr][0]))) i = 0;
lds R17,_LinePtr
ldi R16,40
muls R16,R17
movw R16,R0
ldi R24,<_Line
ldi R25,>_Line
add R16,R24
adc R17,R25
rcall _strlen
lds R2,L77
clr R3
cp R16,R2
cpc R17,R3
brsh L94
.dbline 297
clr R2
sts L77,R2
L94:
.dbline 298
; j = strlen(&Line[LinePtr][i]);
lds R17,_LinePtr
ldi R16,40
muls R16,R17
movw R2,R0
ldi R24,<_Line
ldi R25,>_Line
add R2,R24
adc R3,R25
lds R16,L77
clr R17
add R16,R2
adc R17,R3
rcall _strlen
mov R20,R16
.dbline 299
; if (j > 14) j = 14;
ldi R24,14
cp R24,R16
brsh L96
.dbline 299
ldi R20,14
L96:
.dbline 300
; memcpy(&buffer[0],&Line[LinePtr][i],j);
mov R2,R20
clr R3
std y+1,R3
std y+0,R2
lds R17,_LinePtr
ldi R16,40
muls R16,R17
movw R2,R0
ldi R24,<_Line
ldi R25,>_Line
add R2,R24
adc R3,R25
lds R18,L77
clr R19
add R18,R2
adc R19,R3
ldi R16,<L79
ldi R17,>L79
rcall _memcpy
.dbline 301
; buffer[13] = 0x00;
clr R2
sts L79+13,R2
.dbline 302
; LcdGotoXY(2,2+LinePtr);
lds R18,_LinePtr
subi R18,254 ; addi 2
ldi R16,2
rcall _LcdGotoXY
.dbline 303
; LcdStr(1,&buffer[0]);
ldi R18,<L79
ldi R19,>L79
ldi R16,1
rcall _LcdStr
.dbline 304
; i++;
lds R24,L77
subi R24,255 ; addi 1
sts L77,R24
.dbline -2
.dbline 305
; }
L75:
adiw R28,2
rcall pop_gset1
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym r j 20 c
.dbend
.area vector(rom, abs)
.org 2
rjmp _int0_isr
.area text(rom, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
.area bss(ram, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
L100:
.blkb 1
.area text(rom, con, rel)
.dbfile C:\DATA\MP3\Remote\Code\remote.c
.dbfunc e int0_isr _int0_isr fV
.dbsym s LastKey L100 c
; i -> <dead>
.even
_int0_isr::
rcall push_lset
.dbline -1
.dbline 312
;
; //*************************************
; // void int0_isr(void)
; //*************************************
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
.dbline 316
; static unsigned char LastKey;
; unsigned char i;
;
; TimeOut = 0;
clr R2
clr R3
sts _TimeOut+1,R3
sts _TimeOut,R2
.dbline 318
;
; delay_ms(10);
ldi R16,10
ldi R17,0
rcall _delay_ms
.dbline 319
; Key = ScanKey();
rcall _ScanKey
sts _Key,R16
.dbline -2
.dbline 320
; }
L99:
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym l i 1 c
.dbend
.dbfunc e ScanKey _ScanKey fc
.even
_ScanKey::
.dbline -1
.dbline 336
;
; /**********************************************************
;
; Name: void ScanKey(void)
;
; Description: ScanKeyPad
;
; Input: none
;
; Output: none
;
; Misc:
;
; **********************************************************/
; unsigned char ScanKey()
; {
.dbline 337
; if ((!(PINC & SHIFT)) && (!(PINC & UP)) && (!(PINC & DOWN))) return RESET;
sbic 0x13,4
rjmp L102
sbic 0x13,5
rjmp L102
sbic 0x13,2
rjmp L102
.dbline 337
ldi R16,38
rjmp L101
L102:
.dbline 339
;
; if ((!(PINC & SHIFT)) && (!(PINC & UP))) return SHIFT_UP;
sbic 0x13,4
rjmp L104
sbic 0x13,5
rjmp L104
.dbline 339
ldi R16,144
rjmp L101
L104:
.dbline 340
; if ((!(PINC & SHIFT)) && (!(PINC & DOWN))) return SHIFT_DOWN;
sbic 0x13,4
rjmp L106
sbic 0x13,2
rjmp L106
.dbline 340
ldi R16,132
rjmp L101
L106:
.dbline 341
; if ((!(PINC & SHIFT)) && (!(PINC & RIGHT))) return SHIFT_RIGHT;
sbic 0x13,4
rjmp L108
sbic 0x13,3
rjmp L108
.dbline 341
ldi R16,136
rjmp L101
L108:
.dbline 342
; if ((!(PINC & SHIFT)) && (!(PINC & LEFT))) return SHIFT_LEFT;
sbic 0x13,4
rjmp L110
sbic 0x13,1
rjmp L110
.dbline 342
ldi R16,130
rjmp L101
L110:
.dbline 344
;
; if (!(PINC & UP)) return UP;
sbic 0x13,5
rjmp L112
.dbline 344
ldi R16,32
rjmp L101
L112:
.dbline 345
; if (!(PINC & DOWN)) return DOWN;
sbic 0x13,2
rjmp L114
.dbline 345
ldi R16,4
rjmp L101
L114:
.dbline 346
; if (!(PINC & RIGHT)) return RIGHT;
sbic 0x13,3
rjmp L116
.dbline 346
ldi R16,8
rjmp L101
L116:
.dbline 347
; if (!(PINC & LEFT)) return LEFT;
sbic 0x13,1
rjmp L118
.dbline 347
ldi R16,2
rjmp L101
L118:
.dbline 349
;
; return NONE;
clr R16
.dbline -2
L101:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_ms _delay_ms fV
; j -> R20,R21
; i -> R22,R23
; ms -> R16,R17
.even
_delay_ms::
rcall push_gset2
.dbline -1
.dbline 358
; }
;
; //******************************************************************
; //* Delay millisecond Function
; //*
; //* Clock = 1Mhz
; //******************************************************************
; void delay_ms(int ms)
; {
.dbline 361
; int i,j;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -