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

📄 com.lis

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LIS
字号:
                        .module Com.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\software\MP3程序\Usart\Com.c
 0000                   .dbfunc e Usart_init _Usart_init fV
                        .even
 0000           _Usart_init::
 0000                   .dbline -1
 0000                   .dbline 8
 0000           ; #include <iom64v.h>
 0000           ; #include <macros.h>
 0000           ; /*-----------------------------------------------------------------------
 0000           ; 延时函数
 0000           ; 系统时钟:8M
 0000           ; -----------------------------------------------------------------------*/
 0000           ; void Usart_init(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;     //set com0 for debug   
 0000           ;     UBRR0H = 0X00;
 0000 2224              clr R2
 0002 20929000          sts 144,R2
 0006                   .dbline 11
 0006           ;     UBRR0L = 0X33;
 0006 83E3              ldi R24,51
 0008 89B9              out 0x9,R24
 000A                   .dbline 12
 000A           ;       UCSR0B = (1<<3)|(1<<4); //调试信息不允许中断
 000A 88E1              ldi R24,24
 000C 8AB9              out 0xa,R24
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e USART_Transmit _USART_Transmit fV
 0010           ;           data -> R16
                        .even
 0010           _USART_Transmit::
 0010                   .dbline -1
 0010                   .dbline 16
 0010           ; }     
 0010           ; 
 0010           ; void USART_Transmit( unsigned char data )
 0010           ; {
 0010           L3:
 0010                   .dbline 18
 0010           L4:
 0010                   .dbline 18
 0010           ; /* 等待发送缓冲器为空*/
 0010           ; while ( !( UCSR0A & (1<<5)) );
 0010 5D9B              sbis 0xb,5
 0012 FECF              rjmp L3
 0014                   .dbline 20
 0014           ; /* 将数据放入缓冲器,发送数据*/
 0014           ; UDR0 = data;
 0014 0CB9              out 0xc,R16
 0016                   .dbline -2
 0016           L2:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbsym r data 16 c
 0018                   .dbend
 0018                   .dbfunc e USART_Receive _USART_Receive fc
                        .even
 0018           _USART_Receive::
 0018                   .dbline -1
 0018                   .dbline 23
 0018           ; }                            
 0018           ; unsigned char USART_Receive( void )
 0018           ; {
 0018           L7:
 0018                   .dbline 25
 0018           L8:
 0018                   .dbline 25
 0018           ; /* 等待接收数据*/
 0018           ; while ( !(UCSR0A & (1<<7)) );
 0018 5F9B              sbis 0xb,7
 001A FECF              rjmp L7
 001C                   .dbline 27
 001C           ; /* 从缓冲器中获取并返回数据*/
 001C           ; return UDR0;
 001C 0CB1              in R16,0xc
 001E                   .dbline -2
 001E           L6:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e Print_str _Print_str fV
 0020           ;             pt -> R20,R21
                        .even
 0020           _Print_str::
 0020 0E940000          xcall push_gset1
 0024 A801              movw R20,R16
 0026                   .dbline -1
 0026                   .dbline 30
 0026           ; }        
 0026           ; void Print_str(unsigned char *pt)  //子
 0026           ; {
 0026 04C0              xjmp L12
 0028           L11:
 0028                   .dbline 31
 0028 FA01              movw R30,R20
 002A 0191              ld R16,Z+
 002C AF01              movw R20,R30
 002E F0DF              xcall _USART_Transmit
 0030           L12:
 0030                   .dbline 31
 0030           ;  while(*pt != '\0') USART_Transmit(*pt++);
 0030 FA01              movw R30,R20
 0032 2080              ldd R2,z+0
 0034 2220              tst R2
 0036 C1F7              brne L11
 0038                   .dbline -2
 0038           L10:
 0038 0E940000          xcall pop_gset1
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r pt 20 pc
 003E                   .dbend
 003E                   .dbfunc e Print_val _Print_val fV
 003E           ;           temp -> R20
 003E           ;           data -> R22
                        .even
 003E           _Print_val::
 003E 0E940000          xcall push_gset2
 0042 602F              mov R22,R16
 0044                   .dbline -1
 0044                   .dbline 34
 0044           ; }                                                                                     
 0044           ; void Print_val(unsigned char data)
 0044           ; {
 0044                   .dbline 36
 0044           ;  unsigned char temp;
 0044           ;  temp = data;
 0044 462F              mov R20,R22
 0046                   .dbline 37
 0046           ;  temp >>= 4;
 0046 842F              mov R24,R20
 0048 8295              swap R24
 004A 8F70              andi R24,#0x0F
 004C 482F              mov R20,R24
 004E                   .dbline 38
 004E           ;  temp &= 0x0f;
 004E 4F70              andi R20,15
 0050                   .dbline 39
 0050           ;  if(temp > 0x09) USART_Transmit(temp+0x37);
 0050 89E0              ldi R24,9
 0052 8417              cp R24,R20
 0054 20F4              brsh L15
 0056                   .dbline 39
 0056 042F              mov R16,R20
 0058 095C              subi R16,201    ; addi 55
 005A DADF              xcall _USART_Transmit
 005C 03C0              xjmp L16
 005E           L15:
 005E                   .dbline 40
 005E           ;   else USART_Transmit(temp+'0');
 005E 042F              mov R16,R20
 0060 005D              subi R16,208    ; addi 48
 0062 D6DF              xcall _USART_Transmit
 0064           L16:
 0064                   .dbline 41
 0064           ;  temp = data & 0x0f;
 0064 462F              mov R20,R22
 0066 4F70              andi R20,15
 0068                   .dbline 42
 0068           ;  if(temp > 0x09) USART_Transmit(temp+0x37);
 0068 89E0              ldi R24,9
 006A 8417              cp R24,R20
 006C 20F4              brsh L17
 006E                   .dbline 42
 006E 042F              mov R16,R20
 0070 095C              subi R16,201    ; addi 55
 0072 CEDF              xcall _USART_Transmit
 0074 03C0              xjmp L18
 0076           L17:
 0076                   .dbline 43
 0076 042F              mov R16,R20
 0078 005D              subi R16,208    ; addi 48
 007A CADF              xcall _USART_Transmit
 007C           L18:
 007C                   .dbline -2
 007C           L14:
 007C 0E940000          xcall pop_gset2
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r temp 20 c
 0082                   .dbsym r data 22 c
 0082                   .dbend
 0082                   .dbfunc e Print_int _Print_int fV
 0082           ;           temp -> R20
 0082           ;           data -> R22,R23
                        .even
 0082           _Print_int::
 0082 0E940000          xcall push_gset2
 0086 B801              movw R22,R16
 0088                   .dbline -1
 0088                   .dbline 46
 0088           ;   else USART_Transmit(temp+'0');
 0088           ; }
 0088           ; void Print_int(unsigned int data)
 0088           ; {
 0088                   .dbline 48
 0088           ;  unsigned char temp;
 0088           ;  temp = data >> 8;
 0088 AB01              movw R20,R22
 008A 452F              mov R20,R21
 008C 5527              clr R21
 008E                   .dbline 49
 008E           ;  Print_val(temp);
 008E 042F              mov R16,R20
 0090 D6DF              xcall _Print_val
 0092                   .dbline 50
 0092           ;  temp = data;
 0092 462F              mov R20,R22
 0094                   .dbline 51
 0094           ;  Print_val(temp); 
 0094 042F              mov R16,R20
 0096 D3DF              xcall _Print_val
 0098                   .dbline -2
 0098           L19:
 0098 0E940000          xcall pop_gset2
 009C                   .dbline 0 ; func end
 009C 0895              ret
 009E                   .dbsym r temp 20 c
 009E                   .dbsym r data 22 i
 009E                   .dbend
 009E                   .dbfunc e Print_size _Print_size fV
 009E           ;           data -> R22,R23
 009E           ;           temp -> R20
 009E           ;             ii -> R20,R21
                        .even
 009E           _Print_size::
 009E 0E940000          xcall push_gset2
 00A2 A801              movw R20,R16
 00A4                   .dbline -1
 00A4                   .dbline 55
 00A4           ; }
 00A4           ; 
 00A4           ; void Print_size(unsigned int ii)
 00A4           ; {
 00A4                   .dbline 58
 00A4           ;  unsigned char temp;
 00A4           ;  unsigned int data;
 00A4           ;  data = ii;
 00A4 BA01              movw R22,R20
 00A6                   .dbline 59
 00A6           ;  temp = data/10000; 
 00A6 20E1              ldi R18,10000
 00A8 37E2              ldi R19,39
 00AA 8B01              movw R16,R22
 00AC 0E940000          xcall div16u
 00B0                   .dbline 60
 00B0           ;  USART_Transmit(temp+'0');
 00B0 005D              subi R16,208    ; addi 48
 00B2 AEDF              xcall _USART_Transmit
 00B4                   .dbline 62
 00B4           ;  
 00B4           ;  data %= 10000;
 00B4 20E1              ldi R18,10000
 00B6 37E2              ldi R19,39
 00B8 8B01              movw R16,R22
 00BA 0E940000          xcall mod16u
 00BE B801              movw R22,R16
 00C0                   .dbline 63
 00C0           ;  temp = data/1000;
 00C0 28EE              ldi R18,1000
 00C2 33E0              ldi R19,3
 00C4 0E940000          xcall div16u
 00C8                   .dbline 64
 00C8           ;  USART_Transmit(temp+'0');
 00C8 005D              subi R16,208    ; addi 48
 00CA A2DF              xcall _USART_Transmit
 00CC                   .dbline 66
 00CC           ;  
 00CC           ;  data %= 1000;
 00CC 28EE              ldi R18,1000
 00CE 33E0              ldi R19,3
 00D0 8B01              movw R16,R22
 00D2 0E940000          xcall mod16u
 00D6 B801              movw R22,R16
 00D8                   .dbline 67
 00D8           ;  temp = data/100;
 00D8 24E6              ldi R18,100
 00DA 30E0              ldi R19,0
 00DC 0E940000          xcall div16u
 00E0                   .dbline 68
 00E0           ;  USART_Transmit(temp+'0');
 00E0 005D              subi R16,208    ; addi 48
 00E2 96DF              xcall _USART_Transmit
 00E4                   .dbline 70
 00E4           ;  
 00E4           ;  data %= 100;
 00E4 24E6              ldi R18,100
 00E6 30E0              ldi R19,0
 00E8 8B01              movw R16,R22
 00EA 0E940000          xcall mod16u
 00EE B801              movw R22,R16
 00F0                   .dbline 71
 00F0           ;  temp = data/10;
 00F0 2AE0              ldi R18,10
 00F2 30E0              ldi R19,0
 00F4 0E940000          xcall div16u
 00F8                   .dbline 72
 00F8           ;  USART_Transmit(temp+'0');
 00F8 005D              subi R16,208    ; addi 48
 00FA 8ADF              xcall _USART_Transmit
 00FC                   .dbline 74
 00FC           ;  
 00FC           ;  temp = data%10;
 00FC 2AE0              ldi R18,10
 00FE 30E0              ldi R19,0
 0100 8B01              movw R16,R22
 0102 0E940000          xcall mod16u
 0106 402F              mov R20,R16
 0108                   .dbline 75
 0108           ;  USART_Transmit(temp+'0');
 0108 005D              subi R16,208    ; addi 48
 010A 82DF              xcall _USART_Transmit
 010C                   .dbline -2
 010C           L20:
 010C 0E940000          xcall pop_gset2
 0110                   .dbline 0 ; func end
 0110 0895              ret
 0112                   .dbsym r data 22 i
 0112                   .dbsym r temp 20 c
 0112                   .dbsym r ii 20 i
 0112                   .dbend

⌨️ 快捷键说明

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