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

📄 mp3.lis

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module mp3.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\software\MP3程序\Main\mp3.c
 0000                   .dbfunc e Init_system _Init_system fV
 0000           ;           temp -> R20
                        .even
 0000           _Init_system::
 0000 0E940000          xcall push_gset1
 0004 2897              sbiw R28,8
 0006                   .dbline -1
 0006                   .dbline 17
 0006           ; #include <iom64v.h>
 0006           ; #include <macros.h>
 0006           ; #include <string.h>
 0006           ; #include <stdio.h>
 0006           ; #include "../Lcd/lcd.h"
 0006           ; #include "../Keyboard/key.h"
 0006           ; #include "../Ds1302/ds1302.h"
 0006           ; 
 0006           ; 
 0006           ; #define  uchar unsigned char
 0006           ; #define  uint  unsigned int
 0006           ; 
 0006           ; extern uchar keybuf;
 0006           ; struct time_now timebuf;
 0006           ; extern unsigned char const diskinfor[];
 0006           ; void Init_system(void)
 0006           ; {
 0006                   .dbline 20
 0006           ;   uchar temp; 
 0006           ;   //开启外部总线
 0006           ;   MCUCR=0x80;
 0006 80E8              ldi R24,128
 0008 85BF              out 0x35,R24
 000A                   .dbline 21
 000A           ;   XMCRA=0x00;
 000A 2224              clr R2
 000C 20926D00          sts 109,R2
 0010                   .dbline 23
 0010           ;   //初始化部件
 0010           ;   KEYBUF_NULL;     //键盘初值0 
 0010 20920000          sts _keybuf,R2
 0014                   .dbline 23
 0014                   .dbline 24
 0014           ;   Usart_init();    //串口初始化
 0014 0E940000          xcall _Usart_init
 0018                   .dbline 25
 0018           ;   DelayIni();    //延时初始化
 0018 0E940000          xcall _DelayIni
 001C                   .dbline 26
 001C           ;   ds1302_init();   //时钟初始化
 001C 0E940000          xcall _ds1302_init
 0020                   .dbline 27
 0020           ;   outpower_init(); //继电器输出初始化
 0020 0E940000          xcall _outpower_init
 0024                   .dbline 29
 0024           ;  // Set_time();
 0024           ;   mp3portIni();    //播放器初始化
 0024 0E940000          xcall _mp3portIni
 0028                   .dbline 31
 0028           ;  // mp3SineTest();   //测试声音播放
 0028           ;   mp3Reset();      //软件复位  
 0028 0E940000          xcall _mp3Reset
 002C                   .dbline 32
 002C           ;   lcd_init();      //LCD初始化
 002C 0E940000          xcall _lcd_init
 0030                   .dbline 33
 0030           ;   show_clear();
 0030 0E940000          xcall _show_clear
 0034                   .dbline 34
 0034           ;   show_init("init Vs1003...ok",0,0);
 0034 2224              clr R2
 0036 3324              clr R3
 0038 3982              std y+1,R3
 003A 2882              std y+0,R2
 003C 2227              clr R18
 003E 3327              clr R19
 0040 00E0              ldi R16,<L2
 0042 10E0              ldi R17,>L2
 0044 0E940000          xcall _show_init
 0048                   .dbline 35
 0048           ;   delay_1s();
 0048 0E940000          xcall _delay_1s
 004C                   .dbline 36
 004C           ;   key_init();            //键盘初始化
 004C 0E940000          xcall _key_init
 0050                   .dbline 37
 0050           ;   show_init("init Keyboard...ok",2,0);
 0050 2224              clr R2
 0052 3324              clr R3
 0054 3982              std y+1,R3
 0056 2882              std y+0,R2
 0058 22E0              ldi R18,2
 005A 30E0              ldi R19,0
 005C 00E0              ldi R16,<L3
 005E 10E0              ldi R17,>L3
 0060 0E940000          xcall _show_init
 0064                   .dbline 38
 0064           ;   delay_1s();
 0064 0E940000          xcall _delay_1s
 0068                   .dbline 39
 0068           ;   temp = Init_usb();
 0068 0E940000          xcall _Init_usb
 006C 402F              mov R20,R16
 006E                   .dbline 40
 006E           ;   if(temp==1){           //USB控制器初始化
 006E 0130              cpi R16,1
 0070 59F4              brne L4
 0072                   .dbline 40
 0072                   .dbline 41
 0072           ;                                  show_init("init Disk...ok",4,0);
 0072 2224              clr R2
 0074 3324              clr R3
 0076 3982              std y+1,R3
 0078 2882              std y+0,R2
 007A 24E0              ldi R18,4
 007C 30E0              ldi R19,0
 007E 00E0              ldi R16,<L6
 0080 10E0              ldi R17,>L6
 0082 0E940000          xcall _show_init
 0086                   .dbline 42
 0086           ;                                  }
 0086 1AC0              xjmp L5
 0088           L4:
 0088                   .dbline 43
 0088           ;     else {Print_str("Disk error\r\n");
 0088                   .dbline 43
 0088 00E0              ldi R16,<L7
 008A 10E0              ldi R17,>L7
 008C 0E940000          xcall _Print_str
 0090                   .dbline 44
 0090           ;                 show_lcd(0, 0, 192, 6, &diskinfor[0],0);
 0090 2224              clr R2
 0092 3324              clr R3
 0094 3F82              std y+7,R3
 0096 2E82              std y+6,R2
 0098 80E0              ldi R24,<_diskinfor
 009A 90E0              ldi R25,>_diskinfor
 009C 9D83              std y+5,R25
 009E 8C83              std y+4,R24
 00A0 86E0              ldi R24,6
 00A2 90E0              ldi R25,0
 00A4 9B83              std y+3,R25
 00A6 8A83              std y+2,R24
 00A8 80EC              ldi R24,192
 00AA 9983              std y+1,R25
 00AC 8883              std y+0,R24
 00AE 2227              clr R18
 00B0 3327              clr R19
 00B2 0027              clr R16
 00B4 1127              clr R17
 00B6 0E940000          xcall _show_lcd
 00BA           L8:
 00BA                   .dbline 45
 00BA           L9:
 00BA                   .dbline 45
 00BA           ;                 while(1);
 00BA FFCF              xjmp L8
 00BC           X0:
 00BC                   .dbline 46
 00BC           ;            }                             
 00BC           L5:
 00BC                   .dbline 47
 00BC           ;   delay_1s();
 00BC 0E940000          xcall _delay_1s
 00C0                   .dbline 48
 00C0           ;   test_file_system(); //检查磁盘工作目录
 00C0 0E940000          xcall _test_file_system
 00C4                   .dbline 49
 00C4           ;   show_init("Start system ...",6,0);
 00C4 2224              clr R2
 00C6 3324              clr R3
 00C8 3982              std y+1,R3
 00CA 2882              std y+0,R2
 00CC 26E0              ldi R18,6
 00CE 30E0              ldi R19,0
 00D0 00E0              ldi R16,<L11
 00D2 10E0              ldi R17,>L11
 00D4 0E940000          xcall _show_init
 00D8                   .dbline 50
 00D8           ;   delay_1s();
 00D8 0E940000          xcall _delay_1s
 00DC                   .dbline 51
 00DC           ;   delay_1s();
 00DC 0E940000          xcall _delay_1s
 00E0                   .dbline 52
 00E0           ;   show_clear();
 00E0 0E940000          xcall _show_clear
 00E4                   .dbline 53
 00E4           ;   show_welcom();   
 00E4 0E940000          xcall _show_welcom
 00E8                   .dbline 54
 00E8           ;   adjust_cheng(0);
 00E8 0027              clr R16
 00EA 1127              clr R17
 00EC 0E940000          xcall _adjust_cheng
 00F0                   .dbline -2
 00F0           L1:
 00F0 2896              adiw R28,8
 00F2 0E940000          xcall pop_gset1
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r temp 20 c
 00F8                   .dbend
 00F8                   .dbfunc e set_system_time _set_system_time fV
 00F8           ;           temp -> R22
 00F8           ;             ii -> R20
                        .even
 00F8           _set_system_time::
 00F8 0E940000          xcall push_gset4
 00FC                   .dbline -1
 00FC                   .dbline 60
 00FC           ; }
 00FC           ; /*
 00FC           ; *设置时间
 00FC           ; */
 00FC           ; void set_system_time(void)
 00FC           ; {
 00FC                   .dbline 63
 00FC           ;   uchar ii;
 00FC           ;   uchar temp;
 00FC           ;   ii = 0;  //最大是2
 00FC 4427              clr R20
 00FE 54C1              xjmp L14
 0100           L13:
 0100                   .dbline 64
 0100           ;   while(1){
 0100                   .dbline 65
 0100           ;                  show_set_tiem(ii);
 0100 042F              mov R16,R20
 0102 1127              clr R17
 0104 0E940000          xcall _show_set_tiem
 0108                   .dbline 66
 0108           ;                  KEYBUF_NULL;
 0108 2224              clr R2
 010A 20920000          sts _keybuf,R2
 010E                   .dbline 66
 010E           L16:
 010E                   .dbline 67
 010E           L17:
 010E                   .dbline 67
 010E           ;                  while(keybuf == NULL);
 010E 20900000          lds R2,_keybuf
 0112 2220              tst R2
 0114 E1F3              breq L16
 0116                   .dbline 69
 0116           ;                  
 0116           ;                  if(keybuf == K_UP){
 0116 822D              mov R24,R2
 0118 8330              cpi R24,3
 011A 09F0              breq X5
 011C 8EC0              xjmp L19
 011E           X5:
 011E                   .dbline 69
 011E                   .dbline 70
 011E C42E              mov R12,R20
 0120 DD24              clr R13
 0122 CC20              tst R12
 0124 11F4              brne X1
 0126 DD20              tst R13
 0128 59F0              breq L24
 012A           X1:
 012A C601              movw R24,R12
 012C 8130              cpi R24,1
 012E E0E0              ldi R30,0
 0130 9E07              cpc R25,R30
 0132 81F1              breq L32
 0134 8230              cpi R24,2
 0136 E0E0              ldi R30,0
 0138 9E07              cpc R25,R30
 013A 09F4              brne X6
 013C 55C0              xjmp L40
 013E           X6:
 013E 7DC0              xjmp L21
 0140           X2:
 0140                   .dbline 70
 0140           ;                                                         switch(ii){
 0140           L24:
 0140                   .dbline 71
 0140           ;                                                           case 0:  temp = timebuf.hour;
 0140 60910200          lds R22,_timebuf+2
 0144                   .dbline 72
 0144           ;                                                                        temp >>= 4;
 0144 862F              mov R24,R22
 0146 8295              swap R24
 0148 8F70              andi R24,#0x0F
 014A 682F              mov R22,R24
 014C                   .dbline 73
 014C           ;                                                                                temp &= 0x0f;
 014C 6F70              andi R22,15
 014E                   .dbline 74
 014E           ;                                                                                temp *= 10;
 014E 8AE0              ldi R24,10
 0150 869F              mul R24,R22
 0152 602D              mov R22,R0
 0154                   .dbline 75

⌨️ 快捷键说明

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