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

📄 read_page.s

📁 这个程序是用atmega128芯片对24c04进行读写的例子
💻 S
字号:
	.module read_page.c
	.area text(rom, con, rel)
	.dbfile E:\产品\开发板\mega128-board\实验程序\I2C读写24C04\连续读\read_page.c
	.dbfile E:\产品\开发板\mega128-board\实验程序\I2C读写24C04\连续读\i2c.h
	.dbfunc e i2c_init _i2c_init fV
	.even
_i2c_init::
	.dbline -1
	.dbline 5
; #include<iom128v.h>
; #define uchar unsigned char 
; #define uint unsigned int 
; #include"i2c.h"
; uchar aa[16];
	.dbline 6
; 
	cbi 0x12,7
	.dbline 7
; //短延时函数
	ldi R24,1
	sts 112,R24
	.dbline 8
; void s_ms(unsigned int t)
	sts 113,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e i2c_start _i2c_start fV
	.even
_i2c_start::
	.dbline -1
	.dbline 14
; {
;     unsigned int i ;
;     for(;t>=1;t--)
;     {
;     }
; }
	.dbline 15
; 
	ldi R24,164
	sts 116,R24
L3:
	.dbline 16
; //写一个字节
L4:
	.dbline 16
	lds R2,116
	sbrs R2,7
	rjmp L3
X0:
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e i2c_wrdata _i2c_wrdata fV
;       i2c_data -> R16
	.even
_i2c_wrdata::
	.dbline -1
	.dbline 22
; main()
; {
; uchar i;
; DDRA=0xff;
; PORTA=0XFF;
; i2c_init();  //初始化
	.dbline 23
; i2c_rese(aa,0x00,16);
	sts 115,R16
	.dbline 24
; for(i=0;i<16;i++)
	ldi R24,132
	sts 116,R24
L7:
	.dbline 25
;    {
L8:
	.dbline 25
	lds R2,116
	sbrs R2,7
	rjmp L7
X1:
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbsym r i2c_data 16 c
	.dbend
	.dbfunc e i2c_redata _i2c_redata fc
;       i2c_data -> R16
	.even
_i2c_redata::
	.dbline -1
	.dbline 31
;     PORTA=~aa[i];
;     s_ms(60000);
; 	s_ms(60000);
; 	s_ms(60000);
; 	s_ms(60000);
; 	s_ms(60000);
	.dbline 33
; 	s_ms(60000);
; 	s_ms(60000);
	ldi R24,132
	sts 116,R24
L11:
	.dbline 34
; 	s_ms(60000);
L12:
	.dbline 34
	lds R2,116
	sbrs R2,7
	rjmp L11
X2:
	.dbline 35
; 	s_ms(60000);
	lds R16,115
	.dbline 36
; 	s_ms(60000);
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbsym r i2c_data 16 c
	.dbend
	.dbfunc e i2c_redataack _i2c_redataack fc
;       i2c_data -> R16
	.even
_i2c_redataack::
	.dbline -1
	.dbline 41
; 	s_ms(60000);
; 	s_ms(60000);
;    }
; }
	.dbline 43
	ldi R24,196
	sts 116,R24
L15:
	.dbline 44
L16:
	.dbline 44
	lds R2,116
	sbrs R2,7
	rjmp L15
X3:
	.dbline 45
	lds R16,115
	.dbline 46
	.dbline -2
L14:
	.dbline 0 ; func end
	ret
	.dbsym r i2c_data 16 c
	.dbend
	.dbfunc e i2c_stop _i2c_stop fV
	.even
_i2c_stop::
	.dbline -1
	.dbline 53
	.dbline 54
	ldi R24,148
	sts 116,R24
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e i2c_wrbyte _i2c_wrbyte fV
;        i2c_add -> R12
;       i2c_data -> R10
	.even
_i2c_wrbyte::
	st -y,R10
	st -y,R12
	mov R12,R18
	mov R10,R16
	.dbline -1
	.dbline 59
L20:
	.dbline 61
	.dbline 62
	xcall _i2c_start
	.dbline 63
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 64
L21:
	.dbline 65
	lds R24,113
	andi R24,248
	cpi R24,24
	brne L20
X4:
	.dbline 67
	mov R16,R12
	xcall _i2c_wrdata
	.dbline 68
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 69
	xcall _i2c_stop
	.dbline -2
L19:
	.dbline 0 ; func end
	ld R12,y+
	ld R10,y+
	ret
	.dbsym r i2c_add 12 c
	.dbsym r i2c_data 10 c
	.dbend
	.dbfunc e i2c_wrpage _i2c_wrpage fV
;              i -> R10
;        i2c_nub -> y+4
;        i2c_add -> R10
;       i2c_data -> R12,R13
	.even
_i2c_wrpage::
	xcall push_xgset003C
	mov R10,R18
	movw R12,R16
	.dbline -1
	.dbline 77
L24:
	.dbline 80
	.dbline 81
	xcall _i2c_start
	.dbline 82
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 83
L25:
	.dbline 84
	lds R24,113
	andi R24,248
	cpi R24,24
	brne L24
X5:
	.dbline 86
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 87
	clr R10
	xjmp L30
L27:
	.dbline 88
	.dbline 89
	movw R30,R12
	ld R16,Z+
	movw R12,R30
	xcall _i2c_wrdata
	.dbline 90
L28:
	.dbline 87
	inc R10
L30:
	.dbline 87
	ldd R0,y+4
	cp R10,R0
	brlo L27
X6:
	.dbline 91
	xcall _i2c_stop
	.dbline -2
L23:
	.dbline 0 ; func end
	xjmp pop_xgset003C
	.dbsym r i 10 c
	.dbsym l i2c_nub 4 c
	.dbsym r i2c_add 10 c
	.dbsym r i2c_data 12 pc
	.dbend
	.dbfunc e i2c_rebyte _i2c_rebyte fc
;       i2c_data -> R10
;        i2c_add -> R10
	.even
_i2c_rebyte::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 96
L32:
	.dbline 99
	.dbline 100
	xcall _i2c_start
	.dbline 101
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 102
L33:
	.dbline 103
	lds R24,113
	andi R24,248
	cpi R24,24
	brne L32
X7:
	.dbline 105
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 106
	xcall _i2c_start
	.dbline 107
	ldi R16,161
	xcall _i2c_wrdata
	.dbline 108
	xcall _i2c_redata
	mov R10,R16
	.dbline 109
	xcall _i2c_stop
	.dbline 110
	mov R16,R10
	.dbline -2
L31:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r i2c_data 10 c
	.dbsym r i2c_add 10 c
	.dbend
	.dbfunc e i2c_rese _i2c_rese fV
;              i -> R10
;        i2c_nub -> y+4
;        i2c_add -> R10
;       i2c_data -> R20,R21
	.even
_i2c_rese::
	xcall push_xgset300C
	mov R10,R18
	movw R20,R16
	.dbline -1
	.dbline 119
L36:
	.dbline 122
	.dbline 123
	xcall _i2c_start
	.dbline 124
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 125
L37:
	.dbline 126
	lds R24,113
	andi R24,248
	cpi R24,24
	brne L36
X8:
	.dbline 128
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 129
	xcall _i2c_start
	.dbline 130
	ldi R16,161
	xcall _i2c_wrdata
	.dbline 131
	clr R10
	xjmp L42
L39:
	.dbline 132
	.dbline 133
	xcall _i2c_redataack
	movw R30,R20
	std z+0,R16
	.dbline 134
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 135
L40:
	.dbline 131
	inc R10
L42:
	.dbline 131
	ldd R24,y+4
	subi R24,1
	cp R10,R24
	brlo L39
X9:
	.dbline 136
	xcall _i2c_redata
	movw R30,R20
	std z+0,R16
	.dbline 137
	xcall _i2c_stop
	.dbline -2
L35:
	.dbline 0 ; func end
	xjmp pop_xgset300C
	.dbsym r i 10 c
	.dbsym l i2c_nub 4 c
	.dbsym r i2c_add 10 c
	.dbsym r i2c_data 20 pc
	.dbend
	.dbfile E:\产品\开发板\mega128-board\实验程序\I2C读写24C04\连续读\read_page.c
	.dbfunc e s_ms _s_ms fV
;              i -> <dead>
;              t -> R16,R17
	.even
_s_ms::
	.dbline -1
	.dbline 9
	.dbline 11
	xjmp L47
L44:
	.dbline 12
	.dbline 13
L45:
	.dbline 11
	subi R16,1
	sbci R17,0
L47:
	.dbline 11
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	brsh L44
X10:
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 i
	.dbsym r t 16 i
	.dbend
	.dbfunc e main _main fI
;              i -> R20
	.even
_main::
	sbiw R28,1
	.dbline -1
	.dbline 18
	.dbline 20
	ldi R24,255
	out 0x1a,R24
	.dbline 21
	out 0x1b,R24
	.dbline 22
	xcall _i2c_init
	.dbline 23
	ldi R24,16
	std y+0,R24
	clr R18
	ldi R16,<_aa
	ldi R17,>_aa
	xcall _i2c_rese
	.dbline 24
	clr R20
	xjmp L52
L49:
	.dbline 25
	.dbline 26
	ldi R24,<_aa
	ldi R25,>_aa
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	com R2
	out 0x1b,R2
	.dbline 27
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 28
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 29
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 30
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 31
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 32
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 33
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 34
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 35
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 36
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 37
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 38
	ldi R16,60000
	ldi R17,234
	xcall _s_ms
	.dbline 39
L50:
	.dbline 24
	inc R20
L52:
	.dbline 24
	cpi R20,16
	brlo L49
X11:
	.dbline -2
L48:
	.dbline 0 ; func end
	adiw R28,1
	ret
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\产品\开发板\mega128-board\实验程序\I2C读写24C04\连续读\read_page.c
_aa::
	.blkb 16
	.dbsym e aa _aa A[16:16]c

⌨️ 快捷键说明

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