📄 i2c.lis
字号:
0210 282E mov R2,R24
0212 3324 clr R3
0214 8150 subi R24,1
0216 80930000 sts L3,R24
021A 80E0 ldi R24,<_cDataBuff
021C 90E0 ldi R25,>_cDataBuff
021E E22D mov R30,R2
0220 FF27 clr R31
0222 E80F add R30,R24
0224 F91F adc R31,R25
0226 4083 std z+0,R20
0228 .dbline 144
0228 ; charData/=10;
0228 1AE0 ldi R17,10
022A 00910200 lds R16,_charData
022E 00D0 rcall div8u
0230 00930200 sts _charData,R16
0234 .dbline 145
0234 ; cDataBuff[charIndex]=charData;
0234 80E0 ldi R24,<_cDataBuff
0236 90E0 ldi R25,>_cDataBuff
0238 E0910000 lds R30,L3
023C FF27 clr R31
023E E80F add R30,R24
0240 F91F adc R31,R25
0242 202E mov R2,R16
0244 2082 std z+0,R2
0246 .dbline 146
0246 ; charIndex+=4;//指向末尾空位
0246 80910000 lds R24,L3
024A 8C5F subi R24,252 ; addi 4
024C 80930000 sts L3,R24
0250 .dbline 147
0250 ; }
0250 .dbline 148
0250 ; break;
0250 .dbline 150
0250 ; }
0250 ; }
0250 .dbline 151
0250 ; break;
0250 79C0 rjmp L5
0252 L15:
0252 .dbline 153
0252 ; case SR_STOP_RESTART://收到STOP信号或者RESTART
0252 ; {
0252 .dbline 154
0252 ; MT_ACK;
0252 85EC ldi R24,197
0254 86BF out 0x36,R24
0256 .dbline 155
0256 ; }
0256 .dbline 156
0256 ; break;
0256 76C0 rjmp L5
0258 L16:
0258 .dbline 158
0258 ; case ST_SLA_ACK://收到读信号,将(最后一个-NT_NACK、普通数据-MT_ACK)数据发送出去
0258 ; {
0258 .dbline 161
0258 ; /*charTemp=rom_read((unsigned int)charAddr);
0258 ; TWDR=charTemp;*/
0258 ; TWDR=0xdd;//测试用,发送测试数据。MEGA8的EEPROM的读速度跟不上TWI
0258 8DED ldi R24,221
025A 83B9 out 0x3,R24
025C .dbline 162
025C ; MT_ACK;
025C 85EC ldi R24,197
025E 86BF out 0x36,R24
0260 .dbline 163
0260 ; }
0260 .dbline 164
0260 ; break;
0260 71C0 rjmp L5
0262 L17:
0262 .dbline 166
0262 ; case ST_DATA_ACK://主机要求继续发送数据
0262 ; {
0262 .dbline 167
0262 ; TWDR=cDataBuff[++charAddr];
0262 80910100 lds R24,_charAddr
0266 8F5F subi R24,255 ; addi 1
0268 282E mov R2,R24
026A 20920100 sts _charAddr,R2
026E 80E0 ldi R24,<_cDataBuff
0270 90E0 ldi R25,>_cDataBuff
0272 E22D mov R30,R2
0274 FF27 clr R31
0276 E80F add R30,R24
0278 F91F adc R31,R25
027A 2080 ldd R2,z+0
027C 23B8 out 0x3,R2
027E .dbline 168
027E ; MT_ACK;
027E 85EC ldi R24,197
0280 86BF out 0x36,R24
0282 .dbline 169
0282 ; }
0282 .dbline 170
0282 ; break;
0282 60C0 rjmp L5
0284 L18:
0284 .dbline 172
0284 ; case ST_DATA_NOACK://数据发送完毕
0284 ; {
0284 .dbline 173
0284 ; MT_ACK;
0284 85EC ldi R24,197
0286 86BF out 0x36,R24
0288 .dbline 174
0288 ; }
0288 .dbline 175
0288 ; break;
0288 5DC0 rjmp L5
028A L4:
028A .dbline 177
028A .dbline 178
028A 60930200 sts _charData,R22
028E .dbline 179
028E 80910000 lds R24,L3
0292 8D5F subi R24,253 ; addi 3
0294 80930000 sts L3,R24
0298 .dbline 180
0298 8F71 andi R24,31
029A 80930000 sts L3,R24
029E .dbline 181
029E 282E mov R2,R24
02A0 3324 clr R3
02A2 8150 subi R24,1
02A4 80930000 sts L3,R24
02A8 80E0 ldi R24,<_cDataBuff
02AA 90E0 ldi R25,>_cDataBuff
02AC E22D mov R30,R2
02AE FF27 clr R31
02B0 E80F add R30,R24
02B2 F91F adc R31,R25
02B4 8BE0 ldi R24,11
02B6 8083 std z+0,R24
02B8 .dbline 182
02B8 1AE0 ldi R17,10
02BA 00910200 lds R16,_charData
02BE 00D0 rcall mod8u
02C0 402F mov R20,R16
02C2 .dbline 183
02C2 80910000 lds R24,L3
02C6 8F71 andi R24,31
02C8 80930000 sts L3,R24
02CC .dbline 184
02CC 282E mov R2,R24
02CE 3324 clr R3
02D0 8150 subi R24,1
02D2 80930000 sts L3,R24
02D6 80E0 ldi R24,<_cDataBuff
02D8 90E0 ldi R25,>_cDataBuff
02DA E22D mov R30,R2
02DC FF27 clr R31
02DE E80F add R30,R24
02E0 F91F adc R31,R25
02E2 4083 std z+0,R20
02E4 .dbline 185
02E4 1AE0 ldi R17,10
02E6 00910200 lds R16,_charData
02EA 00D0 rcall div8u
02EC 00930200 sts _charData,R16
02F0 .dbline 186
02F0 1AE0 ldi R17,10
02F2 00D0 rcall mod8u
02F4 402F mov R20,R16
02F6 .dbline 187
02F6 80910000 lds R24,L3
02FA 8F71 andi R24,31
02FC 80930000 sts L3,R24
0300 .dbline 188
0300 282E mov R2,R24
0302 3324 clr R3
0304 8150 subi R24,1
0306 80930000 sts L3,R24
030A 80E0 ldi R24,<_cDataBuff
030C 90E0 ldi R25,>_cDataBuff
030E E22D mov R30,R2
0310 FF27 clr R31
0312 E80F add R30,R24
0314 F91F adc R31,R25
0316 4083 std z+0,R20
0318 .dbline 189
0318 1AE0 ldi R17,10
031A 00910200 lds R16,_charData
031E 00D0 rcall div8u
0320 00930200 sts _charData,R16
0324 .dbline 190
0324 80E0 ldi R24,<_cDataBuff
0326 90E0 ldi R25,>_cDataBuff
0328 E0910000 lds R30,L3
032C FF27 clr R31
032E E80F add R30,R24
0330 F91F adc R31,R25
0332 202E mov R2,R16
0334 2082 std z+0,R2
0336 .dbline 191
0336 80910000 lds R24,L3
033A 8C5F subi R24,252 ; addi 4
033C 80930000 sts L3,R24
0340 .dbline 192
0340 85EC ldi R24,197
0342 86BF out 0x36,R24
0344 .dbline 193
0344 .dbline 194
0344 L5:
0344 .dbline -2
0344 L2:
0344 00D0 rcall pop_gset2
0346 2990 ld R2,y+
0348 2FBE out 0x3f,R2
034A F991 ld R31,y+
034C E991 ld R30,y+
034E 9991 ld R25,y+
0350 8991 ld R24,y+
0352 1991 ld R17,y+
0354 0991 ld R16,y+
0356 3990 ld R3,y+
0358 2990 ld R2,y+
035A .dbline 0 ; func end
035A 1895 reti
035C .dbsym r charTemp 20 c
035C .dbsym r TWI_STATE 22 c
035C .dbend
.area bss(ram, con, rel)
0000 .dbfile G:\Mega8程序\TCXO评估板\LedShow\I2C.c
0000 _charState::
0000 .blkb 1
0001 .dbsym e charState _charState c
0001 _charAddr::
0001 .blkb 1
0002 .dbsym e charAddr _charAddr c
0002 _charData::
0002 .blkb 1
0003 .dbsym e charData _charData c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -