📄 24c01a.s
字号:
.module _24C01A.c
.area text(rom, con, rel)
.dbfile D:\24C01A/I2C.h
.dbfunc e I2C_Init _I2C_Init fV
.even
_I2C_Init::
.dbline -1
.dbline 85
;
; #include <iom16v.h>
; #include <macros.h>
; #include "I2C.h"
;
; void delay_1ms(void) //1ms延时函数
; {
; unsigned int i;
; for (i=0;i<1140;i++);
; }
;
; void main()
; {
; unsigned char temp1[8]={18,17,16,15,14,13,12,11};
; unsigned char temp2[8]={0};
; unsigned char temp3[6]={0};
; unsigned char i=0,*p;
;
; I2C_Init();
;
; I2C_Write_(0xa0,0,temp1,8);//一次写入8个字节
; delay_1ms();
; delay_1ms();
;
; I2C_Read_(0xa0,0,temp2,8);//一次读取8个字节
;
; for(i=10;i<16;i++) //循环6次,写入6个字节
; {
; I2C_Write(0xa0,i,temp1[i-10]);
; delay_1ms(); //延时不可缺少
; //delay_1ms();
; }
;
; p=temp3;
; for(i=10;i<16;i++) //循环6次,读取6个字节至temp3
; {I2C_Read(0xa0,i,p++);
; //delay_1ms();
; //delay_1ms();
; }
;
; while(1);
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 86
; }
ldi R24,15
out 0x0,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e I2C_WaitINT _I2C_WaitINT fc
; i -> R16,R17
.even
_I2C_WaitINT::
.dbline -1
.dbline 98
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 99
; }
ldi R16,50
ldi R17,0
xjmp L4
L3:
.dbline 101
.dbline 101
movw R24,R16
sbiw R24,1
movw R16,R24
cpi R16,0
cpc R16,R17
brne L6
X0:
.dbline 101
clr R16
xjmp L2
L6:
.dbline 101
L4:
.dbline 100
; }
in R2,0x36
sbrs R2,7
rjmp L3
.dbline 102
; }
; }
ldi R16,1
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e I2C_SendByte _I2C_SendByte fV
; x -> R16
.even
_I2C_SendByte::
.dbline -1
.dbline 113
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 114
; }
out 0x3,R16
.dbline 115
; }
ldi R24,132
out 0x36,R24
.dbline -2
L8:
.dbline 0 ; func end
ret
.dbsym r x 16 c
.dbend
.dbfunc e I2C_Start _I2C_Start fc
.even
_I2C_Start::
.dbline -1
.dbline 126
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 127
; }
ldi R24,164
out 0x36,R24
.dbline 128
; }
xcall _I2C_WaitINT
tst R16
brne L10
.dbline 128
clr R16
xjmp L9
L10:
.dbline 129
; }
in R24,0x1
andi R24,248
cpi R24,8
breq L12
.dbline 130
; }
clr R16
xjmp L9
L12:
.dbline 131
; }
ldi R16,1
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.dbfunc e I2C_Restart _I2C_Restart fc
.even
_I2C_Restart::
.dbline -1
.dbline 142
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 143
; }
ldi R24,164
out 0x36,R24
.dbline 144
; }
xcall _I2C_WaitINT
tst R16
brne L15
.dbline 144
clr R16
xjmp L14
L15:
.dbline 145
; }
in R24,0x1
andi R24,248
cpi R24,16
breq L17
.dbline 146
; }
clr R16
xjmp L14
L17:
.dbline 147
; }
ldi R16,1
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e I2C_SendWrDAdr _I2C_SendWrDAdr fc
; wrDAdr -> R20
.even
_I2C_SendWrDAdr::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 158
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 159
; }
mov R16,R20
xcall _I2C_SendByte
.dbline 160
; }
xcall _I2C_WaitINT
tst R16
brne L20
.dbline 160
clr R16
xjmp L19
L20:
.dbline 161
; }
in R24,0x1
andi R24,248
cpi R24,24
breq L22
.dbline 162
; }
clr R16
xjmp L19
L22:
.dbline 163
; }
ldi R16,1
.dbline -2
L19:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r wrDAdr 20 c
.dbend
.dbfunc e I2C_SendWrDAdr_ _I2C_SendWrDAdr_ fc
; wrDAdr -> R20,R21
.even
_I2C_SendWrDAdr_::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 174
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -