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

📄 usart1.s

📁 Atmega64单片机程序(完整工程)
💻 S
📖 第 1 页 / 共 2 页
字号:
;                                 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 + -