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

📄 mian.s

📁 通过单片机实现计算器的功能
💻 S
📖 第 1 页 / 共 3 页
字号:
	movw R24,R0
	subi R24,224
	sbci R25,1
	lds R30,_a1+1
	clr R31
	sbiw R30,48
	add R24,R30
	adc R25,R31
	sts _data1+1,R25
	sts _data1,R24
	.dbline 108
	xjmp L129
L128:
	.dbline 109
	lds R24,_a1
	cpi R24,32
	breq L132
	.dbline 109
	.dbline 109
	clr R25
	sbiw R24,48
	sts _data1+1,R25
	sts _data1,R24
	.dbline 109
	xjmp L133
L132:
	.dbline 110
	clr R2
	clr R3
	sts _data1+1,R3
	sts _data1,R2
L133:
L129:
L124:
L118:
	.dbline 112
	lds R24,_a2+3
	cpi R24,32
	breq L134
	.dbline 112
	.dbline 112
	lds R2,_a2+1
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	lds R18,_a2
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R30,R16
	subi R30,128
	sbci R31,187
	add R30,R24
	adc R31,R25
	lds R2,_a2+2
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_a2+3
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	sts _data2+1,R31
	sts _data2,R30
	.dbline 112
	xjmp L135
L134:
	.dbline 113
	lds R24,_a2+2
	cpi R24,32
	breq L140
	.dbline 113
	.dbline 113
	lds R2,_a2+1
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	lds R2,_a2
	ldi R30,100
	mul R30,R2
	movw R30,R0
	subi R30,192
	sbci R31,18
	add R30,R24
	adc R31,R25
	lds R24,_a2+2
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	sts _data2+1,R31
	sts _data2,R30
	.dbline 113
	xjmp L141
L140:
	.dbline 114
	lds R24,_a2+1
	cpi R24,32
	breq L145
	.dbline 114
	.dbline 114
	lds R2,_a2
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	lds R30,_a2+1
	clr R31
	sbiw R30,48
	add R24,R30
	adc R25,R31
	sts _data2+1,R25
	sts _data2,R24
	.dbline 114
	xjmp L146
L145:
	.dbline 115
	lds R24,_a2
	cpi R24,32
	breq L149
	.dbline 115
	.dbline 115
	clr R25
	sbiw R24,48
	sts _data2+1,R25
	sts _data2,R24
	.dbline 115
	xjmp L150
L149:
	.dbline 116
	clr R2
	clr R3
	sts _data2+1,R3
	sts _data2,R2
L150:
L146:
L141:
L135:
	.dbline 118
	xcall _process_count
	.dbline -2
L116:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e process_count _process_count fV
	.even
_process_count::
	.dbline -1
	.dbline 122
	.dbline 122
	lds R24,_flag_count
	cpi R24,43
	brne L152
	.dbline 122
	lds R2,_data2
	lds R3,_data2+1
	lds R4,_data1
	lds R5,_data1+1
	add R4,R2
	adc R5,R3
	movw R2,R4
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _result+1,R3
	sts _result,R2
	sts _result+2+1,R5
	sts _result+2,R4
L152:
	.dbline 123
	lds R24,_flag_count
	cpi R24,45
	brne L154
	.dbline 123
	lds R2,_data2
	lds R3,_data2+1
	lds R4,_data1
	lds R5,_data1+1
	sub R4,R2
	sbc R5,R3
	movw R2,R4
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _result+1,R3
	sts _result,R2
	sts _result+2+1,R5
	sts _result+2,R4
L154:
	.dbline 124
	lds R24,_flag_count
	cpi R24,42
	brne L156
	.dbline 124
	lds R18,_data2
	lds R19,_data2+1
	lds R16,_data1
	lds R17,_data1+1
	xcall empy16s
	movw R2,R16
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _result+1,R3
	sts _result,R2
	sts _result+2+1,R5
	sts _result+2,R4
L156:
	.dbline 125
	lds R24,_flag_count
	cpi R24,47
	brne L158
	.dbline 125
	lds R18,_data2
	lds R19,_data2+1
	lds R16,_data1
	lds R17,_data1+1
	xcall div16s
	movw R2,R16
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _result+1,R3
	sts _result,R2
	sts _result+2+1,R5
	sts _result+2,R4
L158:
	.dbline 126
	xcall _display_result
	.dbline -2
L151:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e display_result _display_result fV
	.even
_display_result::
	xcall push_gset2
	sbiw R28,2
	.dbline -1
	.dbline 130
	.dbline 130
	ldi R20,15
	ldi R21,39
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L161
	.dbline 130
	ldi R24,1
	sts _error,R24
