📄 project.lis
字号:
01B8 04E6 ldi R16,100
01BA 10E0 ldi R17,0
01BC 21DF rcall _delay
01BE .dbline 155
01BE ; Set_SDA(0); //SDA=0;
01BE 0027 clr R16
01C0 EFDF rcall _Set_SDA
01C2 .dbline 156
01C2 ; delay(100);
01C2 04E6 ldi R16,100
01C4 10E0 ldi R17,0
01C6 1CDF rcall _delay
01C8 .dbline 157
01C8 ; Set_SCL(0); // SCL=0;
01C8 0027 clr R16
01CA .dbline -2
01CA .dbline 158
01CA ; }
01CA L55:
01CA .dbline 0 ; func end
01CA E2CF rjmp _Set_SCL
01CC .dbend
01CC .dbfunc e Stop _Stop fV
.even
01CC _Stop::
01CC .dbline -1
01CC .dbline 161
01CC ;
01CC ; void Stop() //I2C总线结束条件
01CC ; {Set_SDA(0); //SDA=0;
01CC .dbline 161
01CC 0027 clr R16
01CE E8DF rcall _Set_SDA
01D0 .dbline 162
01D0 ; delay(100);
01D0 04E6 ldi R16,100
01D2 10E0 ldi R17,0
01D4 15DF rcall _delay
01D6 .dbline 163
01D6 ; Set_SCL(1); //SCL=1;
01D6 01E0 ldi R16,1
01D8 DBDF rcall _Set_SCL
01DA .dbline 164
01DA ; delay(100); //等待时钟信号变低
01DA 04E6 ldi R16,100
01DC 10E0 ldi R17,0
01DE 10DF rcall _delay
01E0 .dbline 165
01E0 ; Set_SDA(1); //SDA=1;
01E0 01E0 ldi R16,1
01E2 DEDF rcall _Set_SDA
01E4 .dbline 166
01E4 ; delay(100);
01E4 04E6 ldi R16,100
01E6 10E0 ldi R17,0
01E8 0BDF rcall _delay
01EA .dbline 167
01EA ; Set_SCL(0); //SCL=0;
01EA 0027 clr R16
01EC .dbline -2
01EC .dbline 168
01EC ; }
01EC L56:
01EC .dbline 0 ; func end
01EC D1CF rjmp _Set_SCL
01EE .dbend
01EE .dbfunc e Ack _Ack fV
.even
01EE _Ack::
01EE .dbline -1
01EE .dbline 171
01EE ;
01EE ; void Ack() //I2C总线应答
01EE ; {Set_SDA(0); //SDA=0;
01EE .dbline 171
01EE 0027 clr R16
01F0 D7DF rcall _Set_SDA
01F2 .dbline 172
01F2 ; delay(50);
01F2 02E3 ldi R16,50
01F4 10E0 ldi R17,0
01F6 04DF rcall _delay
01F8 .dbline 173
01F8 ; Set_SCL(1); //SCL=1;
01F8 01E0 ldi R16,1
01FA CADF rcall _Set_SCL
01FC .dbline 174
01FC ; delay(100);
01FC 04E6 ldi R16,100
01FE 10E0 ldi R17,0
0200 FFDE rcall _delay
0202 .dbline 175
0202 ; Set_SCL(0); //SCL=0;
0202 0027 clr R16
0204 C5DF rcall _Set_SCL
0206 .dbline 176
0206 ; delay(50);
0206 02E3 ldi R16,50
0208 10E0 ldi R17,0
020A FADE rcall _delay
020C .dbline 177
020C ; Set_SDA(1); //SDA=1;
020C 01E0 ldi R16,1
020E .dbline -2
020E .dbline 178
020E ; }
020E L57:
020E .dbline 0 ; func end
020E C8CF rjmp _Set_SDA
0210 .dbend
0210 .dbfunc e Nack _Nack fV
.even
0210 _Nack::
0210 .dbline -1
0210 .dbline 181
0210 ;
0210 ; void Nack() //I2C总线应答非
0210 ; {Set_SDA(1); //SDA=1;
0210 .dbline 181
0210 01E0 ldi R16,1
0212 C6DF rcall _Set_SDA
0214 .dbline 182
0214 ; delay(50);
0214 02E3 ldi R16,50
0216 10E0 ldi R17,0
0218 F3DE rcall _delay
021A .dbline 183
021A ; Set_SCL(1); //SCL=1;
021A 01E0 ldi R16,1
021C B9DF rcall _Set_SCL
021E .dbline 184
021E ; delay(100);
021E 04E6 ldi R16,100
0220 10E0 ldi R17,0
0222 EEDE rcall _delay
0224 .dbline 185
0224 ; Set_SCL(0); //SCL=0;
0224 0027 clr R16
0226 B4DF rcall _Set_SCL
0228 .dbline 186
0228 ; delay(50);
0228 02E3 ldi R16,50
022A 10E0 ldi R17,0
022C E9DE rcall _delay
022E .dbline 187
022E ; Set_SDA(0); //SDA=0;
022E 0027 clr R16
0230 .dbline -2
0230 .dbline 188
0230 ; }
0230 L58:
0230 .dbline 0 ; func end
0230 B7CF rjmp _Set_SDA
0232 .dbend
0232 .dbfunc e Check_Ack _Check_Ack fV
.even
0232 _Check_Ack::
0232 .dbline -1
0232 .dbline 191
0232 ;
0232 ; void Check_Ack() //I2C总线应答检查
0232 ; {Set_SDA(1); //SDA=1;
0232 .dbline 191
0232 01E0 ldi R16,1
0234 B5DF rcall _Set_SDA
0236 .dbline 192
0236 ; Set_SCL(1); //SCL=1;
0236 01E0 ldi R16,1
0238 ABDF rcall _Set_SCL
023A .dbline 193
023A ; Ack_Flag=0; //清除应答标志;
023A 2224 clr R2
023C 20924600 sts _Ack_Flag,R2
0240 .dbline 194
0240 ; DDRA&=0xbf; //设置SDA为输入
0240 8AB3 in R24,0x1a
0242 8F7B andi R24,191
0244 8ABB out 0x1a,R24
0246 .dbline 195
0246 ; if(!((PINA & 0x40)>>6))
0246 89B3 in R24,0x19
0248 8074 andi R24,64
024A 8695 lsr R24
024C 8695 lsr R24
024E 8695 lsr R24
0250 8695 lsr R24
0252 8695 lsr R24
0254 8695 lsr R24
0256 8823 tst R24
0258 49F4 brne L60
025A .dbline 196
025A ; {delay(50);
025A .dbline 196
025A 02E3 ldi R16,50
025C 10E0 ldi R17,0
025E D0DE rcall _delay
0260 .dbline 197
0260 ; Set_SCL(0); //SCL=0;
0260 0027 clr R16
0262 96DF rcall _Set_SCL
0264 .dbline 198
0264 ; delay(100);}
0264 04E6 ldi R16,100
0266 10E0 ldi R17,0
0268 CBDE rcall _delay
026A .dbline 198
026A 0BC0 rjmp L61
026C L60:
026C .dbline 200
026C ; else
026C ; {Ack_Flag=1; //收到应答;
026C .dbline 200
026C 81E0 ldi R24,1
026E 80934600 sts _Ack_Flag,R24
0272 .dbline 201
0272 ; delay(50);
0272 02E3 ldi R16,50
0274 10E0 ldi R17,0
0276 C4DE rcall _delay
0278 .dbline 202
0278 ; Set_SCL(0); //SCL=0;
0278 0027 clr R16
027A 8ADF rcall _Set_SCL
027C .dbline 203
027C ; delay(100);}
027C 04E6 ldi R16,100
027E 10E0 ldi R17,0
0280 BFDE rcall _delay
0282 .dbline 203
0282 L61:
0282 .dbline 204
0282 ; DDRA |=0xff; //重新设置SDA为输出
0282 8AB3 in R24,0x1a
0284 8F6F ori R24,255
0286 8ABB out 0x1a,R24
0288 .dbline -2
0288 .dbline 205
0288 ; }
0288 L59:
0288 .dbline 0 ; func end
0288 0895 ret
028A .dbend
028A .dbfunc e Write_Bit0 _Write_Bit0 fV
.even
028A _Write_Bit0::
028A .dbline -1
028A .dbline 208
028A ;
028A ; void Write_Bit0() //写1bit数据:0
028A ; {Set_SDA(0); //SDA=0;
028A .dbline 208
028A 0027 clr R16
028C 89DF rcall _Set_SDA
028E .dbline 209
028E ; Set_SCL(1); //SCL=1;
028E 01E0 ldi R16,1
0290 7FDF rcall _Set_SCL
0292 .dbline 210
0292 ; delay(100);
0292 04E6 ldi R16,100
0294 10E0 ldi R17,0
0296 B4DE rcall _delay
0298 .dbline 211
0298 ; Set_SCL(0); //SCL=0;
0298 0027 clr R16
029A .dbline -2
029A .dbline 212
029A ; }
029A L62:
029A .dbline 0 ; func end
029A 7ACF rjmp _Set_SCL
029C .dbend
029C .dbfunc e Write_Bit1 _Write_Bit1 fV
.even
029C _Write_Bit1::
029C .dbline -1
029C .dbline 215
029C ;
029C ; void Write_Bit1() //写1bit数据:1
029C ; {Set_SDA(1); //SDA=1;
029C .dbline 215
029C 01E0 ldi R16,1
029E 80DF rcall _Set_SDA
02A0 .dbline 216
02A0 ; Set_SCL(1); //SCL=1;
02A0 01E0 ldi R16,1
02A2 76DF rcall _Set_SCL
02A4 .dbline 217
02A4 ; delay(100);
02A4 04E6 ldi R16,100
02A6 10E0 ldi R17,0
02A8 ABDE rcall _delay
02AA .dbline 218
02AA ; Set_SCL(0); //SCL=0;
02AA 0027 clr R16
02AC 71DF rcall _Set_SCL
02AE .dbline 219
02AE ; Set_SDA(0); //SDA=0;
02AE 0027 clr R16
02B0 .dbline -2
02B0 .dbline 220
02B0 ; }
02B0 L63:
02B0 .dbline 0 ; func end
02B0 77CF rjmp _Set_SDA
02B2 .dbend
02B2 .dbfunc e Write_Byte _Write_Byte fV
02B2 ; i -> R20
02B2 ; Data -> R22
.even
02B2 _Write_Byte::
02B2 00D0 rcall push_gset2
02B4 602F mov R22,R16
02B6 .dbline -1
02B6 .dbline 223
02B6 ;
02B6 ; void Write_Byte(uchar Data) //写一字节数据Data
02B6 ; {uchar i;
02B6 .dbline 224
02B6 ; for(i=0;i<8;i++)
02B6 4427 clr R20
02B8 07C0 rjmp L68
02BA L65:
02BA .dbline 225
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -