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

📄 main.lis

📁 LED条屏显示程序,但是对初学者
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _MP3_current_number::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
 0001                   .dbsym e MP3_current_number _MP3_current_number c
 0001           _set_volume::
 0001                   .blkb 1
                        .area idata
 0001 04                .byte 4
                        .area data(ram, con, rel)
 0002                   .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
 0002                   .dbsym e set_volume _set_volume c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
 0000                   .dbfunc e Delay_us _Delay_us fV
 0000           ;           time -> R16,R17
                        .even
 0000           _Delay_us::
 0000                   .dbline -1
 0000                   .dbline 24
 0000           ; //ICC-AVR application builder : 2005-11-12 17:11:59
 0000           ; // Target : M16
 0000           ; // Crystal: 8.0000Mhz
 0000           ; // copyright:鲁军波(endylu)
 0000           ; // www.shop34612283.taobao.com
 0000           ; // www.adembed.com
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "main.h"
 0000           ; 
 0000           ; uint8 timer1_over;
 0000           ; uint8 MP3_all_number,MP3_current_number=0;
 0000           ; uint8 play_state;
 0000           ; uint8 key_value;
 0000           ; uint8 set_volume=4;     //用的8级音量(64.69...99)
 0000           ; uint8 buffer[512];      //缓存扇区的512个字节   
 0000           ; 
 0000           ; FAT_INFO fat_info;      //FAT的关键数据
 0000           ; MP3_INFO mp3_info;      //文件的关键数据
 0000           ; 
 0000           ;   
 0000           ; //=======================================================================  
 0000           ; void Delay_us(uint16 time) //set time 120 to 100us,set 1 to 3.5us;
 0000           ;       {while (time--)
 0000 01C0              xjmp L3
 0002           L2:
 0002                   .dbline 25
 0002 A895              wdr
 0004           L3:
 0004                   .dbline 24
 0004 1801              movw R2,R16
 0006 0150              subi R16,1
 0008 1040              sbci R17,0
 000A 2220              tst R2
 000C D1F7              brne L2
 000E 3320              tst R3
 0010 C1F7              brne L2
 0012           X0:
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r time 16 i
 0014                   .dbend
 0014                   .dbfunc e Delay_ms _Delay_ms fV
 0014           ;           time -> R20,R21
                        .even
 0014           _Delay_ms::
 0014 0E940000          xcall push_gset1
 0018 A801              movw R20,R16
 001A                   .dbline -1
 001A                   .dbline 29
 001A           ;        _WDR();
 001A           ;       
 001A           ;       }
 001A           ; void Delay_ms(uint16 time) 
 001A           ;       {while (time--)
 001A 03C0              xjmp L7
 001C           L6:
 001C                   .dbline 30
 001C 00EB              ldi R16,1200
 001E 14E0              ldi R17,4
 0020 EFDF              xcall _Delay_us
 0022           L7:
 0022                   .dbline 29
 0022 1A01              movw R2,R20
 0024 4150              subi R20,1
 0026 5040              sbci R21,0
 0028 2220              tst R2
 002A C1F7              brne L6
 002C 3320              tst R3
 002E B1F7              brne L6
 0030           X1:
 0030                   .dbline -2
 0030           L5:
 0030 0E940000          xcall pop_gset1
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r time 20 i
 0036                   .dbend
 0036                   .dbfunc e putstring _putstring fV
 0036           ;         string -> R20,R21
                        .even
 0036           _putstring::
 0036 0E940000          xcall push_gset1
 003A A801              movw R20,R16
 003C                   .dbline -1
 003C                   .dbline 34
 003C           ;        Delay_us(1200);
 003C           ;       }
 003C           ; 
 003C           ; void putstring(uint8 *string) 
 003C           ; {
 003C 07C0              xjmp L11
 003E           L10:
 003E                   .dbline 36
 003E                   .dbline 37
 003E FA01              movw R30,R20
 0040 0081              ldd R16,z+0
 0042 1127              clr R17
 0044 0E940000          xcall _putchar
 0048                   .dbline 38
 0048 4F5F              subi R20,255  ; offset = 1
 004A 5F4F              sbci R21,255
 004C                   .dbline 39
 004C           L11:
 004C                   .dbline 35
 004C           ;        while(*string)
 004C FA01              movw R30,R20
 004E 2080              ldd R2,z+0
 0050 2220              tst R2
 0052 A9F7              brne L10
 0054                   .dbline -2
 0054           L9:
 0054 0E940000          xcall pop_gset1
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r string 20 pc
 005A                   .dbend
 005A                   .dbfunc e timer1_init _timer1_init fV
                        .even
 005A           _timer1_init::
 005A                   .dbline -1
 005A                   .dbline 43
 005A           ;          {
 005A           ;           putchar(*string);
 005A           ;               string++;
 005A           ;          }
 005A           ; }
 005A           ; //***************************************************************
 005A           ; void timer1_init(void)
 005A           ; {//timer1 INIT 0.1S
 005A                   .dbline 44
 005A           ;  TCCR1B=0X0D;
 005A 8DE0              ldi R24,13
 005C 8EBD              out 0x2e,R24
 005E                   .dbline 45
 005E           ;  TCNT0=0X00;
 005E 2224              clr R2
 0060 22BE              out 0x32,R2
 0062                   .dbline 46
 0062           ;  OCR1AH=0X02;         //定时0.1s
 0062 82E0              ldi R24,2
 0064 8BBD              out 0x2b,R24
 0066                   .dbline 47
 0066           ;  OCR1AL=0X00;
 0066 2ABC              out 0x2a,R2
 0068                   .dbline 48
 0068           ;  TIMSK|=0X10;
 0068 89B7              in R24,0x39
 006A 8061              ori R24,16
 006C 89BF              out 0x39,R24
 006E                   .dbline -2
 006E           L13:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbend
 0070                   .dbfunc e ASCII _ASCII fV
 0070           ;              n -> R22
 0070           ;              b -> R20,R21
                        .even
 0070           _ASCII::
 0070 0E940000          xcall push_gset2
 0074 622F              mov R22,R18
 0076 A801              movw R20,R16
 0078                   .dbline -1
 0078                   .dbline 52
 0078           ; }
 0078           ; //=======================================================================
 0078           ; void ASCII(uint8 *b,uint8 n)
 0078           ; {*b=n/10+48;
 0078                   .dbline 52
 0078 1AE0              ldi R17,10
 007A 062F              mov R16,R22
 007C 0E940000          xcall div8u
 0080 802F              mov R24,R16
 0082 805D              subi R24,208    ; addi 48
 0084 FA01              movw R30,R20
 0086 8083              std z+0,R24
 0088                   .dbline 53
 0088           ;  *(b+1)=n%10+48;
 0088 1AE0              ldi R17,10
 008A 062F              mov R16,R22
 008C 0E940000          xcall mod8u
 0090 802F              mov R24,R16
 0092 805D              subi R24,208    ; addi 48
 0094 FA01              movw R30,R20
 0096 8183              std z+1,R24
 0098                   .dbline -2
 0098           L14:
 0098 0E940000          xcall pop_gset2
 009C                   .dbline 0 ; func end
 009C 0895              ret
 009E                   .dbsym r n 22 c
 009E                   .dbsym r b 20 pc
 009E                   .dbend
                        .area vector(rom, abs)
                        .org 76
 004C 0C944F00          jmp _timer0comp
                        .area text(rom, con, rel)
 009E                   .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
 009E                   .dbfunc e timer0comp _timer0comp fV
                        .even
 009E           _timer0comp::
 009E 0E940000          xcall push_lset
 00A2                   .dbline -1
 00A2                   .dbline 59
 00A2           ; }
 00A2           ; 
 00A2           ; //=======================================================================
 00A2           ; #pragma interrupt_handler timer0comp:20
 00A2           ; void timer0comp (void)
 00A2           ; { 
 00A2                   .dbline 60
 00A2           ;  read_keyboard();
 00A2 0E940000          xcall _read_keyboard
 00A6                   .dbline -2
 00A6           L15:
 00A6 0E940000          xcall pop_lset
 00AA                   .dbline 0 ; func end
 00AA 1895              reti
 00AC                   .dbend
                        .area vector(rom, abs)
                        .org 24
 0018 0C945600          jmp _timer1compA
                        .area text(rom, con, rel)
 00AC                   .dbfile E:\MYWORK~1\开发设计\AVR-MP3\mp3开发板光盘\驱动程序\MP3BOA~1.8\main.c
 00AC                   .dbfunc e timer1compA _timer1compA fV
                        .even
 00AC           _timer1compA::
 00AC 8A93              st -y,R24
 00AE 8FB7              in R24,0x3f
 00B0 8A93              st -y,R24
 00B2                   .dbline -1
 00B2                   .dbline 65
 00B2           ; }
 00B2           ; 
 00B2           ; #pragma interrupt_handler timer1compA:7
 00B2           ; void timer1compA (void)
 00B2           ; {
 00B2                   .dbline 66
 00B2           ;  timer1_over=1;
 00B2 81E0              ldi R24,1
 00B4 80934302          sts _timer1_over,R24
 00B8                   .dbline -2
 00B8           L16:
 00B8 8991              ld R24,y+
 00BA 8FBF              out 0x3f,R24
 00BC 8991              ld R24,y+
 00BE                   .dbline 0 ; func end
 00BE 1895              reti
 00C0                   .dbend
 00C0                   .dbfunc e main _main fV
                        .even
 00C0           _main::
 00C0                   .dbline -1
 00C0                   .dbline 71
 00C0           ; }
 00C0           ; 
 00C0           ; //=======================================================================
 00C0           ; void main(void)
 00C0           ; { 
 00C0                   .dbline 73
 00C0           ;   //WDTCR|=(1<<WDP0)|(1<<WDP1)|(1<<WDP2)|(1<<WDE);
 00C0           ;   uart_init();
 00C0 0FD0              xcall _uart_init
 00C2                   .dbline 74
 00C2           ;   putstring("RUN!");
 00C2 00E0              ldi R16,<L18
 00C4 10E0              ldi R17,>L18
 00C6 B7DF              xcall _putstring
 00C8                   .dbline 75
 00C8           ;   main_init();

⌨️ 快捷键说明

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