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

📄 m16i2crw24c02.s

📁 AVR程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R16,1
	.dbline -2
L57:
	.dbline 0 ; func end
	ret
	.dbsym r pRdDat 16 pc
	.dbend
	.dbfunc e I2C_Write _I2C_Write fc
;            dat -> y+4
;        wordAdr -> R20
;         wrDAdr -> R22,R23
	.even
_I2C_Write::
	xcall push_gset2
	mov R20,R18
	movw R22,R16
	.dbline -1
	.dbline 276
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 277
; }
	xcall _I2C_Start
	tst R16
	brne L64
	.dbline 278
; }
	clr R16
	xjmp L63
L64:
	.dbline 280
; }
; }
	movw R16,R22
	xcall _I2C_SendWrDAdr_
	tst R16
	brne L66
	.dbline 281
; }
	clr R16
	xjmp L63
L66:
	.dbline 283
; }
; }
	mov R16,R20
	xcall _I2C_SendDat
	tst R16
	brne L68
	.dbline 284
; }
	clr R16
	xjmp L63
L68:
	.dbline 286
; }
; }
	ldd R16,y+4
	xcall _I2C_SendDat
	tst R16
	brne L70
	.dbline 287
; }
	clr R16
	xjmp L63
L70:
	.dbline 289
; }
; }
	ldi R24,148
	out 0x36,R24
	.dbline 291
; }
; }
	ldi R16,1
	.dbline -2
L63:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l dat 4 c
	.dbsym r wordAdr 20 c
	.dbsym r wrDAdr 22 i
	.dbend
	.dbfunc e I2C_Write_ _I2C_Write_ fc
;              i -> R20
;            num -> R22
;         pWrDat -> R10,R11
;        wordAdr -> R20
;         wrDAdr -> R12,R13
	.even
_I2C_Write_::
	xcall push_gset4
	mov R20,R18
	movw R12,R16
	ldd R10,y+8
	ldd R11,y+9
	ldd R22,y+10
	.dbline -1
	.dbline 305
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 308
; }
; }
; }
	xcall _I2C_Start
	tst R16
	brne L73
	.dbline 309
; }
	clr R16
	xjmp L72
L73:
	.dbline 311
; }
; }
	movw R16,R12
	xcall _I2C_SendWrDAdr_
	tst R16
	brne L75
	.dbline 312
; }
	clr R16
	xjmp L72
L75:
	.dbline 314
; }
; }
	mov R16,R20
	xcall _I2C_SendDat
	tst R16
	brne L77
	.dbline 315
; }
	clr R16
	xjmp L72
L77:
	.dbline 316
; }
	clr R20
	xjmp L82
L79:
	.dbline 317
; }
	.dbline 318
; }
	mov R30,R20
	clr R31
	add R30,R10
	adc R31,R11
	ldd R16,z+0
	xcall _I2C_SendDat
	tst R16
	brne L83
	.dbline 319
; }
	clr R16
	xjmp L72
L83:
	.dbline 320
L80:
	.dbline 316
	inc R20
L82:
	.dbline 316
	cp R20,R22
	brlo L79
	.dbline 322
; }
; }
; }
	ldi R24,148
	out 0x36,R24
	.dbline 324
; }
; }
	ldi R16,1
	.dbline -2
L72:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r num 22 c
	.dbsym r pWrDat 10 pc
	.dbsym r wordAdr 20 c
	.dbsym r wrDAdr 12 i
	.dbend
	.dbfunc e I2C_Read _I2C_Read fc
;         pRdDat -> y+6
;         rdDAdr -> y+4
;        wordAdr -> R20
;         wrDAdr -> R22,R23
	.even
_I2C_Read::
	xcall push_gset2
	mov R20,R18
	movw R22,R16
	.dbline -1
	.dbline 339
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 340
; }
	xcall _I2C_Start
	tst R16
	brne L86
	.dbline 341
; }
	clr R16
	xjmp L85
L86:
	.dbline 343
; }
; }
	movw R16,R22
	xcall _I2C_SendWrDAdr_
	tst R16
	brne L88
	.dbline 344
; }
	clr R16
	xjmp L85
L88:
	.dbline 346
; }
; }
	mov R16,R20
	xcall _I2C_SendDat
	tst R16
	brne L90
	.dbline 347
; }
	clr R16
	xjmp L85
L90:
	.dbline 349
; }
; }
	xcall _I2C_Restart
	tst R16
	brne L92
	.dbline 350
; }
	clr R16
	xjmp L85
L92:
	.dbline 352
; }
; }
	ldd R16,y+4
	xcall _I2C_SendRdDAdr
	tst R16
	brne L94
	.dbline 353
; }
	clr R16
	xjmp L85
L94:
	.dbline 355
; }
; }
	ldd R16,y+6
	ldd R17,y+7
	xcall _I2C_RcvNAckDat
	tst R16
	brne L96
	.dbline 356
; }
	clr R16
	xjmp L85
L96:
	.dbline 358
; }
; }
	ldi R24,148
	out 0x36,R24
	.dbline 360
; }
; }
	ldi R16,1
	.dbline -2
L85:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l pRdDat 6 pc
	.dbsym l rdDAdr 4 c
	.dbsym r wordAdr 20 c
	.dbsym r wrDAdr 22 i
	.dbend
	.dbfunc e I2C_Read_ _I2C_Read_ fc
;              i -> R20
;            num -> R22
;         pRdDat -> R10,R11
;         rdDAdr -> y+8
;        wordAdr -> R20
;         wrDAdr -> R12,R13
	.even
_I2C_Read_::
	xcall push_gset4
	mov R20,R18
	movw R12,R16
	ldd R10,y+10
	ldd R11,y+11
	ldd R22,y+12
	.dbline -1
	.dbline 376
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 379
; }
; }
; }
	xcall _I2C_Start
	tst R16
	brne L99
	.dbline 380
; }
	clr R16
	xjmp L98
L99:
	.dbline 382
; }
; }
	movw R16,R12
	xcall _I2C_SendWrDAdr_
	tst R16
	brne L101
	.dbline 383
; }
	clr R16
	xjmp L98
L101:
	.dbline 385
; }
; }
	mov R16,R20
	xcall _I2C_SendDat
	tst R16
	brne L103
	.dbline 386
; }
	clr R16
	xjmp L98
L103:
	.dbline 388
; }
; }
	xcall _I2C_Restart
	tst R16
	brne L105
	.dbline 389
; }
	clr R16
	xjmp L98
L105:
	.dbline 391
; }
; }
	ldd R16,y+8
	xcall _I2C_SendRdDAdr
	tst R16
	brne L107
	.dbline 392
; }
	clr R16
	xjmp L98
L107:
	.dbline 394
; }
; }
	clr R20
	xjmp L112
L109:
	.dbline 395
; }
	mov R16,R20
	clr R17
	add R16,R10
	adc R17,R11
	xcall _I2C_RcvAckDat
	tst R16
	brne L113
	.dbline 396
; }
	clr R16
	xjmp L98
L113:
L110:
	.dbline 394
	inc R20
L112:
	.dbline 394
	mov R24,R22
	subi R24,1
	cp R20,R24
	brlo L109
	.dbline 398
; }
; }
	mov R16,R20
	clr R17
	add R16,R10
	adc R17,R11
	xcall _I2C_RcvNAckDat
	tst R16
	brne L115
	.dbline 399
; }
	clr R16
	xjmp L98
L115:
	.dbline 401
; }
; }
	ldi R24,148
	out 0x36,R24
	.dbline 403
; }
; }
	ldi R16,1
	.dbline -2
L98:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r num 22 c
	.dbsym r pRdDat 10 pc
	.dbsym l rdDAdr 8 c
	.dbsym r wordAdr 20 c
	.dbsym r wrDAdr 12 i
	.dbend
	.dbfile F:\job\M16学习板\I2C读写24C02(实验十)\M16I2CRW24C02.c
	.dbfunc e Uart0Init _Uart0Init fV
	.even
_Uart0Init::
	.dbline -1
	.dbline 29
	.dbline 30
	clr R2
	out 0xa,R2
	.dbline 31
	ldi R24,2
	out 0xb,R24
	.dbline 32
	ldi R24,134
	out 0x20,R24
	.dbline 33
	ldi R24,12
	out 0x9,R24
	.dbline 34
	ldi R24,152
	out 0xa,R24
	.dbline -2
L117:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 44
	jmp _UartRecvData
	.area text(rom, con, rel)
	.dbfile F:\job\M16学习板\I2C读写24C02(实验十)\M16I2CRW24C02.c
	.dbfunc e UartRecvData _UartRecvData fV
;          temp1 -> R16
	.even
_UartRecvData::
	st -y,R16
	in R16,0x3f
	st -y,R16
	.dbline -1
	.dbline 44
	.dbline 46
	in R16,0xc
	.dbline -2
L118:
	ld R16,y+
	out 0x3f,R16
	ld R16,y+
	.dbline 0 ; func end
	reti
	.dbsym r temp1 16 c
	.dbend
	.dbfunc e UartTransmitData _UartTransmitData fV
;              i -> R20,R21
;            len -> R18,R19
;       SendData -> R16,R17
	.even
_UartTransmitData::
	xcall push_gset1
	.dbline -1
	.dbline 56
	.dbline 58
	clr R20
	clr R21
	xjmp L123
X0:
	.dbline 59
L124:
	.dbline 60
L125:
	.dbline 60
	sbis 0xb,5
	rjmp L124
	.dbline 61
	movw R30,R20
	add R30,R16
	adc R31,R17
	ldd R2,z+0
	out 0xc,R2
	.dbline 62
L121:
	.dbline 58
	subi R20,255  ; offset = 1
	sbci R21,255
L123:
	.dbline 58
	cp R20,R18
	cpc R21,R19
	brlo L125
	.dbline -2
L119:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r len 18 i
	.dbsym r SendData 16 pc
	.dbend
	.dbfunc e InitDevices _InitDevices fV
	.even
_InitDevices::
	.dbline -1
	.dbline 71
	.dbline 72
	cli
	.dbline 73
	xcall _Uart0Init
	.dbline 74
	sei
	.dbline -2
L127:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;          temp2 -> y+5
;              j -> R20,R21
;              i -> R22
	.even
_main::
	sbiw R28,13
	.dbline -1
	.dbline 78
	.dbline 85
	ldi R20,2000
	ldi R21,7
	.dbline 86
	xcall _InitDevices
L129:
	.dbline 87
L130:
	.dbline 87
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L129
	tst R3
	brne L129
X1:
	.dbline 88
	.dbline 89
	ldi R22,167
L132:
	.dbline 90
L133:
	.dbline 90
	mov R2,R22
	clr R3
	subi R22,1
	tst R2
	brne L132
	.dbline 91
	.dbline 92
	ldi R24,8
	std y+4,R24
	movw R24,R28
	adiw R24,5
	std y+3,R25
	std y+2,R24
	ldi R24,161
	std y+0,R24
	clr R18
	ldi R16,160
	ldi R17,0
	xcall _I2C_Read_
	.dbline 93
	ldi R20,2000
	ldi R21,7
L135:
	.dbline 94
L136:
	.dbline 94
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L135
	tst R3
	brne L135
X2:
	.dbline 95
	.dbline 96
	ldi R22,167
L138:
	.dbline 97
L139:
	.dbline 97
	mov R2,R22
	clr R3
	subi R22,1
	tst R2
	brne L138
	.dbline 98
	.dbline 99
	ldi R18,8
	ldi R19,0
	movw R16,R28
	subi R16,251  ; offset = 5
	sbci R17,255
	xcall _UartTransmitData
L141:
	.dbline 100
L142:
	.dbline 100
	xjmp L141
X3:
	.dbline -2
L128:
	adiw R28,13
	.dbline 0 ; func end
	ret
	.dbsym l temp2 5 A[8:8]c
	.dbsym r j 20 i
	.dbsym r i 22 c
	.dbend

⌨️ 快捷键说明

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