📄 usart1.s
字号:
; if(buffer[7]=='0')
ldd R24,y+11
cpi R24,48
brne L64
; {
; if(buffer[8]=='0')
ldd R24,y+12
cpi R24,48
brne L67
; {
; if(buffer[9]=='0')
ldd R24,y+13
cpi R24,48
brne L70
; Uart1_SendString(&buffer[10]);
movw R16,R28
subi R16,242 ; offset = 14
sbci R17,255
xcall _Uart1_SendString
xjmp L45
L70:
; else Uart1_SendString(&buffer[9]);
movw R16,R28
subi R16,243 ; offset = 13
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L67:
; else Uart1_SendString(&buffer[8]);
movw R16,R28
subi R16,244 ; offset = 12
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L64:
; else Uart1_SendString(&buffer[7]);
movw R16,R28
subi R16,245 ; offset = 11
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L61:
; else Uart1_SendString(&buffer[6]);
movw R16,R28
subi R16,246 ; offset = 10
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L58:
; else Uart1_SendString(&buffer[5]);
movw R16,R28
subi R16,247 ; offset = 9
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L55:
; else Uart1_SendString(&buffer[4]);
movw R16,R28
subi R16,248 ; offset = 8
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L52:
; else Uart1_SendString(&buffer[3]);
movw R16,R28
subi R16,249 ; offset = 7
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L49:
; else Uart1_SendString(&buffer[2]);
movw R16,R28
subi R16,250 ; offset = 6
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L46:
; else Uart1_SendString(&buffer[1]);
movw R16,R28
subi R16,251 ; offset = 5
sbci R17,255
xcall _Uart1_SendString
; }
xjmp L45
L44:
; else Uart1_SendString(&buffer[0]);
movw R16,R28
subi R16,252 ; offset = 4
sbci R17,255
xcall _Uart1_SendString
L45:
L38:
adiw R28,15
xcall pop_gset3
adiw R28,4
.dbline 0 ; func end
ret
; temp32U -> y+0
; num -> R10
; temp8U -> R12
.even
_StringTODec::
xcall push_gset5
sbiw R28,4
; }
;
; //串口输入字符,转换成十进制,即"123456"--123456
; INT32U StringTODec(void)
; {
; INT8U num,temp8U ;
; INT32U temp32U ;
;
; temp8U=0x00 ;
clr R12
; num=0x00 ;
clr R10
xjmp L85
L84:
; //如果不是回车键
; while(temp8U!=0x0D)
; {
; temp8U=getchar1();
xcall _getchar1
mov R12,R16
;
; if(temp8U>='0'&&temp8U<='9')
cpi R16,48
brsh X6
xjmp L87
X6:
ldi R24,57
cp R24,R16
brsh X7
xjmp L87
X7:
; {
; putchar1(temp8U);
xcall _putchar1
; num++;
inc R10
; switch(num)
mov R14,R10
clr R15
movw R24,R14
cpi R24,1
ldi R30,0
cpc R25,R30
breq L92
cpi R24,2
ldi R30,0
cpc R25,R30
brne X8
xjmp L93
X8:
cpi R24,3
ldi R30,0
cpc R25,R30
brne X9
xjmp L94
X9:
cpi R24,4
ldi R30,0
cpc R25,R30
brne X10
xjmp L95
X10:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X11
xjmp L96
X11:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X12
xjmp L97
X12:
cpi R24,7
ldi R30,0
cpc R25,R30
brne X13
xjmp L98
X13:
cpi R24,8
ldi R30,0
cpc R25,R30
brne X14
xjmp L99
X14:
xjmp L89
X5:
; {
L92:
; case 1 :temp32U=(INT32U)(temp8U-'0');break ;
mov R24,R12
clr R25
sbiw R24,48
movw R2,R24
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L93:
; case 2 :temp32U=temp32U*10+(INT32U)(temp8U-'0');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L94:
; case 3 :temp32U=temp32U*10+(INT32U)(temp8U-'0');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L95:
; case 4 :temp32U=temp32U*10+(INT32U)(temp8U-'0');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L96:
; case 5 :temp32U=temp32U*10+(INT32U)(temp8U-'0');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L97:
; case 6 :temp32U=temp32U*10+(INT32U)(temp8U-'0');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L98:
; case 7 :temp32U=temp32U*10+(INT32U)(temp8U-'0');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L90
L99:
; case 8 :temp32U=temp32U*10+(INT32U)(temp8U-'0');num=0 ;putchar1(' ');break ;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R24,R12
clr R25
sbiw R24,48
movw R6,R24
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
clr R10
ldi R16,32
xcall _putchar1
xjmp L90
L89:
; default :num=0 ;break ;
clr R10
L90:
; }
; }
L87:
L85:
mov R24,R12
cpi R24,13
breq X15
xjmp L84
X15:
; }
; return temp32U;
movw R30,R28
ldd R16,z+0
ldd R17,z+1
ldd R18,z+2
ldd R19,z+3
L83:
adiw R28,4
xcall pop_gset5
.dbline 0 ; func end
ret
.area bss(ram, con, rel)
_tx_counter1::
.blkb 1
_tx_rd_index1::
.blkb 1
_tx_wr_index1::
.blkb 1
_tx_buffer1::
.blkb 4
_rx_buffer_overflow1::
.blkb 1
_rx_counter1::
.blkb 1
_rx_rd_index1::
.blkb 1
_rx_wr_index1::
.blkb 1
_rx_buffer1::
.blkb 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -