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

📄 remote.lis

📁 用ATmega128做的mp3播放器
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 + -