📄 remote.lis
字号:
.module remote.c
.area text(rom, con, rel)
0000 .dbfile C:\DATA\MP3\Player\Code\remote.c
0000 .dbfunc e InitRemote _InitRemote fV
.even
0000 _InitRemote::
0000 .dbline -1
0000 .dbline 22
0000 ; #include <iom128v.h>
0000 ; #include "remote.h"
0000 ; #include "vs1001.h"
0000 ; #include "fat.h"
0000 ; #include "generic.h"
0000 ; #include <string.h>
0000 ; #include <stdio.h>
0000 ; #include <macros.h>
0000 ;
0000 ; //******************************************************************
0000 ; //* Global Variable
0000 ; //******************************************************************
0000 ; extern unsigned char Key;
0000 ; extern unsigned char RemoteTextLine[5][40];
0000 ;
0000 ; //******************************************************************
0000 ; //* INITIALIZE HARDWARE FOR SERIAL INTERFACE
0000 ; //*
0000 ; //*
0000 ; //******************************************************************
0000 ; void InitRemote(void)
0000 ; {
0000 .dbline 23
0000 ; UCSR1B = 0x00; //disable while setting baud rate
0000 2224 clr R2
0002 20929A00 sts 154,R2
0006 .dbline 24
0006 ; UCSR1A = 0x00;
0006 20929B00 sts 155,R2
000A .dbline 25
000A ; UCSR1C = 0x8e; // Asyn,NoParity,2StopBit,8Bit,
000A 8EE8 ldi R24,142
000C 80939D00 sts 157,R24
0010 .dbline 26
0010 ; UBRR1H = 0x01; // set baud rate hi
0010 81E0 ldi R24,1
0012 80939800 sts 152,R24
0016 .dbline 27
0016 ; UBRR1L = 0xa0; // set baud rate low for 2400 at 16Mhz
0016 80EA ldi R24,160
0018 80939900 sts 153,R24
001C .dbline 28
001C ; UCSR1B = 0x98; // Rx enable Tx Enable
001C 88E9 ldi R24,152
001E 80939A00 sts 154,R24
0022 .dbline -2
0022 .dbline 29
0022 ; }
0022 L1:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e RemoteSendLine _RemoteSendLine fV
0024 ; text -> y+4
0024 ; LinePtr -> R20
.even
0024 _RemoteSendLine::
0024 0E940000 xcall push_gset1
0028 402F mov R20,R16
002A EF97 sbiw R28,63
002C EF97 sbiw R28,63
002E EF97 sbiw R28,63
0030 EF97 sbiw R28,63
0032 2797 sbiw R28,7 ; offset = 259
0034 .dbline -1
0034 .dbline 37
0034 ;
0034 ; //******************************************************************
0034 ; //* void RemoteSendLine(unsigned char LinePtr)
0034 ; //*
0034 ; //*
0034 ; //******************************************************************
0034 ; void RemoteSendLine(unsigned char LinePtr)
0034 ; {
0034 .dbline 40
0034 ; char text[255];
0034 ;
0034 ; sprintf(&text[0],"%c%s\0",0x81+LinePtr,&RemoteTextLine[LinePtr][0]);
0034 88E2 ldi R24,40
0036 849F mul R24,R20
0038 1001 movw R2,R0
003A 80E0 ldi R24,<_RemoteTextLine
003C 90E0 ldi R25,>_RemoteTextLine
003E 280E add R2,R24
0040 391E adc R3,R25
0042 3B82 std y+3,R3
0044 2A82 std y+2,R2
0046 842F mov R24,R20
0048 9927 clr R25
004A 8F57 subi R24,127 ; offset = 129
004C 9F4F sbci R25,255
004E 9983 std y+1,R25
0050 8883 std y+0,R24
0052 20E0 ldi R18,<L3
0054 30E0 ldi R19,>L3
0056 8E01 movw R16,R28
0058 0C5F subi R16,252 ; offset = 4
005A 1F4F sbci R17,255
005C 0E940000 xcall _sprintf
0060 .dbline 41
0060 ; SendRemote(&text[0]);
0060 8E01 movw R16,R28
0062 0C5F subi R16,252 ; offset = 4
0064 1F4F sbci R17,255
0066 F7D0 xcall _SendRemote
0068 .dbline 43
0068 ;
0068 ; sprintf(&text[0],"%c\0",0xa1+LinePtr);
0068 842F mov R24,R20
006A 9927 clr R25
006C 8F55 subi R24,95 ; offset = 161
006E 9F4F sbci R25,255
0070 9983 std y+1,R25
0072 8883 std y+0,R24
0074 20E0 ldi R18,<L4
0076 30E0 ldi R19,>L4
0078 8E01 movw R16,R28
007A 0C5F subi R16,252 ; offset = 4
007C 1F4F sbci R17,255
007E 0E940000 xcall _sprintf
0082 .dbline 44
0082 ; SendRemote(&text[0]);
0082 8E01 movw R16,R28
0084 0C5F subi R16,252 ; offset = 4
0086 1F4F sbci R17,255
0088 E6D0 xcall _SendRemote
008A .dbline -2
008A .dbline 45
008A ; }
008A L2:
008A EF96 adiw R28,63
008C EF96 adiw R28,63
008E EF96 adiw R28,63
0090 EF96 adiw R28,63
0092 2796 adiw R28,7 ; offset = 259
0094 0E940000 xcall pop_gset1
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbsym l text 4 A[255:255]c
009A .dbsym r LinePtr 20 c
009A .dbend
009A .dbfunc e RemoteSendScreen _RemoteSendScreen fV
009A ; text -> y+4
009A ; LinePtr -> R20
009A ; Header -> R22
.even
009A _RemoteSendScreen::
009A 0E940000 xcall push_gset2
009E 422F mov R20,R18
00A0 602F mov R22,R16
00A2 EF97 sbiw R28,63
00A4 EF97 sbiw R28,63
00A6 EF97 sbiw R28,63
00A8 EF97 sbiw R28,63
00AA 2797 sbiw R28,7 ; offset = 259
00AC .dbline -1
00AC .dbline 53
00AC ;
00AC ; //******************************************************************
00AC ; //* void RemoteSendScreen(unsigned char Header,unsigned char LinePtr)
00AC ; //*
00AC ; //*
00AC ; //******************************************************************
00AC ; void RemoteSendScreen(unsigned char Header,unsigned char LinePtr)
00AC ; {
00AC .dbline 56
00AC ; char text[255];
00AC ;
00AC ; sprintf(&text[0],"%c\0",0x80); // Clear Screen
00AC 80E8 ldi R24,128
00AE 90E0 ldi R25,0
00B0 9983 std y+1,R25
00B2 8883 std y+0,R24
00B4 20E0 ldi R18,<L4
00B6 30E0 ldi R19,>L4
00B8 8E01 movw R16,R28
00BA 0C5F subi R16,252 ; offset = 4
00BC 1F4F sbci R17,255
00BE 0E940000 xcall _sprintf
00C2 .dbline 57
00C2 ; SendRemote(&text[0]);
00C2 8E01 movw R16,R28
00C4 0C5F subi R16,252 ; offset = 4
00C6 1F4F sbci R17,255
00C8 C6D0 xcall _SendRemote
00CA .dbline 59
00CA ;
00CA ; if (Header == DIR) sprintf(&text[0],"%c\0",0x91);
00CA 6130 cpi R22,1
00CC 59F4 brne L6
00CE .dbline 59
00CE 81E9 ldi R24,145
00D0 90E0 ldi R25,0
00D2 9983 std y+1,R25
00D4 8883 std y+0,R24
00D6 20E0 ldi R18,<L4
00D8 30E0 ldi R19,>L4
00DA 8E01 movw R16,R28
00DC 0C5F subi R16,252 ; offset = 4
00DE 1F4F sbci R17,255
00E0 0E940000 xcall _sprintf
00E4 L6:
00E4 .dbline 60
00E4 ; if (Header == FILE) sprintf(&text[0],"%c\0",0x90);
00E4 6623 tst R22
00E6 59F4 brne L8
00E8 .dbline 60
00E8 80E9 ldi R24,144
00EA 90E0 ldi R25,0
00EC 9983 std y+1,R25
00EE 8883 std y+0,R24
00F0 20E0 ldi R18,<L4
00F2 30E0 ldi R19,>L4
00F4 8E01 movw R16,R28
00F6 0C5F subi R16,252 ; offset = 4
00F8 1F4F sbci R17,255
00FA 0E940000 xcall _sprintf
00FE L8:
00FE .dbline 61
00FE ; if (Header == PLAY) sprintf(&text[0],"%c\0",0x92);
00FE 6230 cpi R22,2
0100 59F4 brne L10
0102 .dbline 61
0102 82E9 ldi R24,146
0104 90E0 ldi R25,0
0106 9983 std y+1,R25
0108 8883 std y+0,R24
010A 20E0 ldi R18,<L4
010C 30E0 ldi R19,>L4
010E 8E01 movw R16,R28
0110 0C5F subi R16,252 ; offset = 4
0112 1F4F sbci R17,255
0114 0E940000 xcall _sprintf
0118 L10:
0118 .dbline 62
0118 ; SendRemote(&text[0]);
0118 8E01 movw R16,R28
011A 0C5F subi R16,252 ; offset = 4
011C 1F4F sbci R17,255
011E 9BD0 xcall _SendRemote
0120 .dbline 64
0120 ;
0120 ; sprintf(&text[0],"%c%s\0",0x81,&RemoteTextLine[0][0]);
0120 80E0 ldi R24,<_RemoteTextLine
0122 90E0 ldi R25,>_RemoteTextLine
0124 9B83 std y+3,R25
0126 8A83 std y+2,R24
0128 81E8 ldi R24,129
012A 90E0 ldi R25,0
012C 9983 std y+1,R25
012E 8883 std y+0,R24
0130 20E0 ldi R18,<L3
0132 30E0 ldi R19,>L3
0134 8E01 movw R16,R28
0136 0C5F subi R16,252 ; offset = 4
0138 1F4F sbci R17,255
013A 0E940000 xcall _sprintf
013E .dbline 65
013E ; if (LinePtr != 0) text[14] = 0x00;
013E 4423 tst R20
0140 11F0 breq L12
0142 .dbline 65
0142 2224 clr R2
0144 2A8A std y+18,R2
0146 L12:
0146 .dbline 66
0146 ; SendRemote(&text[0]);
0146 8E01 movw R16,R28
0148 0C5F subi R16,252 ; offset = 4
014A 1F4F sbci R17,255
014C 84D0 xcall _SendRemote
014E .dbline 68
014E ;
014E ; sprintf(&text[0],"%c%s\0",0x82,&RemoteTextLine[1][0]);
014E 80E0 ldi R24,<_RemoteTextLine+40
0150 90E0 ldi R25,>_RemoteTextLine+40
0152 9B83 std y+3,R25
0154 8A83 std y+2,R24
0156 82E8 ldi R24,130
0158 90E0 ldi R25,0
015A 9983 std y+1,R25
015C 8883 std y+0,R24
015E 20E0 ldi R18,<L3
0160 30E0 ldi R19,>L3
0162 8E01 movw R16,R28
0164 0C5F subi R16,252 ; offset = 4
0166 1F4F sbci R17,255
0168 0E940000 xcall _sprintf
016C .dbline 69
016C ; if (LinePtr != 1) text[14] = 0x00;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -