⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote.s

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第二部分
💻 S
📖 第 1 页 / 共 3 页
字号:
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 + -