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

📄 write-byte.s

📁 16个单片机c语言实验程序
💻 S
字号:
	.module write-byte.c
	.area text(rom, con, rel)
	.dbfile D:\16实验程序\I2C读写24C04\写一个字节\write-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
; 
	sbi 0x14,6
	.dbline 7
; 
	cbi 0x15,6
	.dbline 8
; //写一个字节
	ldi R24,1
	out 0x0,R24
	.dbline 9
; void 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
; {
; i2c_init();  //初始化
; i2c_wrbyte(0x07,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 21
	.dbline 22
	out 0x3,R16
	.dbline 23
	ldi R24,132
	out 0x36,R24
L7:
	.dbline 24
L8:
	.dbline 24
	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 29
	.dbline 31
	ldi R24,132
	out 0x36,R24
L11:
	.dbline 32
L12:
	.dbline 32
	in R2,0x36
	sbrs R2,7
	rjmp L11
X2:
	.dbline 33
	in R16,0x3
	.dbline 34
	.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 39
	.dbline 41
	ldi R24,196
	out 0x36,R24
L15:
	.dbline 42
L16:
	.dbline 42
	in R2,0x36
	sbrs R2,7
	rjmp L15
X3:
	.dbline 43
	in R16,0x3
	.dbline 44
	.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 49
	.dbline 50
	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 55
L20:
	.dbline 57
	.dbline 58
	xcall _i2c_start
	.dbline 59
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 60
L21:
	.dbline 61
	in R24,0x1
	andi R24,248
	cpi R24,24
	brne L20
X4:
	.dbline 62
	mov R16,R12
	xcall _i2c_wrdata
	.dbline 63
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 64
	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 72
L24:
	.dbline 75
	.dbline 76
	xcall _i2c_start
	.dbline 77
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 78
L25:
	.dbline 79
	in R24,0x1
	andi R24,248
	cpi R24,24
	brne L24
X5:
	.dbline 81
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 82
	clr R10
	xjmp L30
L27:
	.dbline 83
	.dbline 84
	movw R30,R12
	ld R16,Z+
	movw R12,R30
	xcall _i2c_wrdata
	.dbline 85
L28:
	.dbline 82
	inc R10
L30:
	.dbline 82
	ldd R0,y+4
	cp R10,R0
	brlo L27
X6:
	.dbline 86
	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 91
L32:
	.dbline 94
	.dbline 95
	xcall _i2c_start
	.dbline 96
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 97
L33:
	.dbline 98
	in R24,0x1
	andi R24,248
	cpi R24,24
	brne L32
X7:
	.dbline 100
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 101
	xcall _i2c_start
	.dbline 102
	ldi R16,161
	xcall _i2c_wrdata
	.dbline 103
	xcall _i2c_redata
	mov R10,R16
	.dbline 104
	xcall _i2c_stop
	.dbline 105
	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 113
L36:
	.dbline 116
	.dbline 117
	xcall _i2c_start
	.dbline 118
	ldi R16,160
	xcall _i2c_wrdata
	.dbline 119
L37:
	.dbline 120
	in R24,0x1
	andi R24,248
	cpi R24,24
	brne L36
X8:
	.dbline 122
	mov R16,R10
	xcall _i2c_wrdata
	.dbline 123
	xcall _i2c_start
	.dbline 124
	ldi R16,161
	xcall _i2c_wrdata
	.dbline 125
	clr R10
	xjmp L42
L39:
	.dbline 126
	.dbline 127
	xcall _i2c_redataack
	movw R30,R20
	std z+0,R16
	.dbline 128
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 129
L40:
	.dbline 125
	inc R10
L42:
	.dbline 125
	ldd R24,y+4
	subi R24,1
	cp R10,R24
	brlo L39
X9:
	.dbline 130
	xcall _i2c_redata
	movw R30,R20
	std z+0,R16
	.dbline 131
	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\写一个字节\write-byte.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 10
	.dbline 11
	xcall _i2c_init
	.dbline 12
	ldi R18,18
	ldi R16,7
	xcall _i2c_wrbyte
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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