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

📄 eeprom.s

📁 使用ICCAVR编写的AT24C16的读写函数
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbfunc e twi_read _twi_read fc
;             dd -> R20,R21
;           addr -> R22
	.even
_twi_read::
	xcall push_gset2
	movw R20,R18
	mov R22,R16
	.dbline -1
	.dbline 78
	.dbline 79
	ldi R24,2
	sts 112,R24
	.dbline 81
	ldi R24,164
	sts 116,R24
L56:
	.dbline 82
L57:
	.dbline 82
	lds R2,116
	sbrs R2,7
	rjmp L56
	.dbline 83
	lds R24,113
	andi R24,248
	cpi R24,8
	breq L59
	.dbline 83
	.dbline 84
	lds R16,113
	xcall _error
	.dbline 85
	clr R16
	xjmp L55
L59:
	.dbline 88
	ldi R24,160
	sts 115,R24
	.dbline 89
	ldi R24,132
	sts 116,R24
L61:
	.dbline 90
L62:
	.dbline 90
	lds R2,116
	sbrs R2,7
	rjmp L61
	.dbline 91
	lds R24,113
	andi R24,248
	cpi R24,24
	breq L64
	.dbline 91
	.dbline 92
	lds R16,113
	xcall _error
	.dbline 93
	clr R16
	xjmp L55
L64:
	.dbline 96
	sts 115,R22
	.dbline 97
	ldi R24,132
	sts 116,R24
L66:
	.dbline 98
L67:
	.dbline 98
	lds R2,116
	sbrs R2,7
	rjmp L66
	.dbline 99
	lds R24,113
	andi R24,248
	cpi R24,40
	breq L69
	.dbline 99
	.dbline 100
	lds R16,113
	xcall _error
	.dbline 101
	clr R16
	xjmp L55
L69:
	.dbline 105
	ldi R24,164
	sts 116,R24
L71:
	.dbline 106
L72:
	.dbline 106
	lds R2,116
	sbrs R2,7
	rjmp L71
	.dbline 107
	lds R24,113
	andi R24,248
	cpi R24,16
	breq L74
	.dbline 107
	.dbline 108
	lds R16,113
	xcall _error
	.dbline 109
	clr R16
	xjmp L55
L74:
	.dbline 113
	ldi R24,161
	sts 115,R24
	.dbline 114
	ldi R24,132
	sts 116,R24
L76:
	.dbline 115
L77:
	.dbline 115
	lds R2,116
	sbrs R2,7
	rjmp L76
	.dbline 116
	lds R24,113
	andi R24,248
	cpi R24,64
	breq L79
	.dbline 116
	.dbline 117
	lds R16,113
	xcall _error
	.dbline 118
	clr R16
	xjmp L55
L79:
	.dbline 121
	ldi R24,132
	sts 116,R24
L81:
	.dbline 122
L82:
	.dbline 122
	lds R2,116
	sbrs R2,7
	rjmp L81
	.dbline 123
	lds R24,113
	andi R24,248
	cpi R24,88
	breq L84
	.dbline 123
	.dbline 124
	lds R16,113
	xcall _error
	.dbline 125
	clr R16
	xjmp L55
L84:
	.dbline 127
	lds R2,115
	movw R30,R20
	std z+0,R2
	.dbline 130
	ldi R24,148
	sts 116,R24
	.dbline 131
	ldi R16,1
	.dbline -2
L55:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r dd 20 pc
	.dbsym r addr 22 c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom/eeprom_init.h
_time_buf::
	.blkb 2
	.area idata
	.byte 32,8
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom/eeprom_init.h
	.blkb 2
	.area idata
	.byte 3,33
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom/eeprom_init.h
	.blkb 2
	.area idata
	.byte 32,32
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom/eeprom_init.h
	.blkb 2
	.area idata
	.byte 'P,2
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom/eeprom_init.h
	.dbfile E:\icc\eeprom/DS1302.h
	.dbsym e time_buf _time_buf A[8:8]c
	.area text(rom, con, rel)
	.dbfile E:\icc\eeprom/DS1302.h
	.dbfunc e ds1302_write_byte _ds1302_write_byte fV
;              i -> R20
;              d -> R18
;           addr -> R16
	.even
_ds1302_write_byte::
	xcall push_gset1
	.dbline -1
	.dbline 32
	.dbline 35
	sbi 0x3,4
	.dbline 38
	sbi 0x2,3
	.dbline 39
	andi R16,254
	.dbline 40
	clr R20
	xjmp L90
L87:
	.dbline 40
	.dbline 41
	sbrs R16,0
	rjmp L91
	.dbline 41
	.dbline 42
	sbi 0x3,3
	.dbline 43
	xjmp L92
L91:
	.dbline 44
	.dbline 45
	cbi 0x3,3
	.dbline 46
L92:
	.dbline 47
	sbi 0x3,2
	.dbline 48
	cbi 0x3,2
	.dbline 49
	lsr R16
	.dbline 50
L88:
	.dbline 40
	inc R20
L90:
	.dbline 40
	cpi R20,8
	brlo L87
	.dbline 53
	sbi 0x2,3
	.dbline 54
	clr R20
	xjmp L96
L93:
	.dbline 54
	.dbline 55
	sbrs R18,0
	rjmp L97
	.dbline 55
	.dbline 56
	sbi 0x3,3
	.dbline 57
	xjmp L98
L97:
	.dbline 58
	.dbline 59
	cbi 0x3,3
	.dbline 60
L98:
	.dbline 61
	sbi 0x3,2
	.dbline 62
	cbi 0x3,2
	.dbline 63
	lsr R18
	.dbline 64
L94:
	.dbline 54
	inc R20
L96:
	.dbline 54
	cpi R20,8
	brlo L93
	.dbline 65
	cbi 0x3,4
	.dbline -2
L86:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r d 18 c
	.dbsym r addr 16 c
	.dbend
	.dbfunc e ds1302_read_byte _ds1302_read_byte fc
;           temp -> R20
;              i -> R22
;           addr -> R16
	.even
_ds1302_read_byte::
	xcall push_gset2
	.dbline -1
	.dbline 69
	.dbline 73
	sbi 0x3,4
	.dbline 76
	sbi 0x2,3
	.dbline 77
	ori R16,1
	.dbline 78
	clr R22
	xjmp L103
L100:
	.dbline 78
	.dbline 79
	sbrs R16,0
	rjmp L104
	.dbline 79
	.dbline 80
	sbi 0x3,3
	.dbline 81
	xjmp L105
L104:
	.dbline 82
	.dbline 83
	cbi 0x3,3
	.dbline 84
L105:
	.dbline 85
	sbi 0x3,2
	.dbline 86
	cbi 0x3,2
	.dbline 87
	lsr R16
	.dbline 88
L101:
	.dbline 78
	inc R22
L103:
	.dbline 78
	cpi R22,8
	brlo L100
	.dbline 91
	cbi 0x2,3
	.dbline 92
	clr R22
	xjmp L109
L106:
	.dbline 92
	.dbline 93
	lsr R20
	.dbline 94
	sbis 0x1,3
	rjmp L110
	.dbline 94
	.dbline 95
	ori R20,128
	.dbline 96
	xjmp L111
L110:
	.dbline 97
	.dbline 98
	andi R20,127
	.dbline 99
L111:
	.dbline 100
	sbi 0x3,2
	.dbline 101
	cbi 0x3,2
	.dbline 102
L107:
	.dbline 92
	inc R22
L109:
	.dbline 92
	cpi R22,8
	brlo L106
	.dbline 104
	cbi 0x3,4
	.dbline 105
	mov R16,R20
	.dbline -2
L99:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r i 22 c
	.dbsym r addr 16 c
	.dbend
	.dbfunc e ds1302_write_time _ds1302_write_time fV
	.even
_ds1302_write_time::
	.dbline -1
	.dbline 109
	.dbline 111
	clr R18
	ldi R16,142
	xcall _ds1302_write_byte
	.dbline 112
	ldi R18,128
	ldi R16,128
	xcall _ds1302_write_byte
	.dbline 114
	lds R18,_time_buf+1
	ldi R16,140
	xcall _ds1302_write_byte
	.dbline 115
	lds R18,_time_buf+2
	ldi R16,136
	xcall _ds1302_write_byte
	.dbline 116
	lds R18,_time_buf+3
	ldi R16,134
	xcall _ds1302_write_byte
	.dbline 117
	lds R18,_time_buf+7
	ldi R16,138
	xcall _ds1302_write_byte
	.dbline 118
	lds R18,_time_buf+4
	ldi R16,132
	xcall _ds1302_write_byte
	.dbline 119
	lds R18,_time_buf+5
	ldi R16,130
	xcall _ds1302_write_byte
	.dbline 120
	lds R18,_time_buf+6
	ldi R16,128
	xcall _ds1302_write_byte
	.dbline 121
	lds R18,_time_buf+7
	ldi R16,138
	xcall _ds1302_write_byte
	.dbline 122
	ldi R18,128
	ldi R16,142
	xcall _ds1302_write_byte
	.dbline -2
L112:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ds1302_read_time _ds1302_read_time fV
	.even
_ds1302_read_time::
	.dbline -1
	.dbline 126
	.dbline 128
	ldi R16,140
	xcall _ds1302_read_byte
	sts _time_buf+1,R16
	.dbline 129
	ldi R16,136
	xcall _ds1302_read_byte
	sts _time_buf+2,R16
	.dbline 130
	ldi R16,134
	xcall _ds1302_read_byte
	sts _time_buf+3,R16
	.dbline 131
	ldi R16,132
	xcall _ds1302_read_byte
	sts _time_buf+4,R16
	.dbline 132
	ldi R16,130
	xcall _ds1302_read_byte
	sts _time_buf+5,R16
	.dbline 133
	ldi R16,128
	xcall _ds1302_read_byte
	mov R24,R16
	andi R24,127
	sts _time_buf+6,R24
	.dbline 134
	ldi R16,138
	xcall _ds1302_read_byte
	sts _time_buf+7,R16
	.dbline -2
L121:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ds1302_init _ds1302_init fV
	.even
_ds1302_init::
	.dbline -1
	.dbline 138
	.dbline 140
	cbi 0x3,4
	.dbline 141
	cbi 0x3,2
	.dbline 142
	sbi 0x2,4
	.dbline 143
	sbi 0x2,2
	.dbline -2
L129:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfile E:\icc\eeprom\eeprom.c
	.dbfunc e delay_ms _delay_ms fV
;              a -> R20
;              b -> R22
;              i -> R16
	.even
_delay_ms::
	xcall push_gset2
	.dbline -1
	.dbline 14
	.dbline 16
	ldi R20,1
	xjmp L134
L131:
	.dbline 17
	.dbline 18
	ldi R22,1
	xjmp L138
L135:
	.dbline 19
	.dbline 20
	.dbline 21
L136:
	.dbline 18
	inc R22
L138:
	.dbline 18
	tst R22
	brne L135
	.dbline 22
L132:
	.dbline 16
	inc R20
L134:
	.dbline 16
	cp R20,R16
	brlo L131
	.dbline -2
L130:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 c
	.dbsym r b 22 c
	.dbsym r i 16 c
	.dbend
	.dbfunc e main _main fV
;           temp -> y+0
;      time_read -> R20
;      send_flag -> R22
;              i -> R10
	.even
_main::
	sbiw R28,1
	.dbline -1
	.dbline 25
	.dbline 28
	clr R22
	.dbline 28
	ldi R20,6
	.dbline 29
	ldi R24,255
	out 0x1b,R24
	.dbline 30
	clr R2
	out 0x1a,R2
	.dbline 31
	ldi R24,240
	out 0x18,R24
	.dbline 32
	ldi R24,255
	out 0x17,R24
	.dbline 33
	out 0x15,R24
	.dbline 34
	out 0x14,R2
	.dbline 35
	out 0x12,R24
	.dbline 36
	out 0x11,R2
	.dbline 37
	xcall _ds1302_init
	.dbline 38
	xcall _ds1302_write_time
	.dbline 39
	xcall _disp_init
	.dbline 40
	clr R10
	xjmp L143
L140:
	.dbline 41
	.dbline 42
	mov R18,R10
	mov R16,R10
	subi R16,0    ; addi 256
	xcall _twi_write
	.dbline 43
	ldi R16,4095
	ldi R17,15
	xcall _delay
	.dbline 44
L141:
	.dbline 40
	inc R10
L143:
	.dbline 40
	mov R24,R10
	cpi R24,20
	brlo L140
	.dbline 53
	ldi R16,65535
	ldi R17,255
	xcall _delay
	.dbline 54
	ldi R18,<L144
	ldi R19,>L144
	ldi R16,128
	xcall _disp_word
	.dbline 55
	ldi R18,<L145
	ldi R19,>L145
	ldi R16,144
	xcall _disp_word
	.dbline 56
	ldi R18,<L146
	ldi R19,>L146
	ldi R16,136
	xcall _disp_word
	.dbline 57
	clr R10
	xjmp L148
L147:
	.dbline 60
	.dbline 61
	xcall _ds1302_read_time
	.dbline 62
	lds R18,_time_buf+6
	ldi R16,141
	xcall _disp_number16
	.dbline 63
	lds R2,_time_buf+6
	tst R2
	brne L151
	.dbline 64
	.dbline 65
	ldi R22,1
	.dbline 66
	lds R2,_time_buf+5
	cp R2,R20
	brne L154
	.dbline 67
	clr R22
L154:
	.dbline 68
L151:
	.dbline 69
	cpi R22,1
	brne L157
	.dbline 70
	.dbline 71
	movw R18,R28
	mov R16,R10
	subi R16,0    ; addi 256
	xcall _twi_read
	.dbline 72
	inc R10
	.dbline 73
	clr R22
	.dbline 74
	lds R20,_time_buf+5
	.dbline 75
	ldd R18,y+0
	ldi R16,152
	xcall _disp_number10
	.dbline 76
L157:
	.dbline 78
L148:
	.dbline 59
	xjmp L147
X3:
	.dbline -2
L139:
	adiw R28,1
	.dbline 0 ; func end
	ret
	.dbsym l temp 0 c
	.dbsym r time_read 20 c
	.dbsym r send_flag 22 c
	.dbsym r i 10 c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom\eeprom.c
L146:
	.blkb 8
	.area idata
	.byte 'A,'T,50,52,'C,49,54,0
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom\eeprom.c
L145:
	.blkb 15
	.area idata
	.byte 50,48,48,56,196,234,49,48,212,194,48,57,200,213,0
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom\eeprom.c
L144:
	.blkb 13
	.area idata
	.byte 200,206,206,241,163,186,'E,'E,'P,'R,'O,'M,0
	.area data(ram, con, rel)
	.dbfile E:\icc\eeprom\eeprom.c

⌨️ 快捷键说明

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