L161:
	.dbline 131
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L163
	lds R24,_flag_count
	cpi R24,45
	brne L163
	.dbline 131
	.dbline 131
	ldi R24,45
	sts _result_dp,R24
	.dbline 131
	ldi R20,255
	ldi R21,255
	ldi R22,255
	ldi R23,255
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	sts _result+1,R17
	sts _result,R16
	sts _result+2+1,R19
	sts _result+2,R18
	.dbline 131
L163:
	.dbline 132
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L165
	lds R24,_flag_count
	cpi R24,45
	breq L165
	.dbline 132
	ldi R24,1
	sts _error,R24
L165:
	.dbline 133
	lds R24,_flag_count
	cpi R24,47
	brne L167
	lds R2,_data2
	lds R3,_data2+1
	tst R2
	brne L167
	tst R3
	brne L167
X22:
	.dbline 133
	ldi R24,1
	sts _error,R24
L167:
	.dbline 136
	ldi R20,16
	ldi R21,39
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall div32s
	movw R2,R16
	movw R4,R18
	ldi R20,48
	ldi R21,0
	ldi R22,0
	ldi R23,0
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _result_dp+1,R2
	.dbline 137
	ldi R20,232
	ldi R21,3
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall div32s
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R20,48
	ldi R21,0
	ldi R22,0
	ldi R23,0
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _result_dp+2,R2
	.dbline 138
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall div32s
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R20,48
	ldi R21,0
	ldi R22,0
	ldi R23,0
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _result_dp+3,R2
	.dbline 139
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall div32s
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R20,48
	ldi R21,0
	ldi R22,0
	ldi R23,0
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _result_dp+4,R2
	.dbline 140
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_result+2
	lds R5,_result+2+1
	lds R2,_result
	lds R3,_result+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R20,48
	ldi R21,0
	ldi R22,0
	ldi R23,0
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _result_dp+5,R2
	.dbline 141
	lds R24,_result_dp+1
	cpi R24,48
	brne L174
	.dbline 142
	.dbline 142
	ldi R24,32
	sts _result_dp+1,R24
	.dbline 143
	lds R24,_result_dp+2
	cpi R24,48
	brne L178
	.dbline 144
	.dbline 144
	ldi R24,32
	sts _result_dp+2,R24
	.dbline 145
	lds R24,_result_dp+3
	cpi R24,48
	brne L182
	.dbline 146
; 	{result_dp[3]=32;
	.dbline 146
	ldi R24,32
	sts _result_dp+3,R24
	.dbline 147
;      if(result_dp[4]==48)
	lds R24,_result_dp+4
	cpi R24,48
	brne L186
	.dbline 148
; 	 {result_dp[4]=32;
	.dbline 148
	ldi R24,32
	sts _result_dp+4,R24
	.dbline 150
;        
; 	  }
L186:
	.dbline 151
; 	 }
L182:
	.dbline 152
; 	}
L178:
	.dbline 153
;   }
L174:
	.dbline 155
; 
; if(error==1)//错误显示
	lds R24,_error
	cpi R24,1
	brne L190
	.dbline 156
; LCD_write_string(10,1,"ERROR");
	ldi R24,<L89
	ldi R25,>L89
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,10
	xcall _LCD_write_string
	xjmp L191
L190:
	.dbline 159
	ldi R24,<_result_dp
	ldi R25,>_result_dp
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,10
	xcall _LCD_write_string
L191:
	.dbline -2
L160:
	adiw R28,2
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              i -> <dead>
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 164
; 
; 
; else LCD_write_string(10,1,result_dp);
; 
; }
; 
; void main(void)
; {	unsigned char i; 
	.dbline 165
;    LCD_init();//液晶初始化
	xcall _LCD_init
	.dbline 166
; LCD_write_string(1,0,"COUNTER BY MJP");//显示欢迎信息
	ldi R24,<L193
	ldi R25,>L193
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,1
	xcall _LCD_write_string
	xjmp L195
L194:
	.dbline 168
;    while(1)
;    {key=get_key();//按键扫描
	.dbline 168
	xcall _get_key
	sts _key,R16
	.dbline 170
; 	
; 	if(key!=0x00)
	tst R16
	breq L197
	.dbline 171
; 	{
	.dbline 172
; 	process_key();//调用按键处理函数
	xcall _process_key
	.dbline 173
; 	}
L197:
	.dbline 175
L195:
	.dbline 167
	xjmp L194
X23:
	.dbline -2
L192:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym l i 3 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
_result::
	.blkb 4
	.dbsym e result _result L
_data2::
	.blkb 2
	.dbsym e data2 _data2 I
_data1::
	.blkb 2
	.dbsym e data1 _data1 I
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
L193:
	.blkb 15
	.area idata
	.byte 'C,'O,'U,'N,'T,'E,'R,32,'B,'Y,32,'M,'J,'P,0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
L103:
	.blkb 17
	.area idata
	.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
L89:
	.blkb 6
	.area idata
	.byte 'E,'R,'R,'O,'R,0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c

⌨️ 快捷键说明

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