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

📄 converse.lis

📁 AVR单片机开发中
💻 LIS
字号:
                        .module converse.c
                        .area text(rom, con, rel)
 0000                   .dbfile H:\m128_test\converse.c
 0000                   .dbfunc e hextochar _hextochar fi
 0000           ;           temp -> R10
 0000           ;         target -> R20,R21
 0000           ;          first -> R22,R23
 0000           ;            hex -> R16
                        .even
 0000           _hextochar::
 0000 0E940000          xcall push_gset3
 0004                   .dbline -1
 0004                   .dbline 2
 0004           ; 
 0004           ; unsigned int  hextochar(unsigned char hex){
 0004                   .dbline 3
 0004           ;    unsigned int first = 0 ;
 0004 6627              clr R22
 0006 7727              clr R23
 0008                   .dbline 4
 0008           ;    unsigned int  target = 0;
 0008 4427              clr R20
 000A 5527              clr R21
 000C                   .dbline 5
 000C           ;    unsigned char temp = hex & 0x0f;
 000C 802F              mov R24,R16
 000E 8F70              andi R24,15
 0010 A82E              mov R10,R24
 0012                   .dbline 6
 0012           ;    if( temp >= 0x0A ) 
 0012 8A30              cpi R24,10
 0014 28F0              brlo L2
 0016                   .dbline 7
 0016           ;           first = temp + 0x37;
 0016 682F              mov R22,R24
 0018 7727              clr R23
 001A 695C              subi R22,201  ; offset = 55
 001C 7F4F              sbci R23,255
 001E 04C0              xjmp L3
 0020           L2:
 0020                   .dbline 9
 0020           ;    else 
 0020           ;        first = temp + 0x30;          
 0020 6A2D              mov R22,R10
 0022 7727              clr R23
 0024 605D              subi R22,208  ; offset = 48
 0026 7F4F              sbci R23,255
 0028           L3:
 0028                   .dbline 10
 0028           ;    target = first;
 0028 AB01              movw R20,R22
 002A                   .dbline 11
 002A           ;    hex = hex >> 4;
 002A 802F              mov R24,R16
 002C 8295              swap R24
 002E 8F70              andi R24,#0x0F
 0030 082F              mov R16,R24
 0032                   .dbline 12
 0032           ;    if( hex >= 0x0A ) 
 0032 8A30              cpi R24,10
 0034 28F0              brlo L4
 0036                   .dbline 13
 0036           ;           first = hex + 0x37;
 0036 682F              mov R22,R24
 0038 7727              clr R23
 003A 695C              subi R22,201  ; offset = 55
 003C 7F4F              sbci R23,255
 003E 04C0              xjmp L5
 0040           L4:
 0040                   .dbline 15
 0040           ;    else 
 0040           ;        first = hex + 0x30;  
 0040 602F              mov R22,R16
 0042 7727              clr R23
 0044 605D              subi R22,208  ; offset = 48
 0046 7F4F              sbci R23,255
 0048           L5:
 0048                   .dbline 16
 0048           ;    first = first << 8 ;
 0048 762F              mov R23,R22
 004A 6627              clr R22
 004C                   .dbline 17
 004C           ;    target |= first;  
 004C 462B              or R20,R22
 004E 572B              or R21,R23
 0050                   .dbline 18
 0050           ;    return  target;
 0050 042F              mov R16,R20
 0052 152F              mov R17,R21
 0054                   .dbline -2
 0054           L1:
 0054 0E940000          xcall pop_gset3
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r temp 10 c
 005A                   .dbsym r target 20 i
 005A                   .dbsym r first 22 i
 005A                   .dbsym r hex 16 c
 005A                   .dbend
 005A                   .dbfunc e bcd_char _bcd_char fc
 005A           ;             kk -> R14,R15
 005A           ;           temp -> R12
 005A           ;              i -> R20
 005A           ;              s -> R10,R11
 005A           ;            hex -> R22,R23
                        .even
 005A           _bcd_char::
 005A 0E940000          xcall push_gset5
 005E 5901              movw R10,R18
 0060 B801              movw R22,R16
 0062                   .dbline -1
 0062                   .dbline 23
 0062           ; }
 0062           ; 
 0062           ; 
 0062           ; 
 0062           ; unsigned char  bcd_char( int hex ,char *s ){
 0062                   .dbline 24
 0062           ;    unsigned char i  = 0 ,temp = 0;
 0062 4427              clr R20
 0064                   .dbline 24
 0064 CC24              clr R12
 0066                   .dbline 25
 0066           ;    int  kk = 0 ;
 0066 EE24              clr R14
 0068 FF24              clr R15
 006A                   .dbline 27
 006A           ;    
 006A           ;    if( hex < 0){
 006A 6030              cpi R22,0
 006C E0E0              ldi R30,0
 006E 7E07              cpc R23,R30
 0070 5CF4              brge L7
 0072                   .dbline 27
 0072                   .dbline 28
 0072           ;      s[i] = '-';
 0072 E42F              mov R30,R20
 0074 FF27              clr R31
 0076 EA0D              add R30,R10
 0078 FB1D              adc R31,R11
 007A 8DE2              ldi R24,45
 007C 8083              std z+0,R24
 007E                   .dbline 29
 007E           ;      i++;      
 007E 4395              inc R20
 0080                   .dbline 30
 0080           ;        hex = -hex;
 0080 6095              com R22
 0082 7095              com R23
 0084 6F5F              subi R22,0xFF
 0086 7F4F              sbci R23,0xFF
 0088                   .dbline 31
 0088           ;    }  
 0088           L7:
 0088                   .dbline 33
 0088           ;     
 0088           ;    kk = hex;
 0088 7B01              movw R14,R22
 008A                   .dbline 34
 008A           ;    temp = hex /10000;
 008A 20E1              ldi R18,10000
 008C 37E2              ldi R19,39
 008E 8B01              movw R16,R22
 0090 0E940000          xcall div16s
 0094 C02E              mov R12,R16
 0096                   .dbline 35
 0096           ;    if( kk >= 10000 ){
 0096 C701              movw R24,R14
 0098 8031              cpi R24,16
 009A E7E2              ldi R30,39
 009C 9E07              cpc R25,R30
 009E 44F0              brlt L9
 00A0                   .dbline 35
 00A0                   .dbline 36
 00A0           ;          s[i] = temp + 0x30;
 00A0 E42F              mov R30,R20
 00A2 FF27              clr R31
 00A4 EA0D              add R30,R10
 00A6 FB1D              adc R31,R11
 00A8 8C2D              mov R24,R12
 00AA 805D              subi R24,208    ; addi 48
 00AC 8083              std z+0,R24
 00AE                   .dbline 37
 00AE           ;          i++;
 00AE 4395              inc R20
 00B0                   .dbline 38
 00B0           ;    }
 00B0           L9:
 00B0                   .dbline 40
 00B0           ;       
 00B0           ;    hex = hex % 10000;
 00B0 20E1              ldi R18,10000
 00B2 37E2              ldi R19,39
 00B4 8B01              movw R16,R22
 00B6 0E940000          xcall mod16s
 00BA B801              movw R22,R16
 00BC                   .dbline 41
 00BC           ;    temp = hex /1000;
 00BC 28EE              ldi R18,1000
 00BE 33E0              ldi R19,3
 00C0 0E940000          xcall div16s
 00C4 C02E              mov R12,R16
 00C6                   .dbline 42
 00C6           ;    if( kk >= 1000 ){
 00C6 C701              movw R24,R14
 00C8 883E              cpi R24,232
 00CA E3E0              ldi R30,3
 00CC 9E07              cpc R25,R30
 00CE 44F0              brlt L11
 00D0                   .dbline 42
 00D0                   .dbline 43
 00D0           ;          s[i] = temp + 0x30;
 00D0 E42F              mov R30,R20
 00D2 FF27              clr R31
 00D4 EA0D              add R30,R10
 00D6 FB1D              adc R31,R11
 00D8 8C2D              mov R24,R12
 00DA 805D              subi R24,208    ; addi 48
 00DC 8083              std z+0,R24
 00DE                   .dbline 44
 00DE           ;          i++;
 00DE 4395              inc R20
 00E0                   .dbline 45
 00E0           ;    }  
 00E0           L11:
 00E0                   .dbline 47
 00E0           ;    
 00E0           ;    hex = hex % 1000; 
 00E0 28EE              ldi R18,1000
 00E2 33E0              ldi R19,3
 00E4 8B01              movw R16,R22
 00E6 0E940000          xcall mod16s
 00EA B801              movw R22,R16
 00EC                   .dbline 48
 00EC           ;    temp = hex /100;
 00EC 24E6              ldi R18,100
 00EE 30E0              ldi R19,0
 00F0 0E940000          xcall div16s
 00F4 C02E              mov R12,R16
 00F6                   .dbline 49
 00F6           ;    if( kk >= 100 ){
 00F6 C701              movw R24,R14
 00F8 8436              cpi R24,100
 00FA E0E0              ldi R30,0
 00FC 9E07              cpc R25,R30
 00FE 44F0              brlt L13
 0100                   .dbline 49
 0100                   .dbline 50
 0100           ;          s[i] = temp + 0x30;
 0100 E42F              mov R30,R20
 0102 FF27              clr R31
 0104 EA0D              add R30,R10
 0106 FB1D              adc R31,R11
 0108 8C2D              mov R24,R12
 010A 805D              subi R24,208    ; addi 48
 010C 8083              std z+0,R24
 010E                   .dbline 51
 010E           ;          i++;
 010E 4395              inc R20
 0110                   .dbline 52
 0110           ;    }  
 0110           L13:
 0110                   .dbline 54
 0110           ;    
 0110           ;    hex = hex % 100;
 0110 24E6              ldi R18,100
 0112 30E0              ldi R19,0
 0114 8B01              movw R16,R22
 0116 0E940000          xcall mod16s
 011A B801              movw R22,R16
 011C                   .dbline 55
 011C           ;    temp = hex /10;
 011C 2AE0              ldi R18,10
 011E 30E0              ldi R19,0
 0120 0E940000          xcall div16s
 0124 C02E              mov R12,R16
 0126                   .dbline 56
 0126           ;    if( kk >= 10 ){
 0126 C701              movw R24,R14
 0128 8A30              cpi R24,10
 012A E0E0              ldi R30,0
 012C 9E07              cpc R25,R30
 012E 44F0              brlt L15
 0130                   .dbline 56
 0130                   .dbline 57
 0130           ;          s[i] = temp + 0x30;
 0130 E42F              mov R30,R20
 0132 FF27              clr R31
 0134 EA0D              add R30,R10
 0136 FB1D              adc R31,R11
 0138 8C2D              mov R24,R12
 013A 805D              subi R24,208    ; addi 48
 013C 8083              std z+0,R24
 013E                   .dbline 58
 013E           ;          i++;
 013E 4395              inc R20
 0140                   .dbline 59
 0140           ;    }
 0140           L15:
 0140                   .dbline 61
 0140           ;    
 0140           ;    hex = hex % 10;
 0140 2AE0              ldi R18,10
 0142 30E0              ldi R19,0
 0144 8B01              movw R16,R22
 0146 0E940000          xcall mod16s
 014A B801              movw R22,R16
 014C                   .dbline 62
 014C           ;    s[i] = hex+ 0x30;
 014C E42F              mov R30,R20
 014E FF27              clr R31
 0150 EA0D              add R30,R10
 0152 FB1D              adc R31,R11
 0154 CB01              movw R24,R22
 0156 C096              adiw R24,48
 0158 8083              std z+0,R24
 015A                   .dbline 63
 015A           ;    i++;
 015A 4395              inc R20
 015C                   .dbline 64
 015C           ;    return i;
 015C 042F              mov R16,R20
 015E                   .dbline -2
 015E           L6:
 015E 0E940000          xcall pop_gset5
 0162                   .dbline 0 ; func end
 0162 0895              ret
 0164                   .dbsym r kk 14 I
 0164                   .dbsym r temp 12 c
 0164                   .dbsym r i 20 c
 0164                   .dbsym r s 10 pc
 0164                   .dbsym r hex 22 I
 0164                   .dbend

⌨️ 快捷键说明

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