📄 eepromi2c.s
字号:
#include <config.h>#if CONF_WITH_I2CEEPROM==1 .arch ARCHDDRB=0x17EE_SCL=1EE_SDA=0PINB=0x16PORTB=0x18 .text .global xeread, xewrtXEAddr: rcall XEStrt clc ldi r19,0xA0 rcall XEEOut rcall XE0Bit mov r19,r31 rcall XEEOut rcall XE0Bit mov r19,r30 rcall XEEOut rcall XE0Bit ret; address r25:r24 ; result r25(=0):r24xeread: push r31 push r30 push r19 push r18 push r16 push r1 push r0 mov r31,r25 mov r30,r24; Start rcall xereadlocal; Done clr r25 mov r24,r0 pop r0 pop r1 pop r16 pop r18 pop r19 pop r30 pop r31 ret; address r31:r30 ; result r0 = XE(Z+)xereadlocal: rcall XEAddr rcall XEStrt clc ldi r19,0xA1 rcall XEEOut rcall XE0Bit rcall XEEIn rcall XE1Bit rcall XEStop ret; address r25:r24 ; byte r23(=0):r22xewrt: push r31 push r30 push r19 push r18 push r16 push r1 push r0 mov r31,r25 mov r30,r24; Start; address r31:r30 ; result XE(Z+) = r22 rcall xereadlocal cp r0,r22 breq dontwrite rcall XEAddr mov r19,r22 rcall XEEOut rcall XE0Bit rcall XEStop rcall XEDlydontwrite: ; Done pop r0 pop r1 pop r16 pop r18 pop r19 pop r30 pop r31 retXEDly: ldi r25,0x20 mov r1,r25avr3B9: ldi r25,0xFFavr3BA: dec r25 brne avr3BA dec r1 brne avr3B9 retXEStrt: rcall ClrPB0 rcall SetPB2 rcall SetPB0 rcall ClrPB2 rcall ClrPB0 retXEStop: rcall ClrPB0 rcall ClrPB2 rcall SetPB0 rcall SetPB2 rcall ClrPB0 retXEEIn: clr r0 ldi r16,0x08 rcall SetPB2 rcall PB2Inavr3CF: rcall SetPB0 sbic PINB,EE_SDA rjmp avr3D5 clc rol r0 rjmp avr3D7avr3D5: sec rol r0avr3D7: rcall ClrPB0 dec r16 brne avr3CF rcall PB2Out retXEEOut: ldi r16,0x08 mov r0,r19avr3DE: clc rol r0 brlo avr3E4 rcall ClrPB2 rcall ClkPls rjmp avr3E6avr3E4: rcall SetPB2 rcall ClkPlsavr3E6: dec r16 brne avr3DE retXE1Bit: rcall SetPB2 rcall ClkPls retXE0Bit: rcall ClrPB2 rcall ClkPls retClkPls: rcall SetPB0 rcall ClrPB0 retSetPB2: sbi PORTB,EE_SDA rjmp PBExitClrPB2: cbi PORTB,EE_SDA rjmp PBExitSetPB0: sbi PORTB,EE_SCL rjmp PBExitClrPB0: cbi PORTB,EE_SCL rjmp PBExitPB2Out: sbi DDRB,EE_SDA rjmp PBExitPB2In: cbi DDRB,EE_SDA rjmp PBExitPBExit: nop nop nop ret#endif /* CONF_WITH_I2CEEPROM==1 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -