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

📄 remote.s

📁 硬盘MP3播放器-MEGA128-VS1001K-USB-遥控-LCD-ICCAVR代码-硬盘-支持FAT32-单面PCB 第二部分
💻 S
📖 第 1 页 / 共 3 页
字号:
; for (j=0;j<ms;j++) 
	clr R20
	clr R21
	rjmp L124
L121:
	.dbline 362
; 	{
	.dbline 363
	clr R22
	clr R23
L125:
	.dbline 363
L126:
	.dbline 363
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 363
	cpi R22,130
	ldi R30,0
	cpc R23,R30
	brlt L125
	.dbline 364
	wdr
	.dbline 365
L122:
	.dbline 361
	subi R20,255  ; offset = 1
	sbci R21,255
L124:
	.dbline 361
	cp R20,R16
	cpc R21,R17
	brlt L121
	.dbline -2
	.dbline 366
; 	for (i=0;i<130;i++);
; 	WDR();
; 	}
; }
L120:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r j 20 I
	.dbsym r i 22 I
	.dbsym r ms 16 I
	.dbend
	.area vector(rom, abs)
	.org 22
	rjmp _uart0_rx_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
L130:
	.blkb 1
L131:
	.blkb 1
L132:
	.blkb 1
	.area text(rom, con, rel)
	.dbfile C:\DATA\MP3\Remote\Code\remote.c
	.dbfunc e uart0_rx_isr _uart0_rx_isr fV
	.dbsym s Qte L132 c
	.dbsym s Decoded L131 c
	.dbsym s Error L130 c
;              i -> R22
;             ch -> R20
	.even
_uart0_rx_isr::
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	rcall push_gset2
	.dbline -1
	.dbline 375
; 
; //*************************************
; // void uart0_rx_isr(void)  
; //
; // manchester encoded byte
; //*************************************
; #pragma interrupt_handler uart0_rx_isr:12
; void uart0_rx_isr(void)
; {
	.dbline 382
; unsigned char ch;
; unsigned char i;
; static unsigned char Error;
; static unsigned char Decoded;
; static unsigned char Qte;
; 
; ch = UDR;  //uart has received a character in UDR
	in R20,0xc
	.dbline 384
; 
; if (ch == 0xf0) 
	cpi R20,240
	brne L133
	.dbline 385
;    {
	.dbline 386
;    Qte = 0;
	clr R2
	sts L132,R2
	.dbline 387
;    Error = FALSE;
	sts L130,R2
	.dbline 388
;    return;
	rjmp L129
L133:
	.dbline 391
;    }
;    
; if ((ch == 0x0f) && (Error == FALSE)) 
	cpi R20,15
	brne L135
	lds R2,L130
	tst R2
	brne L135
	.dbline 392
;    {
	.dbline 393
;    RxData[Qte/2] = 0x00;
	ldi R18,2
	ldi R19,0
	lds R16,L132
	clr R17
	rcall div16s
	movw R30,R16
	ldi R24,<_RxData
	ldi R25,>_RxData
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 394
;    NewMessage = TRUE;
	ldi R24,1
	sts _NewMessage,R24
	.dbline 395
;    return;
	rjmp L129
L135:
	.dbline 398
;    }
; 
; Decoded = 0x00;
	clr R2
	sts L131,R2
	.dbline 400
; 
; for (i=0;i<4;i++)
	clr R22
	rjmp L140
L137:
	.dbline 401
; 	{
	.dbline 402
; 	Decoded >>= 1;
	lds R2,L131
	lsr R2
	sts L131,R2
	.dbline 403
; 	if ((ch & 0x03) == 0x02) Decoded |= 0x08;
	mov R24,R20
	andi R24,3
	cpi R24,2
	brne L141
	.dbline 403
	mov R24,R2
	ori R24,8
	sts L131,R24
	rjmp L142
L141:
	.dbline 404
; 	else if ((ch & 0x03) == 0x01) Decoded = Decoded;
	mov R24,R20
	andi R24,3
	cpi R24,1
	brne L143
	.dbline 404
	lds R2,L131
	sts L131,R2
	rjmp L144
L143:
	.dbline 405
; 	else Error = TRUE;
	ldi R24,1
	sts L130,R24
L144:
L142:
	.dbline 406
	lsr R20
	lsr R20
	.dbline 407
L138:
	.dbline 400
	inc R22
L140:
	.dbline 400
	cpi R22,4
	brlo L137
	.dbline 409
; 	ch >>= 2;
; 	}
; 
; if (Qte <= (MAXLEN * 2)) 
	ldi R24,80
	lds R2,L132
	cp R24,R2
	brlo L145
	.dbline 410
;    {
	.dbline 411
;    if ((Qte % 2) == 0) RxData[Qte/2] = Decoded;
	ldi R17,2
	mov R16,R2
	rcall mod8u
	tst R16
	brne L147
	.dbline 411
	ldi R18,2
	ldi R19,0
	lds R16,L132
	clr R17
	rcall div16s
	movw R30,R16
	ldi R24,<_RxData
	ldi R25,>_RxData
	add R30,R24
	adc R31,R25
	lds R2,L131
	std z+0,R2
	rjmp L148
L147:
	.dbline 412
;    else RxData[Qte/2] += (Decoded << 4);
	ldi R18,2
	ldi R19,0
	lds R16,L132
	clr R17
	rcall div16s
	movw R2,R16
	ldi R24,<_RxData
	ldi R25,>_RxData
	add R2,R24
	adc R3,R25
	lds R24,L131
	andi R24,#0x0F
	swap R24
	movw R30,R2
	ldd R4,z+0
	add R4,R24
	std z+0,R4
L148:
	.dbline 413
;    }
L145:
	.dbline 414
; Qte++;
	lds R24,L132
	subi R24,255    ; addi 1
	sts L132,R24
	.dbline -2
	.dbline 415
; }
L129:
	rcall pop_gset2
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r i 22 c
	.dbsym r ch 20 c
	.dbend
	.dbfunc e AnalyseData _AnalyseData fV
