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

📄 i2cslave.lis

📁 MCU控制程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0094 8068              ori R24,128
 0096 86BF              out 0x36,R24
 0098                   .dbline 151
 0098           L16:
 0098                   .dbline -2
 0098           L14:
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbsym r ackFlag 16 c
 009A                   .dbend
 009A                   .dbfunc e i2cGetReceivedByte _i2cGetReceivedByte fc
                        .even
 009A           _i2cGetReceivedByte::
 009A                   .dbline -1
 009A                   .dbline 155
 009A           ;    else 
 009A           ;    { 
 009A           ;       // ackFlag = FALSE: 数据接收后无回应 
 009A           ;        TWCR=TWCR&TWCR_CMD_MASK|(1<<TWINT); 
 009A           ;    } 
 009A           ; } 
 009A           ; 
 009A           ; unsigned char i2cGetReceivedByte(void) 
 009A           ; { 
 009A                   .dbline 157
 009A           ;    // 返回接收到的数据 
 009A           ;    return( TWDR ); 
 009A 03B1              in R16,0x3
 009C                   .dbline -2
 009C           L17:
 009C                   .dbline 0 ; func end
 009C 0895              ret
 009E                   .dbend
 009E                   .dbfunc e i2cGetStatus _i2cGetStatus fc
                        .even
 009E           _i2cGetStatus::
 009E                   .dbline -1
 009E                   .dbline 161
 009E           ; } 
 009E           ; 
 009E           ; unsigned char i2cGetStatus(void) 
 009E           ; { 
 009E                   .dbline 163
 009E           ;    // 返回总线状态 
 009E           ;    return(TWSR); 
 009E 01B1              in R16,0x1
 00A0                   .dbline -2
 00A0           L18:
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbend
 00A2                   .dbfunc e i2cSlaveReceiveService _i2cSlaveReceiveService fV
 00A2           ;              i -> R20
 00A2           ;    receiveData -> R18,R19
 00A2           ; receiveDataLength -> R16
                        .even
 00A2           _i2cSlaveReceiveService::
 00A2 0E940000          xcall push_gset1
 00A6                   .dbline -1
 00A6                   .dbline 167
 00A6           ; } 
 00A6           ; // 从操作 
 00A6           ; void i2cSlaveReceiveService(unsigned char receiveDataLength, unsigned char* receiveData) 
 00A6           ; { 
 00A6                   .dbline 171
 00A6           ;    unsigned char i; 
 00A6           ;   //此函数在本机被选中为从写入时运行 
 00A6           ;    // 接收到的数据存入本地缓冲区 
 00A6           ;    for(i=0; i<receiveDataLength; i++) 
 00A6 4427              clr R20
 00A8 0BC0              xjmp L23
 00AA           L20:
 00AA                   .dbline 172
 00AA                   .dbline 173
 00AA 80E0              ldi R24,<_localBuffer
 00AC 90E0              ldi R25,>_localBuffer
 00AE E42F              mov R30,R20
 00B0 FF27              clr R31
 00B2 E80F              add R30,R24
 00B4 F91F              adc R31,R25
 00B6 D901              movw R26,R18
 00B8 2D90              ld R2,X+
 00BA 9D01              movw R18,R26
 00BC 2082              std z+0,R2
 00BE                   .dbline 174
 00BE           L21:
 00BE                   .dbline 171
 00BE 4395              inc R20
 00C0           L23:
 00C0                   .dbline 171
 00C0 4017              cp R20,R16
 00C2 98F3              brlo L20
 00C4                   .dbline 175
 00C4           ;    { 
 00C4           ;       localBuffer[i] = *receiveData++; 
 00C4           ;    } 
 00C4           ;    localBufferLength = receiveDataLength; //接收的数据个数
 00C4 00930300          sts _localBufferLength,R16
 00C8                   .dbline -2
 00C8           L19:
 00C8 0E940000          xcall pop_gset1
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r i 20 c
 00CE                   .dbsym r receiveData 18 pc
 00CE                   .dbsym r receiveDataLength 16 c
 00CE                   .dbend
 00CE                   .dbfunc e i2cSlaveTransmitService _i2cSlaveTransmitService fc
 00CE           ;              i -> R20
 00CE           ;   transmitData -> R18,R19
 00CE           ; transmitDataLengthMax -> R16
                        .even
 00CE           _i2cSlaveTransmitService::
 00CE 0E940000          xcall push_gset1
 00D2                   .dbline -1
 00D2                   .dbline 180
 00D2           ; 
 00D2           ; } 
 00D2           ; 
 00D2           ; unsigned char i2cSlaveTransmitService(unsigned char transmitDataLengthMax, unsigned char* transmitData) 
 00D2           ; { 
 00D2                   .dbline 185
 00D2           ;    unsigned char i; 
 00D2           ; 
 00D2           ;    //此函数在本机被选中为从读出时运行 
 00D2           ;    //要发送的数据存入发送缓冲区 
 00D2           ;    for(i=0; i<localBufferLength; i++) 
 00D2 4427              clr R20
 00D4 0BC0              xjmp L28
 00D6           L25:
 00D6                   .dbline 186
 00D6                   .dbline 187
 00D6 80E0              ldi R24,<_localBuffer
 00D8 90E0              ldi R25,>_localBuffer
 00DA E42F              mov R30,R20
 00DC FF27              clr R31
 00DE E80F              add R30,R24
 00E0 F91F              adc R31,R25
 00E2 2080              ldd R2,z+0
 00E4 F901              movw R30,R18
 00E6 2192              st Z+,R2
 00E8 9F01              movw R18,R30
 00EA                   .dbline 188
 00EA           L26:
 00EA                   .dbline 185
 00EA 4395              inc R20
 00EC           L28:
 00EC                   .dbline 185
 00EC 20900300          lds R2,_localBufferLength
 00F0 4215              cp R20,R2
 00F2 88F3              brlo L25
 00F4                   .dbline 190
 00F4           ;    { 
 00F4           ;       *transmitData++ = localBuffer[i]; 
 00F4           ;    } 
 00F4           ; 
 00F4           ;    localBuffer[0]++; 
 00F4 80910000          lds R24,_localBuffer
 00F8 8F5F              subi R24,255    ; addi 1
 00FA 80930000          sts _localBuffer,R24
 00FE                   .dbline 192
 00FE           ; 
 00FE           ;    return localBufferLength; 
 00FE 022D              mov R16,R2
 0100                   .dbline -2
 0100           L24:
 0100 0E940000          xcall pop_gset1
 0104                   .dbline 0 ; func end
 0104 0895              ret
 0106                   .dbsym r i 20 c
 0106                   .dbsym r transmitData 18 pc
 0106                   .dbsym r transmitDataLengthMax 16 c
 0106                   .dbend
 0106                   .dbfunc e i2cGetState _i2cGetState fc
                        .even
 0106           _i2cGetState::
 0106                   .dbline -1
 0106                   .dbline 197
 0106           ; } 
 0106           ; 
 0106           ; /**********************************************/
 0106           ; eI2cStateType i2cGetState(void) 
 0106           ; { 
 0106                   .dbline 198
 0106           ;    return I2cState; 
 0106 00912C00          lds R16,_I2cState
 010A                   .dbline -2
 010A           L29:
 010A                   .dbline 0 ; func end
 010A 0895              ret
 010C                   .dbend
                        .area vector(rom, abs)
                        .org 68
 0044 0C948600          jmp _twi_isr
                        .area text(rom, con, rel)
 010C                   .dbfile G:\McuControl\i2cslave.c
 010C                   .dbfunc e twi_isr _twi_isr fV
 010C           ;         status -> R20
                        .even
 010C           _twi_isr::
 010C 0E940000          xcall push_lset
 0110 0E940000          xcall push_gset1
 0114                   .dbline -1
 0114                   .dbline 205
 0114           ; }  
 0114           ; 
 0114           ; // I2C (TWI) 中断服务程序 
 0114           ; //interrupt [TWI] void twi_isr(void) 
 0114           ; #pragma interrupt_handler twi_isr:18
 0114           ; void twi_isr(void)
 0114           ; { 
 0114                   .dbline 208
 0114           ;    //读状态位 
 0114           ;    unsigned char status; 
 0114           ;           status = TWSR & TWSR_STATUS_MASK; 
 0114 41B1              in R20,0x1
 0116 487F              andi R20,248
 0118                   .dbline 209
 0118           ;    switch(status) 
 0118 5527              clr R21
 011A 4838              cpi R20,136
 011C E0E0              ldi R30,0
 011E 5E07              cpc R21,R30
 0120 09F4              brne X3
 0122 8FC0              xjmp L38
 0124           X3:
 0124 88E8              ldi R24,136
 0126 90E0              ldi R25,0
 0128 8417              cp R24,R20
 012A 9507              cpc R25,R21
 012C 0CF4              brge X4
 012E 2FC0              xjmp L50
 0130           X4:
 0130           L49:
 0130 4836              cpi R20,104
 0132 E0E0              ldi R30,0
 0134 5E07              cpc R21,R30
 0136 09F4              brne X5
 0138 60C0              xjmp L34
 013A           X5:
 013A 88E6              ldi R24,104
 013C 90E0              ldi R25,0
 013E 8417              cp R24,R20
 0140 9507              cpc R25,R21
 0142 7CF0              brlt L52
 0144           L51:
 0144 4030              cpi R20,0
 0146 4507              cpc R20,R21
 0148 09F4              brne X6
 014A C7C0              xjmp L48
 014C           X6:
 014C           X0:
 014C 4030              cpi R20,0
 014E E0E0              ldi R30,0
 0150 5E07              cpc R21,R30
 0152 0CF4              brge X7
 0154 C9C0              xjmp L31
 0156           X7:
 0156           L53:
 0156 4036              cpi R20,96
 0158 E0E0              ldi R30,0
 015A 5E07              cpc R21,R30
 015C 09F4              brne X8
 015E 4DC0              xjmp L34
 0160           X8:
 0160 C3C0              xjmp L31
 0162           L52:
 0162 4837              cpi R20,120
 0164 E0E0              ldi R30,0
 0166 5E07              cpc R21,R30
 0168 09F4              brne X9
 016A 47C0              xjmp L34
 016C           X9:
 016C 88E7              ldi R24,120
 016E 90E0              ldi R25,0
 0170 8417              cp R24,R20
 0172 9507              cpc R25,R21
 0174 34F0              brlt L55
 0176           L54:
 0176 4037              cpi R20,112
 0178 E0E0              ldi R30,0
 017A 5E07              cpc R21,R30
 017C 09F4              brne X10
 017E 3DC0              xjmp L34
 0180           X10:
 0180 B3C0              xjmp L31
 0182           L55:
 0182 4038              cpi R20,128
 0184 E0E0              ldi R30,0
 0186 5E07              cpc R21,R30
 0188 09F4              brne X11
 018A 42C0              xjmp L35
 018C           X11:
 018C ADC0              xjmp L31
 018E           L50:
 018E 483B              cpi R20,184
 0190 E0E0              ldi R30,0
 0192 5E07              cpc R21,R30
 0194 09F4              brne X12
 0196 74C0              xjmp L43
 0198           X12:
 0198 88EB              ldi R24,184
 019A 90E0              ldi R25,0
 019C 8417              cp R24,R20
 019E 9507              cpc R25,R21
 01A0 B4F0              brlt L57
 01A2           L56:
 01A2 483A              cpi R20,168
 01A4 E0E0              ldi R30,0
 01A6 5E07              cpc R21,R30
 01A8 09F4              brne X13
 01AA 59C0              xjmp L40
 01AC           X13:
 01AC 88EA              ldi R24,168
 01AE 90E0              ldi R25,0
 01B0 8417              cp R24,R20
 01B2 9507              cpc R25,R21
 01B4 34F0              brlt L59
 01B6           L58:
 01B6 403A              cpi R20,160
 01B8 E0E0              ldi R30,0
 01BA 5E07              cpc R21,R30
 01BC 09F4              brne X14
 01BE 44C0              xjmp L39
 01C0           X14:
 01C0 93C0              xjmp L31
 01C2           L59:
 01C2 403B              cpi R20,176
 01C4 E0E0              ldi R30,0
 01C6 5E07              cpc R21,R30
 01C8 09F4              brne X15
 01CA 49C0              xjmp L40
 01CC           X15:
 01CC 8DC0              xjmp L31
 01CE           L57:
 01CE 483C              cpi R20,200
 01D0 E0E0              ldi R30,0
 01D2 5E07              cpc R21,R30
 01D4 09F4              brne X16
 01D6 77C0              xjmp L46
 01D8           X16:
 01D8 88EC              ldi R24,200
 01DA 90E0              ldi R25,0
 01DC 8417              cp R24,R20
 01DE 9507              cpc R25,R21
 01E0 34F0              brlt L61
 01E2           L60:
 01E2 403C              cpi R20,192
 01E4 E0E0              ldi R30,0
 01E6 5E07              cpc R21,R30
 01E8 09F4              brne X17
 01EA 6DC0              xjmp L46
 01EC           X17:
 01EC 7DC0              xjmp L31

⌨️ 快捷键说明

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