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

📄 twi.lis

📁 mp3代码 要用的干净下啊 希望用东西共享啊
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 026C                   .dbline 293
 026C           L96:
 026C                   .dbline 293
 026C           L97:
 026C                   .dbline 293
 026C 26B6              in R2,0x36
 026E 27FE              sbrs R2,7
 0270 FDCF              rjmp L96
 0272                   .dbline 293
 0272                   .dbline 293
 0272                   .dbline 294
 0272 2A95              dec R18
 0274                   .dbline 295
 0274 A895              wdr
 0276                   .dbline 296
 0276           L94:
 0276                   .dbline 290
 0276 2223              tst R18
 0278 89F7              brne L93
 027A                   .dbline 297
 027A           ;          Twi_WaitForComplete(); 
 027A           ;          length--; 
 027A           ;                WDR(); //喂狗;
 027A           ;       } 
 027A           ;    } 
 027A 01C0              xjmp L92
 027C           L91:
 027C                   .dbline 299
 027C           ;    else 
 027C           ;    { 
 027C                   .dbline 301
 027C           ;       // 如未回应器件地址,停止发送,返回错误 
 027C           ;          retval = TWI_ERROR_NODEV; 
 027C 41E0              ldi R20,1
 027E                   .dbline 302
 027E           ;    } 
 027E           L92:
 027E                   .dbline 305
 027E           ; 
 027E           ;    // 发送停止条件,保持TWEA以便从接收 
 027E           ;    Twi_Stop(); 
 027E 86B7              in R24,0x36
 0280 8F70              andi R24,15
 0282 806D              ori R24,208
 0284 86BF              out 0x36,R24
 0286           L99:
 0286                   .dbline 306
 0286           L100:
 0286                   .dbline 306
 0286           ;    while( !(TWCR&(1<<TWSTO)) ); 
 0286 26B6              in R2,0x36
 0288 24FE              sbrs R2,4
 028A FDCF              rjmp L99
 028C                   .dbline 308
 028C           ;    // 开Twi_中断 
 028C           ;    TWCR|=(1<<TWIE); 
 028C 86B7              in R24,0x36
 028E 8160              ori R24,1
 0290 86BF              out 0x36,R24
 0292                   .dbline 309
 0292           ;    return retval; 
 0292 042F              mov R16,R20
 0294                   .dbline -2
 0294           L84:
 0294 0E940000          xcall pop_gset2
 0298                   .dbline 0 ; func end
 0298 0895              ret
 029A                   .dbsym r retval 20 c
 029A                   .dbsym r data 22 pc
 029A                   .dbsym r length 18 c
 029A                   .dbsym r deviceAddr 16 c
 029A                   .dbend
 029A                   .dbfunc e Twi_MasterReceiveNI _Twi_MasterReceiveNI fc
 029A           ;         retval -> R20
 029A           ;           data -> R22,R23
 029A           ;         length -> R18
 029A           ;     deviceAddr -> R16
                        .even
 029A           _Twi_MasterReceiveNI::
 029A 0E940000          xcall push_gset2
 029E 6C81              ldd R22,y+4
 02A0 7D81              ldd R23,y+5
 02A2                   .dbline -1
 02A2                   .dbline 326
 02A2           ; } 
 02A2           ; /*********************************************************************************************************
 02A2           ; ** 函数名称:主模式非中断接收
 02A2           ; ** 功能描述:
 02A2           ; ** 输 入:  deviceAddr:从机地址
 02A2           ; **          length:数据长度
 02A2           ; **          * data  缓冲区指针
 02A2           ; ** 输  出:             
 02A2           ; ** 全局变量: 
 02A2           ; ** 调用模块: 
 02A2           ; ** 说明:
 02A2           ; ** 注意:    
 02A2           ; ** 日 期:   2006年8月29日
 02A2           ; ********************************************************************************************************/
 02A2           ; 
 02A2           ; uint8 Twi_MasterReceiveNI(uint8 deviceAddr, uint8 length, uint8 *data) 
 02A2           ; { 
 02A2                   .dbline 327
 02A2           ;    uint8 retval = TWI_OK; 
 02A2 4427              clr R20
 02A4                   .dbline 328
 02A4           ;    WDR(); //喂狗;
 02A4 A895              wdr
 02A6                   .dbline 330
 02A6           ;    // 关Twi_中断 
 02A6           ;           TWCR&=~(1<<TWIE); 
 02A6 86B7              in R24,0x36
 02A8 8E7F              andi R24,254
 02AA 86BF              out 0x36,R24
 02AC                   .dbline 334
 02AC           ;                 
 02AC           ;    //发送开始条件 
 02AC           ;    
 02AC           ;    Twi_Start(); 
 02AC 86B7              in R24,0x36
 02AE 8F70              andi R24,15
 02B0 806A              ori R24,160
 02B2 86BF              out 0x36,R24
 02B4                   .dbline 335
 02B4           ;    WDR(); //喂狗;
 02B4 A895              wdr
 02B6                   .dbline 336
 02B6           L103:
 02B6                   .dbline 336
 02B6           L104:
 02B6                   .dbline 336
 02B6           ;    Twi_WaitForComplete(); 
 02B6 26B6              in R2,0x36
 02B8 27FE              sbrs R2,7
 02BA FDCF              rjmp L103
 02BC                   .dbline 336
 02BC                   .dbline 336
 02BC                   .dbline 338
 02BC           ;    // 发送器件读地址 
 02BC           ;    Twi_SendByte( deviceAddr | 0x01 );
 02BC                   .dbline 338
 02BC 802F              mov R24,R16
 02BE 8160              ori R24,1
 02C0 83B9              out 0x3,R24
 02C2                   .dbline 338
 02C2 86B7              in R24,0x36
 02C4 8F70              andi R24,15
 02C6 8068              ori R24,128
 02C8 86BF              out 0x36,R24
 02CA                   .dbline 338
 02CA                   .dbline 338
 02CA                   .dbline 339
 02CA           ;    WDR(); //喂狗; 
 02CA A895              wdr
 02CC                   .dbline 340
 02CC           L106:
 02CC                   .dbline 340
 02CC           L107:
 02CC                   .dbline 340
 02CC           ;    Twi_WaitForComplete(); 
 02CC 26B6              in R2,0x36
 02CE 27FE              sbrs R2,7
 02D0 FDCF              rjmp L106
 02D2                   .dbline 340
 02D2                   .dbline 340
 02D2                   .dbline 342
 02D2           ;    // 检查器件是否可用 
 02D2           ;    if( TWSR == TW_MR_SLA_ACK) 
 02D2 81B1              in R24,0x1
 02D4 8034              cpi R24,64
 02D6 E9F4              brne L109
 02D8                   .dbline 343
 02D8           ;    { 
 02D8 0DC0              xjmp L112
 02DA           L111:
 02DA                   .dbline 346
 02DA           ;       // 接收数据并回应 
 02DA           ;       while(length > 1) 
 02DA           ;       { 
 02DA                   .dbline 347
 02DA           ;          Twi_Ack(); 
 02DA 86B7              in R24,0x36
 02DC 8F70              andi R24,15
 02DE 806C              ori R24,192
 02E0 86BF              out 0x36,R24
 02E2                   .dbline 348
 02E2           L114:
 02E2                   .dbline 348
 02E2           L115:
 02E2                   .dbline 348
 02E2 26B6              in R2,0x36
 02E4 27FE              sbrs R2,7
 02E6 FDCF              rjmp L114
 02E8                   .dbline 348
 02E8                   .dbline 348
 02E8                   .dbline 349
 02E8 23B0              in R2,0x3
 02EA FB01              movw R30,R22
 02EC 2192              st Z+,R2
 02EE BF01              movw R22,R30
 02F0                   .dbline 350
 02F0 2A95              dec R18
 02F2                   .dbline 351
 02F2 A895              wdr
 02F4                   .dbline 352
 02F4           L112:
 02F4                   .dbline 345
 02F4 81E0              ldi R24,1
 02F6 8217              cp R24,R18
 02F8 80F3              brlo L111
 02FA                   .dbline 354
 02FA           ;          Twi_WaitForComplete(); 
 02FA           ;          *data++ = TWDR; 
 02FA           ;          length--; 
 02FA           ;                WDR(); //喂狗;
 02FA           ;       } 
 02FA           ;       //  接收数据无回应 (末位信号) 
 02FA           ;       Twi_NoAcK(); 
 02FA 86B7              in R24,0x36
 02FC 8F70              andi R24,15
 02FE 8068              ori R24,128
 0300 86BF              out 0x36,R24
 0302                   .dbline 355
 0302           L117:
 0302                   .dbline 355
 0302           L118:
 0302                   .dbline 355
 0302           ;       Twi_WaitForComplete(); 
 0302 26B6              in R2,0x36
 0304 27FE              sbrs R2,7
 0306 FDCF              rjmp L117
 0308                   .dbline 355
 0308                   .dbline 355
 0308                   .dbline 356
 0308           ;       *data++ = TWDR; 
 0308 23B0              in R2,0x3
 030A FB01              movw R30,R22
 030C 2192              st Z+,R2
 030E BF01              movw R22,R30
 0310                   .dbline 357
 0310           ;    } 
 0310 01C0              xjmp L110
 0312           L109:
 0312                   .dbline 359
 0312           ;    else 
 0312           ;    { 
 0312                   .dbline 361
 0312           ;       // 如未回应器件地址,停止发送,返回错误 
 0312           ;       retval = TWI_ERROR_NODEV; 
 0312 41E0              ldi R20,1
 0314                   .dbline 362
 0314           ;    } 
 0314           L110:
 0314                   .dbline 364
 0314           ;    // 发送停止条件,保持TWEA以便从接收 
 0314           ;    Twi_Stop(); 
 0314 86B7              in R24,0x36
 0316 8F70              andi R24,15
 0318 806D              ori R24,208
 031A 86BF              out 0x36,R24
 031C                   .dbline 366
 031C           ;    // 开Twi_中断 
 031C           ;           TWCR|=TWIE; 
 031C 26B6              in R2,0x36
 031E 26BE              out 0x36,R2
 0320                   .dbline 367
 0320           ;    return retval; 
 0320 042F              mov R16,R20
 0322                   .dbline -2
 0322           L102:
 0322 0E940000          xcall pop_gset2
 0326                   .dbline 0 ; func end
 0326 0895              ret
 0328                   .dbsym r retval 20 c
 0328                   .dbsym r data 22 pc
 0328                   .dbsym r length 18 c
 0328                   .dbsym r deviceAddr 16 c
 0328                   .dbend
 0328                   .dbfunc e Twi_SlaveReceiveService _Twi_SlaveReceiveService fV
 0328           ;              i -> R20
                        .even
 0328           _Twi_SlaveReceiveService::
 0328 0E940000          xcall push_gset1
 032C                   .dbline -1
 032C                   .dbline 382
 032C           ; } 
 032C           ; /*********************************************************************************************************
 032C           ; ** 函数名称:Twi_SlaveReceiveService
 032C           ; ** 功能描述:此函数在本机被选中为从写入时运行 
 032C           ; ** 输 入:  receiveDataLength:接收数据长度
 032C           ; **          * receiveData:数据缓冲区指针
 032C           ; ** 输  出:             
 032C           ; ** 全局变量: 
 032C           ; ** 调用模块: 
 032C           ; ** 说明:
 032C           ; ** 注意:    
 032C           ; ** 日 期:   2006年8月29日
 032C           ; ********************************************************************************************************/
 032C           ; void Twi_SlaveReceiveService() 
 032C           ; { 
 032C                   .dbline 384
 032C           ;    uint8 i; 
 032C           ;    WDR(); //喂狗;
 032C A895              wdr
 032E                   .dbline 387
 032E           ;   //此函数在本机被选中为从写入时运行 
 032E           ;    // 接收到的数据存入本地缓冲区
 032E           ; if((Twi_LocalBuffer.status==TWI_DATA_RECEIVE)&&(Twi_ReceiveBuffer.status==TWI_DATA_RECEIVE))   
 032E 80911900          lds R24,_Twi_LocalBuffer+7
 0332 8130              cpi R24,1
 0334 D1F4              brne L121
 0336 80911000          lds R24,_Twi_ReceiveBuffer+7
 033A 8130              cpi R24,1

⌨️ 快捷键说明

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