⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twi_1.lis

📁 AVR单片机平台Atmega32+CH375A芯片读写U盘代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 02BE           X14:
 02BE B2C1              xjmp L54
 02C0           L88:
 02C0 4834              cpi R20,72
 02C2 E0E0              ldi R30,0
 02C4 5E07              cpc R21,R30
 02C6 09F4              brne X15
 02C8 D5C0              xjmp L62
 02CA           X15:
 02CA 88E4              ldi R24,72
 02CC 90E0              ldi R25,0
 02CE 8417              cp R24,R20
 02D0 9507              cpc R25,R21
 02D2 84F0              brlt L95
 02D4           L94:
 02D4 4833              cpi R20,56
 02D6 E0E0              ldi R30,0
 02D8 5E07              cpc R21,R30
 02DA 09F4              brne X16
 02DC D3C0              xjmp L63
 02DE           X16:
 02DE 4833              cpi R20,56
 02E0 E0E0              ldi R30,0
 02E2 5E07              cpc R21,R30
 02E4 0CF4              brge X17
 02E6 9EC1              xjmp L54
 02E8           X17:
 02E8           L96:
 02E8 4034              cpi R20,64
 02EA E0E0              ldi R30,0
 02EC 5E07              cpc R21,R30
 02EE 09F4              brne X18
 02F0 E6C0              xjmp L65
 02F2           X18:
 02F2 98C1              xjmp L54
 02F4           L95:
 02F4 4835              cpi R20,88
 02F6 E0E0              ldi R30,0
 02F8 5E07              cpc R21,R30
 02FA 09F4              brne X19
 02FC A6C0              xjmp L61
 02FE           X19:
 02FE 88E5              ldi R24,88
 0300 90E0              ldi R25,0
 0302 8417              cp R24,R20
 0304 9507              cpc R25,R21
 0306 34F0              brlt L98
 0308           L97:
 0308 4035              cpi R20,80
 030A E0E0              ldi R30,0
 030C 5E07              cpc R21,R30
 030E 09F4              brne X20
 0310 C1C0              xjmp L64
 0312           X20:
 0312 88C1              xjmp L54
 0314           L98:
 0314 4036              cpi R20,96
 0316 E0E0              ldi R30,0
 0318 5E07              cpc R21,R30
 031A 09F4              brne X21
 031C FEC0              xjmp L72
 031E           X21:
 031E 82C1              xjmp L54
 0320           L86:
 0320 403A              cpi R20,160
 0322 E0E0              ldi R30,0
 0324 5E07              cpc R21,R30
 0326 09F4              brne X22
 0328 28C1              xjmp L77
 032A           X22:
 032A 80EA              ldi R24,160
 032C 90E0              ldi R25,0
 032E 8417              cp R24,R20
 0330 9507              cpc R25,R21
 0332 0CF4              brge X23
 0334 30C0              xjmp L100
 0336           X23:
 0336           L99:
 0336 4038              cpi R20,128
 0338 E0E0              ldi R30,0
 033A 5E07              cpc R21,R30
 033C 09F4              brne X24
 033E FBC0              xjmp L73
 0340           X24:
 0340 80E8              ldi R24,128
 0342 90E0              ldi R25,0
 0344 8417              cp R24,R20
 0346 9507              cpc R25,R21
 0348 84F0              brlt L102
 034A           L101:
 034A 4037              cpi R20,112
 034C E0E0              ldi R30,0
 034E 5E07              cpc R21,R30
 0350 09F4              brne X25
 0352 E3C0              xjmp L72
 0354           X25:
 0354 4037              cpi R20,112
 0356 E0E0              ldi R30,0
 0358 5E07              cpc R21,R30
 035A 0CF4              brge X26
 035C 63C1              xjmp L54
 035E           X26:
 035E           L103:
 035E 4837              cpi R20,120
 0360 E0E0              ldi R30,0
 0362 5E07              cpc R21,R30
 0364 09F4              brne X27
 0366 D9C0              xjmp L72
 0368           X27:
 0368 5DC1              xjmp L54
 036A           L102:
 036A 4039              cpi R20,144
 036C E0E0              ldi R30,0
 036E 5E07              cpc R21,R30
 0370 09F4              brne X28
 0372 E1C0              xjmp L73
 0374           X28:
 0374 80E9              ldi R24,144
 0376 90E0              ldi R25,0
 0378 8417              cp R24,R20
 037A 9507              cpc R25,R21
 037C 34F0              brlt L105
 037E           L104:
 037E 4838              cpi R20,136
 0380 E0E0              ldi R30,0
 0382 5E07              cpc R21,R30
 0384 09F4              brne X29
 0386 F6C0              xjmp L76
 0388           X29:
 0388 4DC1              xjmp L54
 038A           L105:
 038A 4839              cpi R20,152
 038C E0E0              ldi R30,0
 038E 5E07              cpc R21,R30
 0390 09F4              brne X30
 0392 F0C0              xjmp L76
 0394           X30:
 0394 47C1              xjmp L54
 0396           L100:
 0396 483B              cpi R20,184
 0398 E0E0              ldi R30,0
 039A 5E07              cpc R21,R30
 039C 09F4              brne X31
 039E 0DC1              xjmp L79
 03A0           X31:
 03A0 88EB              ldi R24,184
 03A2 90E0              ldi R25,0
 03A4 8417              cp R24,R20
 03A6 9507              cpc R25,R21
 03A8 84F0              brlt L107
 03AA           L106:
 03AA 483A              cpi R20,168
 03AC E0E0              ldi R30,0
 03AE 5E07              cpc R21,R30
 03B0 09F4              brne X32
 03B2 F0C0              xjmp L78
 03B4           X32:
 03B4 483A              cpi R20,168
 03B6 E0E0              ldi R30,0
 03B8 5E07              cpc R21,R30
 03BA 0CF4              brge X33
 03BC 33C1              xjmp L54
 03BE           X33:
 03BE           L108:
 03BE 403B              cpi R20,176
 03C0 E0E0              ldi R30,0
 03C2 5E07              cpc R21,R30
 03C4 09F4              brne X34
 03C6 E6C0              xjmp L78
 03C8           X34:
 03C8 2DC1              xjmp L54
 03CA           L107:
 03CA 483C              cpi R20,200
 03CC E0E0              ldi R30,0
 03CE 5E07              cpc R21,R30
 03D0 09F4              brne X35
 03D2 19C1              xjmp L82
 03D4           X35:
 03D4 88EC              ldi R24,200
 03D6 90E0              ldi R25,0
 03D8 8417              cp R24,R20
 03DA 9507              cpc R25,R21
 03DC 34F0              brlt L110
 03DE           L109:
 03DE 403C              cpi R20,192
 03E0 E0E0              ldi R30,0
 03E2 5E07              cpc R21,R30
 03E4 09F4              brne X36
 03E6 0FC1              xjmp L82
 03E8           X36:
 03E8 1DC1              xjmp L54
 03EA           L110:
 03EA 483F              cpi R20,248
 03EC E0E0              ldi R30,0
 03EE 5E07              cpc R21,R30
 03F0 09F4              brne X37
 03F2 18C1              xjmp L55
 03F4           X37:
 03F4 17C1              xjmp L54
 03F6           X2:
 03F6                   .dbline 295
 03F6           ;    { 
 03F6           L57:
 03F6                   .dbline 300
 03F6           ;    // 主方式 
 03F6           ;    case TW_START:                   // 0x08: START 已发送 
 03F6           ;    case TW_REP_START:               // 0x10: 重复START 已发送 
 03F6           ;      // 发送器件地址 
 03F6           ;       i2cSendByte(I2cDeviceAddrRW);
 03F6 00910F00          lds R16,_I2cDeviceAddrRW
 03FA 4FDE              xcall _i2cSendByte
 03FC                   .dbline 301
 03FC           ;       I2cNotAck = 0;
 03FC 2224              clr R2
 03FE 20920500          sts _I2cNotAck,R2
 0402                   .dbline 302
 0402           ;       break; 
 0402 10C1              xjmp L55
 0404           L58:
 0404                   .dbline 308
 0404           ;     
 0404           ;    // 主发送,主接收状态码 
 0404           ;    case TW_MT_SLA_ACK:               // 0x18: SLA+W 已发送;接收到ACK 
 0404           ;    case TW_MT_DATA_ACK:            // 0x28: 数据已发送;接收到ACK 
 0404           ;        
 0404           ;       if(I2cSendDataIndex < I2cSendDataLength) 
 0404 20900900          lds R2,_I2cSendDataLength
 0408 30900A00          lds R3,_I2cSendDataLength+1
 040C 40900B00          lds R4,_I2cSendDataIndex
 0410 50900C00          lds R5,_I2cSendDataIndex+1
 0414 4214              cp R4,R2
 0416 5304              cpc R5,R3
 0418 98F4              brsh L59
 041A                   .dbline 309
 041A           ;       { 
 041A                   .dbline 311
 041A           ;          // 发送数据 
 041A           ;          i2cSendByte( *(I2cSendData+I2cSendDataIndex) );
 041A 20900D00          lds R2,_I2cSendData
 041E 30900E00          lds R3,_I2cSendData+1
 0422 F201              movw R30,R4
 0424 E20D              add R30,R2
 0426 F31D              adc R31,R3
 0428 0081              ldd R16,z+0
 042A 37DE              xcall _i2cSendByte
 042C                   .dbline 312
 042C           ;          I2cSendDataIndex++;
 042C 80910B00          lds R24,_I2cSendDataIndex
 0430 90910C00          lds R25,_I2cSendDataIndex+1
 0434 0196              adiw R24,1
 0436 90930C00          sts _I2cSendDataIndex+1,R25
 043A 80930B00          sts _I2cSendDataIndex,R24
 043E                   .dbline 313
 043E           ;       } 
 043E F2C0              xjmp L55
 0440           L59:
 0440                   .dbline 315
 0440           ;       else 
 0440           ;       { 
 0440                   .dbline 317
 0440           ;          // 发送停止条件,保持TWEA以便从接收 
 0440           ;          i2cSendStop(); 
 0440 23DE              xcall _i2cSendStop
 0442                   .dbline 319
 0442           ;          // 设置状态 
 0442           ;          I2cState = I2C_IDLE; 
 0442 2224              clr R2
 0444 20921000          sts _I2cState,R2
 0448                   .dbline 320
 0448           ;       } 
 0448                   .dbline 321
 0448           ;       break; 
 0448 EDC0              xjmp L55
 044A           L61:
 044A                   .dbline 325
 044A           ;    case TW_MR_DATA_NACK:            // 0x58: 接收到数据;NOT ACK 已返回 
 044A           ;        
 044A           ;       // 保存最终数据 
 044A           ;       *(I2cReceiveData+I2cReceiveDataIndex) = TWDR;
 044A 20900700          lds R2,_I2cReceiveData
 044E 30900800          lds R3,_I2cReceiveData+1
 0452 E0910500          lds R30,_I2cReceiveDataIndex
 0456 F0910600          lds R31,_I2cReceiveDataIndex+1
 045A E20D              add R30,R2
 045C F31D              adc R31,R3
 045E 23B0              in R2,0x3
 0460 2082              std z+0,R2
 0462                   .dbline 326
 0462           ;       I2cReceiveDataIndex++;
 0462 80910500          lds R24,_I2cReceiveDataIndex
 0466 90910600          lds R25,_I2cReceiveDataIndex+1
 046A 0196              adiw R24,1
 046C 90930600          sts _I2cReceiveDataIndex+1,R25
 0470 80930500          sts _I2cReceiveDataIndex,R24
 0474           L62:
 0474                   .dbline 333
 0474           ;       //继续发送条件 
 0474           ;    case TW_MR_SLA_NACK:            // 0x48: SLA+R 已发送,接收到NOT ACK 
 0474           ;    case TW_MT_SLA_NACK:            // 0x20: SLA+W 已发送,接收到NOT ACK 
 0474           ;    case TW_MT_DATA_NACK:            // 0x30: 数据已发送,接收到NOT ACK 
 0474           ;     
 0474           ;       // 发送停止条件,保持TWEA以便从接收 
 0474           ;       i2cSendStop(); 
 0474 09DE              xcall _i2cSendStop
 0476                   .dbline 336
 0476           ;       // 设置状态
 0476           ; //      if(status == TW_MR_SLA_NACK || status == TW_MT_SLA_NACK)    /*此行有效则,数据发送过程中的模块断开不进行报错处理*/
 0476           ;           I2cNotAck = 0xff;
 0476 8FEF              ldi R24,255
 0478 80930500          sts _I2cNotAck,R24
 047C                   .dbline 337
 047C           ;       I2cState = I2C_IDLE; 
 047C 2224              clr R2
 047E 20921000          sts _I2cState,R2
 0482                   .dbline 338
 0482           ;       break; 
 0482 D0C0              xjmp L55
 0484           L63:
 0484                   .dbline 343
 0484           ;    case TW_MT_ARB_LOST:            // 0x38: SLA+W 或数据的仲裁失败 
 0484           ;     
 0484           ;     
 0484           ;       // 释放总线 
 0484           ;              TWCR=TWCR&TWCR_CMD_MASK|(1<<TWINT); 
 0484 86B7              in R24,0x36

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -