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

📄 uart_to_twi_m8.lis

📁 AVR的M8,GCC平台,内有原理图及代码.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00EE           L30:
 00EE                   .dbline 116
 00EE           L25:
 00EE                   .dbline 105
 00EE 4395              inc R20
 00F0           L27:
 00F0                   .dbline 105
 00F0 4430              cpi R20,4
 00F2 C8F2              brlo L24
 00F4                   .dbline 117
 00F4           ;                   }
 00F4           ;                       ascii_to_hex();
 00F4 24D0              rcall _ascii_to_hex
 00F6                   .dbline 118
 00F6           ;                  Twi_Read_Flag = true;
 00F6 81E0              ldi R24,1
 00F8 80930600          sts _Twi_Read_Flag,R24
 00FC                   .dbline 119
 00FC           ;               }
 00FC           L21:
 00FC                   .dbline 120
 00FC           ;               Twi_Hex_Data_Flag = true;
 00FC 81E0              ldi R24,1
 00FE 80930400          sts _Twi_Hex_Data_Flag,R24
 0102                   .dbline 122
 0102           ;               //处理完,先把数据放在UART_TX_buff[]绶冲区,且接收绶冲区清零
 0102           ;               for(cnt=0;cnt<9;cnt++)
 0102 4427              clr R20
 0104 17C0              rjmp L36
 0106           L33:
 0106                   .dbline 123
 0106                   .dbline 124
 0106 80E0              ldi R24,<_UART_RX_buff
 0108 90E0              ldi R25,>_UART_RX_buff
 010A E42F              mov R30,R20
 010C FF27              clr R31
 010E E80F              add R30,R24
 0110 F91F              adc R31,R25
 0112 2080              ldd R2,z+0
 0114 80E0              ldi R24,<_UART_TX_buff
 0116 90E0              ldi R25,>_UART_TX_buff
 0118 E42F              mov R30,R20
 011A FF27              clr R31
 011C E80F              add R30,R24
 011E F91F              adc R31,R25
 0120 2082              std z+0,R2
 0122                   .dbline 125
 0122 80E0              ldi R24,<_UART_RX_buff
 0124 90E0              ldi R25,>_UART_RX_buff
 0126 E42F              mov R30,R20
 0128 FF27              clr R31
 012A E80F              add R30,R24
 012C F91F              adc R31,R25
 012E 2224              clr R2
 0130 2082              std z+0,R2
 0132                   .dbline 126
 0132           L34:
 0132                   .dbline 122
 0132 4395              inc R20
 0134           L36:
 0134                   .dbline 122
 0134 4930              cpi R20,9
 0136 38F3              brlo L33
 0138                   .dbline 127
 0138 A895              wdr
 013A                   .dbline 128
 013A           L7:
 013A                   .dbline -2
 013A           L6:
 013A 00D0              rcall pop_gset2
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbsym r dat 22 c
 013E                   .dbsym r cnt 20 c
 013E                   .dbend
 013E                   .dbfunc e ascii_to_hex _ascii_to_hex fV
 013E           ;              i -> R16
 013E           ;            cnt -> R18
                        .even
 013E           _ascii_to_hex::
 013E                   .dbline -1
 013E                   .dbline 132
 013E           ;               {
 013E           ;                  UART_TX_buff[cnt] = UART_RX_buff[cnt];
 013E           ;                  UART_RX_buff[cnt] = 0;
 013E           ;               }
 013E           ;               WDR();
 013E           ;       }
 013E           ; }
 013E           ; //继续解包,=>两个ASCII码组成一个数
 013E           ; void ascii_to_hex(void)
 013E           ; {
 013E                   .dbline 135
 013E           ;     unsigned char cnt,i;
 013E           ;    
 013E           ;       for(cnt=0,i=0;cnt<6;cnt++,cnt++,i++)
 013E 2227              clr R18
 0140 0027              clr R16
 0142 2BC0              rjmp L41
 0144           L38:
 0144                   .dbline 136
 0144                   .dbline 137
 0144 80E0              ldi R24,<_Twi_ASCI_Data
 0146 90E0              ldi R25,>_Twi_ASCI_Data
 0148 E22F              mov R30,R18
 014A FF27              clr R31
 014C E80F              add R30,R24
 014E F91F              adc R31,R25
 0150 2080              ldd R2,z+0
 0152 80E0              ldi R24,<_Twi_Hex_Data
 0154 90E0              ldi R25,>_Twi_Hex_Data
 0156 E02F              mov R30,R16
 0158 FF27              clr R31
 015A E80F              add R30,R24
 015C F91F              adc R31,R25
 015E 2082              std z+0,R2
 0160                   .dbline 138
 0160 202E              mov R2,R16
 0162 3324              clr R3
 0164 280E              add R2,R24
 0166 391E              adc R3,R25
 0168 F101              movw R30,R2
 016A 8081              ldd R24,z+0
 016C 8F70              andi R24,#0x0F
 016E 8295              swap R24
 0170 8083              std z+0,R24
 0172                   .dbline 139
 0172 80E0              ldi R24,<_Twi_Hex_Data
 0174 90E0              ldi R25,>_Twi_Hex_Data
 0176 202E              mov R2,R16
 0178 3324              clr R3
 017A 280E              add R2,R24
 017C 391E              adc R3,R25
 017E 80E0              ldi R24,<_Twi_ASCI_Data+1
 0180 90E0              ldi R25,>_Twi_ASCI_Data+1
 0182 E22F              mov R30,R18
 0184 FF27              clr R31
 0186 E80F              add R30,R24
 0188 F91F              adc R31,R25
 018A 4080              ldd R4,z+0
 018C F101              movw R30,R2
 018E 5080              ldd R5,z+0
 0190 540C              add R5,R4
 0192 5082              std z+0,R5
 0194                   .dbline 140
 0194           L39:
 0194                   .dbline 135
 0194 2395              inc R18
 0196 2395              inc R18
 0198 0395              inc R16
 019A           L41:
 019A                   .dbline 135
 019A 2630              cpi R18,6
 019C 08F4              brsh X2
 019E D2CF              rjmp L38
 01A0           X2:
 01A0                   .dbline -2
 01A0           L37:
 01A0                   .dbline 0 ; func end
 01A0 0895              ret
 01A2                   .dbsym r i 16 c
 01A2                   .dbsym r cnt 18 c
 01A2                   .dbend
 01A2                   .dbfunc e hex_to_ascii _hex_to_ascii fV
 01A2           ;       dat_buff -> R20
 01A2           ;            dat -> R16
                        .even
 01A2           _hex_to_ascii::
 01A2 00D0              rcall push_gset1
 01A4                   .dbline -1
 01A4                   .dbline 143
 01A4           ;       {
 01A4           ;         Twi_Hex_Data[i] = Twi_ASCI_Data[cnt];//先放ASCII的高位(四位)
 01A4           ;         Twi_Hex_Data[i] <<= 4;
 01A4           ;         Twi_Hex_Data[i] += Twi_ASCI_Data[cnt+1];
 01A4           ;       }
 01A4           ; }
 01A4           ; void hex_to_ascii(unsigned char dat)
 01A4           ; {
 01A4                   .dbline 146
 01A4           ;     unsigned char dat_buff;
 01A4           ;   
 01A4           ;     dat_buff = dat;
 01A4 402F              mov R20,R16
 01A6                   .dbline 147
 01A6           ;     dat = dat&0x0f;
 01A6 0F70              andi R16,15
 01A8                   .dbline 148
 01A8           ;     if((dat>=0)&&(dat<=9))
 01A8 0030              cpi R16,0
 01AA 28F0              brlo L44
 01AC 89E0              ldi R24,9
 01AE 8017              cp R24,R16
 01B0 10F0              brlo L44
 01B2                   .dbline 149
 01B2           ;     {
 01B2                   .dbline 150
 01B2           ;        dat += 0x30;
 01B2 005D              subi R16,208    ; addi 48
 01B4                   .dbline 151
 01B4           ;     }
 01B4 01C0              rjmp L45
 01B6           L44:
 01B6                   .dbline 153
 01B6           ;     else
 01B6           ;        dat += 0x37;
 01B6 095C              subi R16,201    ; addi 55
 01B8           L45:
 01B8                   .dbline 154
 01B8           ;       UART_TX_buff[7] = dat;
 01B8 00930700          sts _UART_TX_buff+7,R16
 01BC                   .dbline 156
 01BC           ;         
 01BC           ;     dat = dat_buff;
 01BC 042F              mov R16,R20
 01BE                   .dbline 157
 01BE           ;       dat >>= 4;
 01BE 802F              mov R24,R16
 01C0 8295              swap R24
 01C2 8F70              andi R24,#0x0F
 01C4 082F              mov R16,R24
 01C6                   .dbline 158
 01C6           ;       dat = dat&0x0f;
 01C6 0F70              andi R16,15
 01C8                   .dbline 159
 01C8           ;     if((dat>=0)&&(dat<=9))
 01C8 0030              cpi R16,0
 01CA 28F0              brlo L47
 01CC 89E0              ldi R24,9
 01CE 8017              cp R24,R16
 01D0 10F0              brlo L47
 01D2                   .dbline 160
 01D2           ;     {
 01D2                   .dbline 161
 01D2           ;       dat += 0x30;
 01D2 005D              subi R16,208    ; addi 48
 01D4                   .dbline 162
 01D4           ;     }
 01D4 01C0              rjmp L48
 01D6           L47:
 01D6                   .dbline 164
 01D6           ;     else
 01D6           ;       dat += 0x37;
 01D6 095C              subi R16,201    ; addi 55
 01D8           L48:
 01D8                   .dbline 165
 01D8           ;       UART_TX_buff[6] = dat;
 01D8 00930600          sts _UART_TX_buff+6,R16
 01DC                   .dbline -2
 01DC           L43:
 01DC 00D0              rcall pop_gset1
 01DE                   .dbline 0 ; func end
 01DE 0895              ret
 01E0                   .dbsym r dat_buff 20 c
 01E0                   .dbsym r dat 16 c
 01E0                   .dbend
 01E0                   .dbfunc e general_hex_to_ascii _general_hex_to_ascii fc
 01E0           ;            dat -> R16
                        .even
 01E0           _general_hex_to_ascii::
 01E0                   .dbline -1
 01E0                   .dbline 172
 01E0           ; }
 01E0           ; //<<<<<<<<<<<<<<<<<<<<<
 01E0           ; /***********************************************************************
 01E0           ; 通用的hex转成ascii
 01E0           ; ************************************************************************/
 01E0           ; unsigned char general_hex_to_ascii(unsigned char dat)
 01E0           ; {
 01E0                   .dbline 173
 01E0           ;     dat = dat & 0x0f;
 01E0 0F70              andi R16,15
 01E2                   .dbline 174
 01E2           ;     if((dat >= 0)&&(dat <= 9))
 01E2 0030              cpi R16,0
 01E4 28F0              brlo L51
 01E6 89E0              ldi R24,9
 01E8 8017              cp R24,R16
 01EA 10F0              brlo L51
 01EC                   .dbline 175
 01EC           ;     {
 01EC                   .dbline 176
 01EC           ;         dat = dat + 0x30;
 01EC 005D              subi R16,208    ; addi 48
 01EE                   .dbline 177
 01EE           ;       }
 01EE 01C0              rjmp L52
 01F0           L51:
 01F0                   .dbline 179
 01F0           ;       else
 01F0           ;       {
 01F0                   .dbline 180
 01F0           ;         dat += 0x37;
 01F0 095C              subi R16,201    ; addi 55
 01F2                   .dbline 181
 01F2           ;       }
 01F2           L52:
 01F2                   .dbline 182
 01F2           ;       return dat;
 01F2                   .dbline -2
 01F2           L50:
 01F2                   .dbline 0 ; func end
 01F2 0895              ret
 01F4                   .dbsym r dat 16 c
 01F4                   .dbend
 01F4                   .dbfunc e show_data _show_data fV
 01F4           ;       dat_buff -> R22
 01F4           ;            dat -> R20
                        .even

⌨️ 快捷键说明

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