;              i -> R20
	.even
_AnalyseData::
	rcall push_gset1
	sbiw R28,2
	.dbline -1
	.dbline 421
; 
; //*************************************
; // void AnalyseData(void)
; //*************************************
; void AnalyseData(void)
; {
	.dbline 424
; unsigned char i;
; 
; TIMSK &= ~0x01;		   // Timer0 overflow interrupt disable
	in R24,0x39
	andi R24,254
	out 0x39,R24
	.dbline 425
; if (RxData[0] == 0x80) // Clear Screen
	lds R24,_RxData
	cpi R24,128
	brne L150
	.dbline 426
;    {
	.dbline 427
;    for (i=0;i<14;i++)
	clr R20
	rjmp L155
L152:
	.dbline 428
	.dbline 429
	ldi R24,<_Line
	ldi R25,>_Line
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 430
	ldi R24,<_Line+40
	ldi R25,>_Line+40
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 431
	ldi R24,<_Line+80
	ldi R25,>_Line+80
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 432
	ldi R24,<_Line+120
	ldi R25,>_Line+120
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 433
	ldi R24,<_Line+160
	ldi R25,>_Line+160
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 434
L153:
	.dbline 427
	inc R20
L155:
	.dbline 427
	cpi R20,14
	brlo L152
	.dbline 435
; 	  	  {
; 	  	  Line[0][i] = 0x00;
; 	  	  Line[1][i] = 0x00;
; 	  	  Line[2][i] = 0x00;
; 	  	  Line[3][i] = 0x00;
; 	  	  Line[4][i] = 0x00;
; 		  }
;    }
L150:
	.dbline 437
;    
; if (RxData[0] == 0x81) strncpy(&Line[0][0],&RxData[1],MAXLEN);
	lds R24,_RxData
	cpi R24,129
	brne L160
	.dbline 437
	ldi R24,40
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_RxData+1
	ldi R19,>_RxData+1
	ldi R16,<_Line
	ldi R17,>_Line
	rcall _strncpy
L160:
	.dbline 438
; if (RxData[0] == 0x82) strncpy(&Line[1][0],&RxData[1],MAXLEN);
	lds R24,_RxData
	cpi R24,130
	brne L163
	.dbline 438
	ldi R24,40
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_RxData+1
	ldi R19,>_RxData+1
	ldi R16,<_Line+40
	ldi R17,>_Line+40
	rcall _strncpy
L163:
	.dbline 439
; if (RxData[0] == 0x83) strncpy(&Line[2][0],&RxData[1],MAXLEN);
	lds R24,_RxData
	cpi R24,131
	brne L167
	.dbline 439
	ldi R24,40
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_RxData+1
	ldi R19,>_RxData+1
	ldi R16,<_Line+80
	ldi R17,>_Line+80
	rcall _strncpy
L167:
	.dbline 440
; if (RxData[0] == 0x84) strncpy(&Line[3][0],&RxData[1],MAXLEN);
	lds R24,_RxData
	cpi R24,132
	brne L171
	.dbline 440
	ldi R24,40
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_RxData+1
	ldi R19,>_RxData+1
	ldi R16,<_Line+120
	ldi R17,>_Line+120
	rcall _strncpy
L171:
	.dbline 441
; if (RxData[0] == 0x85) strncpy(&Line[4][0],&RxData[1],MAXLEN);
	lds R24,_RxData
	cpi R24,133
	brne L175
	.dbline 441
	ldi R24,40
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_RxData+1
	ldi R19,>_RxData+1
	ldi R16,<_Line+160
	ldi R17,>_Line+160
	rcall _strncpy
L175:
	.dbline 443
; 
; if (RxData[0] == 0x90) ListType = SONG;
	lds R24,_RxData
	cpi R24,144
	brne L179
	.dbline 443
	clr R2
	sts _ListType,R2
L179:
	.dbline 444
; if (RxData[0] == 0x91) ListType = DIR;
	lds R24,_RxData
	cpi R24,145
	brne L181
	.dbline 444
	ldi R24,1
	sts _ListType,R24
L181:
	.dbline 445
; if (RxData[0] == 0x92) ListType = PLAY;
	lds R24,_RxData
	cpi R24,146
	brne L183
	.dbline 445
	ldi R24,2
	sts _ListType,R24
L183:
	.dbline 447
; 
; if ((RxData[0] > 0xa0) && (RxData[0] < 0xa6)) LinePtr = RxData[0] - 0xa1;
	ldi R24,160
	lds R2,_RxData
	cp R24,R2
	brsh L185
	mov R24,R2
	cpi R24,166
	brsh L185
	.dbline 447
	subi R24,161
	sts _LinePtr,R24
L185:
	.dbline 449
; 
; if (RxData[0] == 0xb0) Refresh = TRUE;
	lds R24,_RxData
	cpi R24,176
	brne L187
	.dbline 449
	ldi R24,1
	sts _Refresh,R24
L187:
	.dbline 451
; 
; TIMSK |= 0x01;  	  // Timer0 overflow interrupt enable
	in R24,0x39
	ori R24,1
	out 0x39,R24
	.dbline -2
	.dbline 452
; }
L149:
	adiw R28,2
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e SendKey _SendKey fV
;              i -> R20
;             ch -> R20
	.even
_SendKey::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 458
; 
; //*************************************
; // void Send(unsigned char ch)
; //*************************************
; void SendKey(unsigned char ch)
; {
	.dbline 461
; unsigned char i;
; 
; UCSRB &= ~0x80;  		// Disable RX interrupt
	cbi 0xa,7
	.dbline 462
; TxChar(0x55);			// Setup AGC
	ldi R16,85
	rcall _TxChar
	.dbline 463
; TxChar(0x55);			// Setup AGC
	ldi R16,85
	rcall _TxChar
	.dbline 464
; TxChar(0xf0);			// Start of Frame
	ldi R16,240
	rcall _TxChar
	.dbline 465
; TxChar(ch);				// Send value
	mov R16,R20
	rcall _TxChar
	.dbline 466
; TxChar(~ch);			// Send value
	mov R16,R20
	com R16
	rcall _TxChar
	.dbline 467
; TxChar(0x0f);			// End of Frame
	ldi R16,15
	rcall _TxChar
	.dbline 469
; 
; i = UDR;  				// Clear uart received character 
	in R20,0xc
	.dbline 470
; UCSRB |= 0x80;			// Enable RX interrupt
	sbi 0xa,7
	.dbline -2
	.dbline 471
; }
L189:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r ch 20 c
	.dbend
	.dbfunc e TxChar _TxChar fV
;             ch -> R16
	.even
_TxChar::
	.dbline -1
	.dbline 477
; 
; //*************************************
; // void TxChar(unsigned char ch)
; //*************************************
; void TxChar(unsigned char ch)
; {
	.dbline 478
; TIMSK &= ~0x01;
	in R24,0x39
	andi R24,254
	out 0x39,R24
L191:
	.dbline 479
L192:
	.dbline 479
; while (!(UCSRA & 0x20));      // Wait for empty transmit buffer
	sbis 0xb,5
	rjmp L191
	.dbline 480
; TCCR1A = 0x40; 	 			  // Enable 38khz
	ldi R24,64
	out 0x2f,R24
	.dbline 481
; UDR = ch;	  		   		  // Write char
	out 0xc,R16
L194:
	.dbline 482
L195:
	.dbline 482
; while (!(UCSRA & 0x40));      // Wait for transmit finish
	sbis 0xb,6
	rjmp L194
	.dbline 483
; UCSRA = 0x40;  	 			  // Clear transmit finish flag
	ldi R24,64
	out 0xb,R24
	.dbline 484
; TCCR1A = 0x00;				  // Disable 38khz
	clr R2
	out 0x2f,R2
	.dbline 485
; TIMSK |= 0x01;
	in R24,0x39
	ori R24,1
	out 0x39,R24
	.dbline -2
	.dbline 486
; }
L190:
	.dbline 0 ; func end
	ret
	.dbsym r ch 16 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DATA\MP3\Remote\Code\remote.c
_buffer::
	.blkb 10
	.dbsym e buffer _buffer A[10:10]c
_UpdateLcd::
	.blkb 1
	.dbsym e UpdateLcd _UpdateLcd c
_RxData::
	.blkb 80
	.dbsym e RxData _RxData A[80:80]c
_Line::
	.blkb 200
	.dbsym e Line _Line A[200:5:40]c
	.area lit(rom, con, rel)
L65:
	.byte 32,'P,'l,'a,'y,'i,'n,'g,0
L62:
	.byte 'D,'i,'r,32,32,'L,'i,'s,'t,0
L59:
	.byte 'S,'o,'n,'g,32,'L,'i,'s,'t,0
L55:
	.byte 'V,'e,'r,32,58,32,49,46,48,0
L54:
	.byte 'B,'i,'s,'s,'o,'n,'n,'e,'t,'t,'e,0
L53:
	.byte 'S,'y,'l,'v,'a,'i,'n,0
L48:
	.byte 'M,'P,51,32,'P,'l,'a,'y,'e,'r,0
L43:
	.byte 'S,'t,'a,'c,'k,32,'C,'r,'a,'s,'h,46,46,46,0,0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -