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

📄 read-byte.s

📁 16个单片机c语言实验程序
💻 S
字号:
	.module read-byte.c
	.area text(rom, con, rel)
	.dbfile D:\16实验程序\I2C读写24C04\读一个字节\read-byte.c
	.dbfile D:\16实验程序\I2C读写24C04\读一个字节\i2c.h
	.dbfunc e i2c_init _i2c_init fV
	.even
_i2c_init::
	.dbline -1
	.dbline 5
; //读24c04的一个字节程序
; #include<iom16v.h>
; #define uchar unsigned char 
; #define uint unsigned int 
; #include"i2c.h"
	.dbline 6
; 
	cbi 0x12,7
	.dbline 7
; //读一个字节
	ldi R24,1
	out 0x0,R24
	.dbline 8
; main()
	out 0x1,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e i2c_start _i2c_start fV
	.even
_i2c_start::
	.dbline -1
	.dbline 14
; {
; DDRD=0xff;
; PORTD=0xff;
; i2c_init();  //初始化
; PORTD=~i2c_rebyte(0x12);  //读出地址0x12的字节
; }
	.dbline 15
	ldi R24,164
	out 0x36,R24
L3:
	.dbline 16
L4:
	.dbline 16
	in R2,0x36
	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
	.dbline 23
	out 0x3,R16
	.dbline 24
	ldi R24,132
	out 0x36,R24
L7:
	.dbline 25
L8:
	.dbline 25
	in R2,0x36
	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
	.dbline 33
	ldi R24,132
	out 0x36,R24
L11:
	.dbline 34
L12:
	.dbline 34
	in R2,0x36
	sbrs R2,7
	rjmp L11
X2:
	.dbline 35
	in R16,0x3
	.dbline 36
	.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
	.dbline 43
	ldi R24,196
	out 0x36,R24
L15:
	.dbline 44
L16:
	.dbline 44
	in R2,0x36
	sbrs R2,7
	rjmp L15
X3:
	.dbline 45
	in R16,0x3
	.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
	out 0x36,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
	in R24,0x1
	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
	in R24,0x1
	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
	in R24,0x1
	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
	in R24,0x1
	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 D:\16实验程序\I2C读写24C04\读一个字节\read-byte.c
	.dbfunc e main _main fI
	.even
_main::
	.dbline -1
	.dbline 9
	.dbline 10
	ldi R24,255
	out 0x11,R24
	.dbline 11
	out 0x12,R24
	.dbline 12
	xcall _i2c_init
	.dbline 13
	ldi R16,18
	xcall _i2c_rebyte
	mov R2,R16
	com R2
	out 0x12,R2
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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