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

📄 mian.s

📁 通过单片机实现计算器的功能
💻 S
📖 第 1 页 / 共 3 页
字号:
	xjmp L29
L40:
	.dbline 32
	ldi R16,56
	xjmp L29
L41:
	.dbline 33
	ldi R16,55
	xjmp L29
L42:
	.dbline 34
	ldi R16,45
	xjmp L29
L43:
	.dbline 35
	ldi R16,54
	xjmp L29
L44:
	.dbline 36
	ldi R16,53
	xjmp L29
L45:
	.dbline 37
	ldi R16,52
	xjmp L29
L46:
	.dbline 38
	ldi R16,43
	xjmp L29
L47:
	.dbline 39
	ldi R16,51
	xjmp L29
L48:
	.dbline 40
	ldi R16,50
	xjmp L29
L49:
	.dbline 41
	ldi R16,49
	xjmp L29
L30:
	.dbline 42
	clr R16
	.dbline -2
L29:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器/key.h
L55:
	.blkb 1
	.area text(rom, con, rel)
	.dbfile D:\avr\+++精华+++\计算器/key.h
	.dbfunc e get_key _get_key fc
	.dbsym s j L55 c
;              i -> R20
	.even
_get_key::
	xcall push_gset1
	.dbline -1
	.dbline 47
	.dbline 49
	xcall _key_read
	mov R20,R16
	.dbline 50
	tst R16
	brne L56
	.dbline 51
	.dbline 52
	clr R2
	sts L55,R2
	.dbline 53
	clr R16
	xjmp L54
L56:
	.dbline 55
	lds R2,L55
	tst R2
	brne L58
	.dbline 56
	.dbline 56
	sts L55,R20
	.dbline 57
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 58
	xcall _key_read
	mov R20,R16
	.dbline 59
	lds R2,L55
	cp R16,R2
	brne L60
	.dbline 59
	.dbline 59
	xjmp L54
L60:
	.dbline 60
L58:
	.dbline 61
	clr R16
	.dbline -2
L54:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器/key.h
_a1::
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器/key.h
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器/key.h
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器/key.h
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e a1 _a1 A[5:5]c
_a2::
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e a2 _a2 A[5:5]c
_result_dp::
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e result_dp _result_dp A[7:7]c
_flag_a1::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e flag_a1 _flag_a1 c
_flag_a2::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e flag_a2 _flag_a2 c
_key::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e key _key c
_flag_count::
	.blkb 1
	.area idata
	.byte 32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e flag_count _flag_count c
_ok::
	.blkb 1
	.area idata
	.byte 32
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e ok _ok c
_error::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbsym e error _error c
L63:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.area text(rom, con, rel)
	.dbfile D:\avr\+++精华+++\计算器\mian.c
	.dbfunc e process_key _process_key fV
	.dbsym s i L63 c
	.even
_process_key::
	sbiw R28,2
	.dbline -1
	.dbline 36
	.dbline 37
	lds R24,_key
	cpi R24,48
	brsh X12
	xjmp L64
X12:
	ldi R24,57
	lds R2,_key
	cp R24,R2
	brsh X13
	xjmp L64
X13:
	.dbline 38
	.dbline 38
	lds R24,_flag_a1
	cpi R24,1
	brne L66
	.dbline 39
	.dbline 40
	ldi R24,<_a1
	ldi R25,>_a1
	lds R30,L63
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,32
	brne L68
	.dbline 40
	ldi R24,<_a1
	ldi R25,>_a1
	lds R30,L63
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
L68:
	.dbline 41
	lds R24,L63
	subi R24,255    ; addi 1
	sts L63,R24
	.dbline 42
	lds R24,_a1+3
	cpi R24,32
	brne X14
	xjmp L65
X14:
	.dbline 42
	.dbline 42
	clr R2
	sts _flag_a1,R2
	.dbline 42
	sts L63,R2
	.dbline 42
	.dbline 43
	xjmp L65
L66:
	.dbline 44
	lds R24,_flag_a2
	cpi R24,1
	breq X15
	xjmp L65
X15:
	lds R24,_flag_count
	cpi R24,32
	brne X16
	xjmp L65
X16:
	.dbline 45
	.dbline 46
	ldi R24,<_a2
	ldi R25,>_a2
	lds R30,L63
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,32
	brne L75
	.dbline 46
	ldi R24,<_a2
	ldi R25,>_a2
	lds R30,L63
	clr R31
	add R30,R24
	adc R31,R25
	lds R2,_key
	std z+0,R2
L75:
	.dbline 47
	lds R24,L63
	subi R24,255    ; addi 1
	sts L63,R24
	.dbline 48
	lds R24,_a2+3
	cpi R24,32
	brne X17
	xjmp L65
X17:
	.dbline 48
	.dbline 48
	clr R2
	sts _flag_a2,R2
	.dbline 48
	sts L63,R2
	.dbline 48
	.dbline 49
	.dbline 50
	xjmp L65
L64:
	.dbline 51
	lds R24,_key
	cpi R24,43
	breq L84
	cpi R24,45
	breq L84
	cpi R24,42
	breq L84
	cpi R24,47
	brne L80
L84:
	.dbline 51
	.dbline 51
	clr R2
	sts _flag_a1,R2
	.dbline 51
	lds R2,_key
	sts _flag_count,R2
	.dbline 51
	clr R2
	sts L63,R2
	.dbline 51
	xjmp L81
L80:
	.dbline 53
	lds R24,_key
	cpi R24,61
	brne L85
	.dbline 54
	.dbline 56
	ldi R24,61
	sts _ok,R24
	.dbline 57
	lds R24,_flag_a2
	cpi R24,1
	brne L87
	lds R24,_a2
	cpi R24,32
	brne L87
	.dbline 58
	.dbline 58
	ldi R24,1
	sts _error,R24
	.dbline 60
	ldi R24,<L89
	ldi R25,>L89
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,10
	xcall _LCD_write_string
	.dbline 61
	xjmp L86
L87:
	.dbline 63
	.dbline 63
	xcall _process_data
	.dbline 64
	clr R2
	sts _flag_a2,R2
	.dbline 64
	.dbline 65
	xjmp L86
L85:
	.dbline 67
	lds R24,_key
	cpi R24,82
	brne L90
	.dbline 67
	clr R2
	sts L63,R2
L90:
L86:
L81:
L65:
	.dbline 68
	xcall _key_display
	.dbline -2
L62:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e key_display _key_display fV
;              i -> R20
	.even
_key_display::
	xcall push_gset1
	sbiw R28,2
	.dbline -1
	.dbline 72
	.dbline 74
	lds R2,_key
	tst R2
	brne X18
	xjmp L93
X18:
	mov R24,R2
	cpi R24,82
	brne X19
	xjmp L93
X19:
	.dbline 75
	.dbline 75
	lds R2,_a1
	std y+0,R2
	ldi R18,1
	clr R16
	xcall _LCD_write_char
	.dbline 76
	lds R2,_a1+1
	std y+0,R2
	ldi R18,1
	ldi R16,1
	xcall _LCD_write_char
	.dbline 77
	lds R2,_a1+2
	std y+0,R2
	ldi R18,1
	ldi R16,2
	xcall _LCD_write_char
	.dbline 78
	lds R2,_a1+3
	std y+0,R2
	ldi R18,1
	ldi R16,3
	xcall _LCD_write_char
	.dbline 79
	lds R2,_flag_count
	std y+0,R2
	ldi R18,1
	ldi R16,4
	xcall _LCD_write_char
	.dbline 80
	lds R2,_a2
	std y+0,R2
	ldi R18,1
	ldi R16,5
	xcall _LCD_write_char
	.dbline 81
	lds R2,_a2+1
	std y+0,R2
	ldi R18,1
	ldi R16,6
	xcall _LCD_write_char
	.dbline 82
	lds R2,_a2+2
	std y+0,R2
	ldi R18,1
	ldi R16,7
	xcall _LCD_write_char
	.dbline 83
	lds R2,_a2+3
	std y+0,R2
	ldi R18,1
	ldi R16,8
	xcall _LCD_write_char
	.dbline 84
	lds R2,_ok
	std y+0,R2
	ldi R18,1
	ldi R16,9
	xcall _LCD_write_char
	.dbline 86
	clr R2
	sts _key,R2
	.dbline 87
L93:
	.dbline 88
	lds R2,_key
	tst R2
	brne X20
	xjmp L101
X20:
	mov R24,R2
	cpi R24,82
	breq X21
	xjmp L101
X21:
	.dbline 89
	.dbline 90
	ldi R24,<L103
	ldi R25,>L103
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_write_string
	.dbline 91
	clr R20
	xjmp L107
L104:
	.dbline 91
	ldi R24,<_a1
	ldi R25,>_a1
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,32
	std z+0,R24
L105:
	.dbline 91
	inc R20
L107:
	.dbline 91
	cpi R20,5
	brlo L104
	.dbline 92
	clr R20
	xjmp L111
L108:
	.dbline 92
	ldi R24,<_a2
	ldi R25,>_a2
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,32
	std z+0,R24
L109:
	.dbline 92
	inc R20
L111:
	.dbline 92
	cpi R20,5
	brlo L108
	.dbline 93
	clr R20
	xjmp L115
L112:
	.dbline 93
	ldi R24,<_result_dp
	ldi R25,>_result_dp
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,32
	std z+0,R24
L113:
	.dbline 93
	inc R20
L115:
	.dbline 93
	cpi R20,7
	brlo L112
	.dbline 94
	ldi R24,1
	sts _flag_a1,R24
	.dbline 95
	sts _flag_a2,R24
	.dbline 96
	clr R2
	sts _key,R2
	.dbline 97
	ldi R24,32
	sts _flag_count,R24
	.dbline 98
	sts _ok,R24
	.dbline 99
	sts _error,R2
	.dbline 100
L101:
	.dbline -2
L92:
	adiw R28,2
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e process_data _process_data fV
	.even
_process_data::
	.dbline -1
	.dbline 106
	.dbline 106
	lds R24,_a1+3
	cpi R24,32
	breq L117
	.dbline 106
	.dbline 106
	lds R2,_a1+1
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	lds R18,_a1
	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,_a1+2
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_a1+3
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	sts _data1+1,R31
	sts _data1,R30
	.dbline 106
	xjmp L118
L117:
	.dbline 107
	lds R24,_a1+2
	cpi R24,32
	breq L123
	.dbline 107
	.dbline 107
	lds R2,_a1+1
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	lds R2,_a1
	ldi R30,100
	mul R30,R2
	movw R30,R0
	subi R30,192
	sbci R31,18
	add R30,R24
	adc R31,R25
	lds R24,_a1+2
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	sts _data1+1,R31
	sts _data1,R30
	.dbline 107
	xjmp L124
L123:
	.dbline 108
	lds R24,_a1+1
	cpi R24,32
	breq L128
	.dbline 108
	.dbline 108
	lds R2,_a1
	ldi R24,10
	mul R24,R2

⌨️ 快捷键说明

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