📄 i2c.lis
字号:
00A6 85BB out 0x15,R24
00A8 .dbline 49
00A8 ; Delayms(10 );
00A8 0AE0 ldi R16,10
00AA 10E0 ldi R17,0
00AC 00D0 rcall _Delayms
00AE .dbline 50
00AE ; Start();//I2C启动
00AE 84EA ldi R24,164
00B0 86BF out 0x36,R24
00B2 .dbline 51
00B2 L28:
00B2 .dbline 51
00B2 L29:
00B2 .dbline 51
00B2 ; Wait();
00B2 26B6 in R2,0x36
00B4 27FE sbrs R2,7
00B6 FDCF rjmp L28
00B8 .dbline 51
00B8 .dbline 51
00B8 .dbline 52
00B8 ; if (TestAck()!=START) return 0;//ACK
00B8 81B1 in R24,0x1
00BA 887F andi R24,248
00BC 8830 cpi R24,8
00BE 11F0 breq L31
00C0 .dbline 52
00C0 0027 clr R16
00C2 44C0 rjmp L27
00C4 L31:
00C4 .dbline 53
00C4 ; Write8Bit(wr_device_add);//写I2C从器件地址和写方式
00C4 .dbline 53
00C4 80EA ldi R24,160
00C6 83B9 out 0x3,R24
00C8 .dbline 53
00C8 84E8 ldi R24,132
00CA 86BF out 0x36,R24
00CC .dbline 53
00CC .dbline 53
00CC .dbline 54
00CC L33:
00CC .dbline 54
00CC L34:
00CC .dbline 54
00CC ; Wait();
00CC 26B6 in R2,0x36
00CE 27FE sbrs R2,7
00D0 FDCF rjmp L33
00D2 .dbline 54
00D2 .dbline 54
00D2 .dbline 55
00D2 ; if (TestAck()!=MT_ADDR_ACK) return 0;//ACK
00D2 81B1 in R24,0x1
00D4 887F andi R24,248
00D6 8831 cpi R24,24
00D8 11F0 breq L36
00DA .dbline 55
00DA 0027 clr R16
00DC 37C0 rjmp L27
00DE L36:
00DE .dbline 57
00DE ;
00DE ; Write8Bit(RomAddrL);//写24C02的ROM地址
00DE .dbline 57
00DE 43B9 out 0x3,R20
00E0 .dbline 57
00E0 84E8 ldi R24,132
00E2 86BF out 0x36,R24
00E4 .dbline 57
00E4 .dbline 57
00E4 .dbline 58
00E4 L38:
00E4 .dbline 58
00E4 L39:
00E4 .dbline 58
00E4 ; Wait();
00E4 26B6 in R2,0x36
00E6 27FE sbrs R2,7
00E8 FDCF rjmp L38
00EA .dbline 58
00EA .dbline 58
00EA .dbline 59
00EA ; if (TestAck()!=MT_DATA_ACK) return 0;
00EA 81B1 in R24,0x1
00EC 887F andi R24,248
00EE 8832 cpi R24,40
00F0 11F0 breq L41
00F2 .dbline 59
00F2 0027 clr R16
00F4 2BC0 rjmp L27
00F6 L41:
00F6 .dbline 61
00F6 ;
00F6 ; Start();//I2C重新启动
00F6 84EA ldi R24,164
00F8 86BF out 0x36,R24
00FA .dbline 62
00FA L43:
00FA .dbline 62
00FA L44:
00FA .dbline 62
00FA ; Wait();
00FA 26B6 in R2,0x36
00FC 27FE sbrs R2,7
00FE FDCF rjmp L43
0100 .dbline 62
0100 .dbline 62
0100 .dbline 63
0100 ; if (TestAck()!=RE_START) return 0;
0100 81B1 in R24,0x1
0102 887F andi R24,248
0104 8031 cpi R24,16
0106 11F0 breq L46
0108 .dbline 63
0108 0027 clr R16
010A 20C0 rjmp L27
010C L46:
010C .dbline 64
010C ; Write8Bit(rd_device_add);//写I2C从器件地址和读方式
010C .dbline 64
010C 81EA ldi R24,161
010E 83B9 out 0x3,R24
0110 .dbline 64
0110 84E8 ldi R24,132
0112 86BF out 0x36,R24
0114 .dbline 64
0114 .dbline 64
0114 .dbline 65
0114 L48:
0114 .dbline 65
0114 L49:
0114 .dbline 65
0114 ; Wait();
0114 26B6 in R2,0x36
0116 27FE sbrs R2,7
0118 FDCF rjmp L48
011A .dbline 65
011A .dbline 65
011A .dbline 66
011A ; if(TestAck()!=MR_ADDR_ACK) return 0;//ACK
011A 81B1 in R24,0x1
011C 887F andi R24,248
011E 8034 cpi R24,64
0120 11F0 breq L51
0122 .dbline 66
0122 0027 clr R16
0124 13C0 rjmp L27
0126 L51:
0126 .dbline 67
0126 ; Twi();//启动主I2C读方式
0126 84E8 ldi R24,132
0128 86BF out 0x36,R24
012A .dbline 68
012A L53:
012A .dbline 68
012A L54:
012A .dbline 68
012A ; Wait();
012A 26B6 in R2,0x36
012C 27FE sbrs R2,7
012E FDCF rjmp L53
0130 .dbline 68
0130 .dbline 68
0130 .dbline 69
0130 ; if(TestAck()!=MR_DATA_NOACK) return 0;//ACK
0130 81B1 in R24,0x1
0132 887F andi R24,248
0134 8835 cpi R24,88
0136 11F0 breq L56
0138 .dbline 69
0138 0027 clr R16
013A 08C0 rjmp L27
013C L56:
013C .dbline 70
013C ; temp=TWDR;//读取I2C接收数据
013C 43B1 in R20,0x3
013E .dbline 71
013E ; Delayms(10 );
013E 0AE0 ldi R16,10
0140 10E0 ldi R17,0
0142 00D0 rcall _Delayms
0144 .dbline 72
0144 ; Stop();//I2C停止
0144 84E9 ldi R24,148
0146 86BF out 0x36,R24
0148 .dbline 73
0148 ; twi_Disable();
0148 00D0 rcall _twi_Disable
014A .dbline 74
014A ; return temp;
014A 042F mov R16,R20
014C .dbline -2
014C L27:
014C 00D0 rcall pop_gset1
014E .dbline 0 ; func end
014E 0895 ret
0150 .dbsym r temp 20 c
0150 .dbsym r RomAddrL 20 c
0150 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\I2C.C
0000 L26:
0000 .blkb 7
.area idata
0000 4552524F523500 .byte 'E,'R,'R,'O,'R,53,0
.area data(ram, con, rel)
0007 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\I2C.C
0007 L20:
0007 .blkb 7
.area idata
0007 4552524F523400 .byte 'E,'R,'R,'O,'R,52,0
.area data(ram, con, rel)
000E .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\I2C.C
000E L14:
000E .blkb 7
.area idata
000E 4552524F523200 .byte 'E,'R,'R,'O,'R,50,0
.area data(ram, con, rel)
0015 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\I2C.C
0015 L7:
0015 .blkb 7
.area idata
0015 4552524F523100 .byte 'E,'R,'R,'O,'R,49,0
.area data(ram, con, rel)
001C .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\I2C.C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -