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

📄 usart1.lis

📁 Atmega64单片机程序(完整工程)
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01AC           ;         putchar1(temp1+'0');
 01AC 062F              mov R16,R22
 01AE 005D              subi R16,208    ; addi 48
 01B0 8EDF              xcall _putchar1
 01B2 04C0              xjmp L35
 01B4           L34:
 01B4           ;     else
 01B4           ;         putchar1(temp1-10+'A');
 01B4 062F              mov R16,R22
 01B6 0A50              subi R16,10
 01B8 0F5B              subi R16,191    ; addi 65
 01BA 89DF              xcall _putchar1
 01BC           L35:
 01BC           ; 	
 01BC           ;     if(temp2<10)
 01BC 4A30              cpi R20,10
 01BE 20F4              brsh L36
 01C0           ;         putchar1(temp2+'0');
 01C0 042F              mov R16,R20
 01C2 005D              subi R16,208    ; addi 48
 01C4 84DF              xcall _putchar1
 01C6 04C0              xjmp L37
 01C8           L36:
 01C8           ;     else
 01C8           ;         putchar1(temp2-10+'A'); 
 01C8 042F              mov R16,R20
 01CA 0A50              subi R16,10
 01CC 0F5B              subi R16,191    ; addi 65
 01CE 7FDF              xcall _putchar1
 01D0           L37:
 01D0           L33:
 01D0 0E940000          xcall pop_gset2
 01D4                   .dbline 0 ; func end
 01D4 0895              ret
 01D6           ;         buffer -> y+4
 01D6           ;        temp32U -> y+0
 01D6           ;         temp8S -> R10
 01D6           ;            Dec -> y+21
                        .even
 01D6           _PUT_INT32U_DecTOString::
 01D6 0E940000          xcall push_arg4
 01DA 0E940000          xcall push_gset3
 01DE 2F97              sbiw R28,15
 01E0           ; }
 01E0           ; 
 01E0           ; //格式转换函数,十进制数据转换为字符串 eg:输入001234,串口输出1234(去掉无效0)
 01E0           ; void PUT_INT32U_DecTOString(INT32U Dec)
 01E0           ; {
 01E0           ;     INT8S temp8S ;
 01E0           ;     INT32U temp32U ;
 01E0           ;     INT8U buffer[11];
 01E0           ;     
 01E0           ;     temp32U=Dec ;
 01E0 FE01              movw R30,R28
 01E2 2588              ldd R2,z+21
 01E4 3688              ldd R3,z+22
 01E6 4788              ldd R4,z+23
 01E8 508C              ldd R5,z+24
 01EA FE01              movw R30,R28
 01EC 2082              std z+0,R2
 01EE 3182              std z+1,R3
 01F0 4282              std z+2,R4
 01F2 5382              std z+3,R5
 01F4           ;     for(temp8S=10;temp8S>=0;temp8S--)
 01F4 8AE0              ldi R24,10
 01F6 A82E              mov R10,R24
 01F8 3BC0              xjmp L42
 01FA           L39:
 01FA 4AE0              ldi R20,10
 01FC 50E0              ldi R21,0
 01FE 60E0              ldi R22,0
 0200 70E0              ldi R23,0
 0202 FE01              movw R30,R28
 0204 2080              ldd R2,z+0
 0206 3180              ldd R3,z+1
 0208 4280              ldd R4,z+2
 020A 5380              ldd R5,z+3
 020C 7A93              st -y,R23
 020E 6A93              st -y,R22
 0210 5A93              st -y,R21
 0212 4A93              st -y,R20
 0214 8101              movw R16,R2
 0216 9201              movw R18,R4
 0218 0E940000          xcall mod32u
 021C 1801              movw R2,R16
 021E 2901              movw R4,R18
 0220 40E3              ldi R20,48
 0222 50E0              ldi R21,0
 0224 60E0              ldi R22,0
 0226 70E0              ldi R23,0
 0228 240E              add R2,R20
 022A 351E              adc R3,R21
 022C 461E              adc R4,R22
 022E 571E              adc R5,R23
 0230 CE01              movw R24,R28
 0232 0496              adiw R24,4
 0234 EA2D              mov R30,R10
 0236 FF27              clr R31
 0238 E7FD              sbrc R30,7
 023A F095              com R31
 023C E80F              add R30,R24
 023E F91F              adc R31,R25
 0240 2082              std z+0,R2
 0242 4AE0              ldi R20,10
 0244 50E0              ldi R21,0
 0246 60E0              ldi R22,0
 0248 70E0              ldi R23,0
 024A FE01              movw R30,R28
 024C 2080              ldd R2,z+0
 024E 3180              ldd R3,z+1
 0250 4280              ldd R4,z+2
 0252 5380              ldd R5,z+3
 0254 7A93              st -y,R23
 0256 6A93              st -y,R22
 0258 5A93              st -y,R21
 025A 4A93              st -y,R20
 025C 8101              movw R16,R2
 025E 9201              movw R18,R4
 0260 0E940000          xcall div32u
 0264 FE01              movw R30,R28
 0266 0083              std z+0,R16
 0268 1183              std z+1,R17
 026A 2283              std z+2,R18
 026C 3383              std z+3,R19
 026E           L40:
 026E AA94              dec R10
 0270           L42:
 0270 8A2D              mov R24,R10
 0272 8030              cpi R24,0
 0274 0CF0              brlt X0
 0276 C1CF              xjmp L39
 0278           X0:
 0278           ;     {
 0278           ;         buffer[temp8S]=temp32U%10+'0' ;
 0278           ;         temp32U=temp32U/10 ;
 0278           ;     }
 0278           ;     buffer[11]='\0' ;
 0278 2224              clr R2
 027A 2F86              std y+15,R2
 027C           ;     
 027C           ;     if(buffer[0]=='0')
 027C 8C81              ldd R24,y+4
 027E 8033              cpi R24,48
 0280 09F0              breq X1
 0282 50C0              xjmp L44
 0284           X1:
 0284           ;     {
 0284           ;         if(buffer[1]=='0')
 0284 8D81              ldd R24,y+5
 0286 8033              cpi R24,48
 0288 09F0              breq X2
 028A 47C0              xjmp L46
 028C           X2:
 028C           ;         {
 028C           ;             if(buffer[2]=='0')
 028C 8E81              ldd R24,y+6
 028E 8033              cpi R24,48
 0290 09F0              breq X3
 0292 3EC0              xjmp L49
 0294           X3:
 0294           ;             {
 0294           ;                 if(buffer[3]=='0')
 0294 8F81              ldd R24,y+7
 0296 8033              cpi R24,48
 0298 09F0              breq X4
 029A 35C0              xjmp L52
 029C           X4:
 029C           ;                 {
 029C           ;                     if(buffer[4]=='0')
 029C 8885              ldd R24,y+8
 029E 8033              cpi R24,48
 02A0 69F5              brne L55
 02A2           ;                     {
 02A2           ;                         if(buffer[5]=='0')
 02A2 8985              ldd R24,y+9
 02A4 8033              cpi R24,48
 02A6 29F5              brne L58
 02A8           ;                         {
 02A8           ;                             if(buffer[6]=='0')
 02A8 8A85              ldd R24,y+10
 02AA 8033              cpi R24,48
 02AC E9F4              brne L61
 02AE           ;                             {
 02AE           ;                                 if(buffer[7]=='0')
 02AE 8B85              ldd R24,y+11
 02B0 8033              cpi R24,48
 02B2 A9F4              brne L64
 02B4           ;                                 {
 02B4           ;                                     if(buffer[8]=='0')
 02B4 8C85              ldd R24,y+12
 02B6 8033              cpi R24,48
 02B8 69F4              brne L67
 02BA           ;                                     {
 02BA           ;                                         if(buffer[9]=='0')
 02BA 8D85              ldd R24,y+13
 02BC 8033              cpi R24,48
 02BE 29F4              brne L70
 02C0           ;                                             Uart1_SendString(&buffer[10]);
 02C0 8E01              movw R16,R28
 02C2 025F              subi R16,242  ; offset = 14
 02C4 1F4F              sbci R17,255
 02C6 59DF              xcall _Uart1_SendString
 02C8 31C0              xjmp L45
 02CA           L70:
 02CA           ;                                         else Uart1_SendString(&buffer[9]);
 02CA 8E01              movw R16,R28
 02CC 035F              subi R16,243  ; offset = 13
 02CE 1F4F              sbci R17,255
 02D0 54DF              xcall _Uart1_SendString
 02D2           ;                                     }
 02D2 2CC0              xjmp L45
 02D4           L67:
 02D4           ;                                     else Uart1_SendString(&buffer[8]);
 02D4 8E01              movw R16,R28
 02D6 045F              subi R16,244  ; offset = 12
 02D8 1F4F              sbci R17,255
 02DA 4FDF              xcall _Uart1_SendString
 02DC           ;                                 }
 02DC 27C0              xjmp L45
 02DE           L64:
 02DE           ;                                 else Uart1_SendString(&buffer[7]);
 02DE 8E01              movw R16,R28
 02E0 055F              subi R16,245  ; offset = 11
 02E2 1F4F              sbci R17,255
 02E4 4ADF              xcall _Uart1_SendString
 02E6           ;                             }
 02E6 22C0              xjmp L45
 02E8           L61:
 02E8           ;                             else Uart1_SendString(&buffer[6]);
 02E8 8E01              movw R16,R28
 02EA 065F              subi R16,246  ; offset = 10
 02EC 1F4F              sbci R17,255
 02EE 45DF              xcall _Uart1_SendString
 02F0           ;                         }
 02F0 1DC0              xjmp L45
 02F2           L58:
 02F2           ;                         else Uart1_SendString(&buffer[5]);
 02F2 8E01              movw R16,R28
 02F4 075F              subi R16,247  ; offset = 9
 02F6 1F4F              sbci R17,255
 02F8 40DF              xcall _Uart1_SendString
 02FA           ;                     }
 02FA 18C0              xjmp L45
 02FC           L55:
 02FC           ;                     else Uart1_SendString(&buffer[4]);
 02FC 8E01              movw R16,R28
 02FE 085F              subi R16,248  ; offset = 8
 0300 1F4F              sbci R17,255
 0302 3BDF              xcall _Uart1_SendString
 0304           ;                 }
 0304 13C0              xjmp L45
 0306           L52:
 0306           ;                 else Uart1_SendString(&buffer[3]);
 0306 8E01              movw R16,R28
 0308 095F              subi R16,249  ; offset = 7
 030A 1F4F              sbci R17,255
 030C 36DF              xcall _Uart1_SendString
 030E           ;             }
 030E 0EC0              xjmp L45
 0310           L49:
 0310           ;             else Uart1_SendString(&buffer[2]);
 0310 8E01              movw R16,R28
 0312 0A5F              subi R16,250  ; offset = 6
 0314 1F4F              sbci R17,255
 0316 31DF              xcall _Uart1_SendString
 0318           ;         }
 0318 09C0              xjmp L45
 031A           L46:
 031A           ;         else Uart1_SendString(&buffer[1]);
 031A 8E01              movw R16,R28
 031C 0B5F              subi R16,251  ; offset = 5
 031E 1F4F              sbci R17,255
 0320 2CDF              xcall _Uart1_SendString
 0322           ;     }
 0322 04C0              xjmp L45
 0324           L44:
 0324           ;     else Uart1_SendString(&buffer[0]);
 0324 8E01              movw R16,R28
 0326 0C5F              subi R16,252  ; offset = 4
 0328 1F4F              sbci R17,255
 032A 27DF              xcall _Uart1_SendString
 032C           L45:
 032C           L38:
 032C 2F96              adiw R28,15
 032E 0E940000          xcall pop_gset3
 0332 2496              adiw R28,4
 0334                   .dbline 0 ; func end
 0334 0895              ret
 0336           ;        temp32U -> y+0
 0336           ;            num -> R10
 0336           ;         temp8U -> R12
                        .even
 0336           _StringTODec::
 0336 0E940000          xcall push_gset5
 033A 2497              sbiw R28,4
 033C           ; }
 033C           ; 
 033C           ; //串口输入字符,转换成十进制,即"123456"--123456
 033C           ; INT32U StringTODec(void)
 033C           ; { 
 033C           ;     INT8U  num,temp8U ;
 033C           ;     INT32U temp32U ;
 033C           ;       
 033C           ;     temp8U=0x00 ;
 033C CC24              clr R12
 033E           ;     num=0x00 ;
 033E AA24              clr R10
 0340 5BC1              xjmp L85
 0342           L84:
 0342           ;     //如果不是回车键
 0342           ;     while(temp8U!=0x0D)
 0342           ;     {
 0342           ;         temp8U=getchar1();
 0342 EDDE              xcall _getchar1
 0344 C02E              mov R12,R16
 0346           ;         
 0346           ;         if(temp8U>='0'&&temp8U<='9')
 0346 0033              cpi R16,48
 0348 08F4              brsh X6
 034A 56C1              xjmp L87
 034C           X6:
 034C 89E3              ldi R24,57
 034E 8017              cp R24,R16
 0350 08F4              brsh X7
 0352 52C1              xjmp L87
 0354           X7:
 0354           ;         {
 0354           ;             putchar1(temp8U);
 0354 BCDE              xcall _putchar1
 0356           ;             num++;
 0356 A394              inc R10
 0358           ;             switch(num)
 0358 EA2C              mov R14,R10
 035A FF24              clr R15
 035C C701              movw R24,R14
 035E 8130              cpi R24,1
 0360 E0E0              ldi R30,0
 0362 9E07              cpc R25,R30
 0364 21F1              breq L92
 0366 8230              cpi R24,2
 0368 E0E0              ldi R30,0
 036A 9E07              cpc R25,R30
 036C 09F4              brne X8
 036E 2FC0              xjmp L93
 0370           X8:
 0370 8330              cpi R24,3
 0372 E0E0              ldi R30,0
 0374 9E07              cpc R25,R30
 0376 09F4              brne X9
 0378 51C0              xjmp L94
 037A           X9:
 037A 8430              cpi R24,4
 037C E0E0              ldi R30,0
 037E 9E07              cpc R25,R30
 0380 09F4              brne X10
 0382 73C0              xjmp L95
 0384           X10:
 0384 8530              cpi R24,5
 0386 E0E0              ldi R30,0
 0388 9E07              cpc R25,R30
 038A 09F4              brne X11
 038C 95C0              xjmp L96
 038E           X11:
 038E 8630              cpi R24,6
 0390 E0E0              ldi R30,0

⌨️ 快捷键说明

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