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

📄 main.s

📁 AVR单片机的485通信参考程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R24,240
	out 0x18,R24
	.dbline 19
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 21
	in R24,0x16
	andi R24,240
	or R20,R24
	.dbline 23
	clr R21
	cpi R20,215
	ldi R30,0
	cpc R21,R30
	brne X1
	xjmp L69
X1:
	cpi R20,219
	ldi R30,0
	cpc R21,R30
	brne X2
	xjmp L65
X2:
	cpi R20,221
	ldi R30,0
	cpc R21,R30
	brne X3
	xjmp L61
X3:
	cpi R20,222
	ldi R30,0
	cpc R21,R30
	brne X4
	xjmp L57
X4:
	ldi R24,222
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L73
L72:
	cpi R20,119
	ldi R30,0
	cpc R21,R30
	brne X5
	xjmp L71
X5:
	cpi R20,123
	ldi R30,0
	cpc R21,R30
	brne X6
	xjmp L67
X6:
	cpi R20,125
	ldi R30,0
	cpc R21,R30
	brne X7
	xjmp L63
X7:
	cpi R20,126
	ldi R30,0
	cpc R21,R30
	brne X8
	xjmp L59
X8:
	cpi R20,119
	ldi R30,0
	cpc R21,R30
	brge X9
	xjmp L52
X9:
L74:
	cpi R20,183
	ldi R30,0
	cpc R21,R30
	brne X10
	xjmp L70
X10:
	cpi R20,187
	ldi R30,0
	cpc R21,R30
	brne X11
	xjmp L66
X11:
	cpi R20,189
	ldi R30,0
	cpc R21,R30
	breq L62
	cpi R20,190
	ldi R30,0
	cpc R21,R30
	breq L58
	xjmp L52
L73:
	cpi R20,231
	ldi R30,0
	cpc R21,R30
	breq L68
	cpi R20,235
	ldi R30,0
	cpc R21,R30
	breq L64
	cpi R20,237
	ldi R30,0
	cpc R21,R30
	breq L60
	cpi R20,238
	ldi R30,0
	cpc R21,R30
	breq L56
	cpi R20,231
	ldi R30,0
	cpc R21,R30
	brlt L52
L75:
	cpi R20,255
	ldi R30,0
	cpc R21,R30
	breq L55
	xjmp L52
X0:
	.dbline 24
L55:
	.dbline 25
	clr R16
	xjmp L51
L56:
	.dbline 26
	ldi R16,68
	xjmp L51
L57:
	.dbline 27
	ldi R16,35
	xjmp L51
L58:
	.dbline 28
	ldi R16,48
	xjmp L51
L59:
	.dbline 29
	ldi R16,42
	xjmp L51
L60:
	.dbline 30
	ldi R16,67
	xjmp L51
L61:
	.dbline 31
	ldi R16,57
	xjmp L51
L62:
	.dbline 32
	ldi R16,56
	xjmp L51
L63:
	.dbline 33
	ldi R16,55
	xjmp L51
L64:
	.dbline 34
	ldi R16,66
	xjmp L51
L65:
	.dbline 35
	ldi R16,54
	xjmp L51
L66:
	.dbline 36
	ldi R16,53
	xjmp L51
L67:
	.dbline 37
	ldi R16,52
	xjmp L51
L68:
	.dbline 38
	ldi R16,65
	xjmp L51
L69:
	.dbline 39
	ldi R16,51
	xjmp L51
L70:
	.dbline 40
	ldi R16,50
	xjmp L51
L71:
	.dbline 41
	ldi R16,49
	xjmp L51
L52:
	.dbline 42
	clr R16
	.dbline -2
L51:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master/key.h
L77:
	.blkb 1
	.area text(rom, con, rel)
	.dbfile D:\mojinpan\485\485_master/key.h
	.dbfunc e get_key _get_key fc
	.dbsym s j L77 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 L78
	.dbline 51
	.dbline 52
	clr R2
	sts L77,R2
	.dbline 53
	clr R16
	xjmp L76
L78:
	.dbline 55
	lds R2,L77
	tst R2
	brne L80
	.dbline 56
	.dbline 56
	sts L77,R20
	.dbline 57
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 58
	xcall _key_read
	mov R20,R16
	.dbline 59
	lds R2,L77
	cp R16,R2
	brne L82
	.dbline 59
	.dbline 59
	xjmp L76
L82:
	.dbline 60
L80:
	.dbline 61
	clr R16
	.dbline -2
L76:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master/key.h
_n::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master/key.h
	.dbfile D:\mojinpan\485\485_master\main.c
	.dbsym e n _n c
_flag_me::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
	.dbsym e flag_me _flag_me c
_flag_all::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
	.dbsym e flag_all _flag_all c
	.area vector(rom, abs)
	.org 120
	jmp _RXC_Int
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
	.area text(rom, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
	.dbfunc e RXC_Int _RXC_Int fV
;          ERROR -> R16
	.even
_RXC_Int::
	st -y,R2
	st -y,R16
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 37
	.dbline 38
	clr R16
	.dbline 40
	lds R2,155
	sbrc R2,3
	rjmp L87
	lds R2,155
	sbrs R2,4
	rjmp L85
L87:
	.dbline 40
	ldi R16,1
L85:
	.dbline 41
	ldi R24,<_inbox
	ldi R25,>_inbox
	lds R30,_n
	clr R31
	add R30,R24
	adc R31,R25
	lds R2,156
	std z+0,R2
	.dbline 42
	lds R24,_n
	subi R24,255    ; addi 1
	sts _n,R24
	.dbline 43
	tst R16
	breq L88
	.dbline 43
	clr R2
	sts _inbox,R2
L88:
	.dbline -2
L84:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R16,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r ERROR 16 c
	.dbend
	.dbfunc e int_485 _int_485 fV
	.even
_int_485::
	.dbline -1
	.dbline 50
	.dbline 54
	lds R24,_n
	cpi R24,10
	brne L91
	ldi R18,9
	ldi R16,<_inbox
	ldi R17,>_inbox
	xcall _crc8
	lds R2,_inbox+9
	cp R2,R16
	brne L91
	.dbline 55
	.dbline 56
	lds R24,_inbox
	cpi R24,1
	brne L94
	.dbline 56
	ldi R24,1
	sts _flag_me,R24
L94:
	.dbline 58
	lds R24,_inbox
	cpi R24,255
	brne L96
	.dbline 58
	ldi R24,1
	sts _flag_all,R24
L96:
	.dbline 61
L91:
	.dbline -2
L90:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e out_485 _out_485 fV
;              i -> R20
;            ptr -> R22,R23
;        address -> R20
	.even
_out_485::
	xcall push_gset2
	movw R22,R18
	mov R20,R16
	.dbline -1
	.dbline 68
	.dbline 69
	clr R2
	sts _n,R2
	.dbline 70
	sts _inbox,R2
	.dbline 75
	sts _send,R20
	.dbline 76
	ldi R20,1
	xjmp L102
L99:
	.dbline 76
	ldi R24,<_send
	ldi R25,>_send
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	movw R26,R22
	ld R2,X+
	movw R22,R26
	std z+0,R2
L100:
	.dbline 76
	inc R20
L102:
	.dbline 76
	cpi R20,9
	brlo L99
	.dbline 78
	ldi R18,9
	ldi R16,<_send
	ldi R17,>_send
	xcall _crc8
	sts _send+9,R16
	.dbline 80
	ldi R18,10
	ldi R16,<_send
	ldi R17,>_send
	xcall _usart_out
	.dbline 85
	ldi R16,15
	ldi R17,0
	xcall _delay_nms
	.dbline -2
L98:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r ptr 22 pc
	.dbsym r address 20 c
	.dbend
	.dbfunc e main _main fV
;            key -> y+2
;        address -> R10
;              j -> R20
;              i -> R12
	.even
_main::
	sbiw R28,10
	.dbline -1
	.dbline 91
	.dbline 91
	clr R20
	.dbline 92
	xcall _usart_init
	.dbline 93
	clr R2
	sts 155,R2
	.dbline 94
	xcall _LCD_init
	.dbline 95
	sei
	.dbline 96
	ldi R24,<L105
	ldi R25,>L105
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	.dbline 97
	ldi R24,<L106
	ldi R25,>L106
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_write_string
	xjmp L108
L107:
	.dbline 99
	.dbline 100
	xcall _int_485
	.dbline 104
	lds R2,_flag_me
	tst R2
	breq L110
	.dbline 105
	.dbline 107
	ldi R24,<_inbox
	ldi R25,>_inbox
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,4
	xcall _LCD_write_string
	.dbline 108
	ldi R24,<L112
	ldi R25,>L112
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,12
	xcall _LCD_write_string
	.dbline 109
	clr R2
	sts _n,R2
	.dbline 110
	sts _inbox,R2
	.dbline 111
	sts _flag_me,R2
	.dbline 113
L110:
	.dbline 115
	xcall _get_key
	mov R12,R16
	.dbline 116
	mov R22,R12
	clr R23
	cpi R22,65
	ldi R30,0
	cpc R23,R30
	breq L116
	cpi R22,66
	ldi R30,0
	cpc R23,R30
	breq L118
	cpi R22,67
	ldi R30,0
	cpc R23,R30
	breq L121
	cpi R22,68
	ldi R30,0
	cpc R23,R30
	breq L120
	xjmp L113
X12:
	.dbline 117
L116:
	.dbline 118
	.dbline 118
	ldi R24,2
	mov R10,R24
	.dbline 118
	ldi R24,<L117
	ldi R25,>L117
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,4
	xcall _LCD_write_string
	.dbline 118
	.dbline 119
	xjmp L114
L118:
	.dbline 120
	.dbline 120
	ldi R24,3
	mov R10,R24
	.dbline 120
	ldi R24,<L119
	ldi R25,>L119
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,4
	xcall _LCD_write_string
	.dbline 120
	.dbline 121
	xjmp L114
L120:
	.dbline 123
	.dbline 123
	movw R18,R28
	subi R18,254  ; offset = 2
	sbci R19,255
	mov R16,R10
	xcall _out_485
	.dbline 124
	ldi R24,<_send
	ldi R25,>_send
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,4
	xcall _LCD_write_string
	.dbline 125
	ldi R24,<L112
	ldi R25,>L112
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,12
	xcall _LCD_write_string
	.dbline 126
	.dbline 127
	xjmp L114
L121:
	.dbline 128
	.dbline 128
	clr R20
	.dbline 128
	ldi R24,<L122
	ldi R25,>L122
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,7
	xcall _LCD_write_string
	.dbline 128
	.dbline 129
	xjmp L114
L113:
	.dbline 131
	cpi R20,8
	brsh L123
	ldi R24,57
	cp R24,R12
	brlo L123
	mov R24,R12
	cpi R24,48
	brlo L123
	.dbline 131
	.dbline 131
	movw R24,R28
	adiw R24,2
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R12
	.dbline 131
	std y+0,R12
	clr R18
	mov R16,R20
	subi R16,249    ; addi 7
	xcall _LCD_write_char
	.dbline 131
	inc R20
	.dbline 131
L123:
	.dbline 133
L114:
	.dbline 139
L108:
	.dbline 98
	xjmp L107
X13:
	.dbline -2
L104:
	adiw R28,10
	.dbline 0 ; func end
	ret
	.dbsym l key 2 A[8:8]c
	.dbsym r address 10 c
	.dbsym r j 20 c
	.dbsym r i 12 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
_inbox::
	.blkb 10
	.dbsym e inbox _inbox A[10:10]c
_send::
	.blkb 10
	.dbsym e send _send A[10:10]c
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
L122:
	.blkb 10
	.area idata
	.byte 32,32,32,32,32,32,32,32,32,0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
L119:
	.blkb 4
	.area idata
	.byte 51,62,62,0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
L117:
	.blkb 4
	.area idata
	.byte 50,62,62,0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
L112:
	.blkb 6
	.area idata
	.byte 32,32,32,32,32,0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
L106:
	.blkb 5
	.area idata
	.byte 'i,'n,'t,58,0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c
L105:
	.blkb 5
	.area idata
	.byte 'o,'u,'t,58,0
	.area data(ram, con, rel)
	.dbfile D:\mojinpan\485\485_master\main.c

⌨️ 快捷键说明

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