📄 twi.lis
字号:
033C B1F4 brne L121
033E .dbline 388
033E ; {
033E .dbline 389
033E ; for(i=0;!EmptyQueue(&Twi_ReceiveBuffer); i++)
033E 4427 clr R20
0340 0AC0 xjmp L128
0342 L125:
0342 .dbline 390
0342 .dbline 391
0342 00E0 ldi R16,<_Twi_ReceiveBuffer
0344 10E0 ldi R17,>_Twi_ReceiveBuffer
0346 0E940000 xcall _DeQueue
034A 202F mov R18,R16
034C 00E0 ldi R16,<_Twi_LocalBuffer
034E 10E0 ldi R17,>_Twi_LocalBuffer
0350 0E940000 xcall _EnQueue
0354 .dbline 392
0354 L126:
0354 .dbline 389
0354 4395 inc R20
0356 L128:
0356 .dbline 389
0356 20900B00 lds R2,_Twi_ReceiveBuffer+2
035A 2220 tst R2
035C 91F7 brne L125
035E .dbline 393
035E 2224 clr R2
0360 20921000 sts _Twi_ReceiveBuffer+7,R2
0364 .dbline 394
0364 83E0 ldi R24,3
0366 80931900 sts _Twi_LocalBuffer+7,R24
036A .dbline 395
036A L121:
036A .dbline -2
036A L120:
036A 0E940000 xcall pop_gset1
036E .dbline 0 ; func end
036E 0895 ret
0370 .dbsym r i 20 c
0370 .dbend
0370 .dbfunc e Twi_SlaveTransmitService _Twi_SlaveTransmitService fc
0370 ; i -> R20
.even
0370 _Twi_SlaveTransmitService::
0370 0E940000 xcall push_gset1
0374 .dbline -1
0374 .dbline 409
0374 ; {
0374 ; EnQueue(&Twi_LocalBuffer, DeQueue(&Twi_ReceiveBuffer));
0374 ; }
0374 ; Twi_ReceiveBuffer.status=TWI_DATA_FREE;
0374 ; Twi_LocalBuffer.status=TWI_DATA_READY;
0374 ; }
0374 ; }
0374 ; /*********************************************************************************************************
0374 ; ** 函数名称:Twi_SlaveTransmitService
0374 ; ** 功能描述:此函数在本机被选中为从读出时运行
0374 ; ** 输 入: transmitDataLengthMax
0374 ; ** 输 出:
0374 ; ** 全局变量:
0374 ; ** 调用模块:
0374 ; ** 说明:
0374 ; ** 注意:
0374 ; ** 日 期: 2006年8月29日
0374 ; ********************************************************************************************************/
0374 ; uint8 Twi_SlaveTransmitService(void)
0374 ; {
0374 .dbline 410
0374 ; uint8 i=0;
0374 4427 clr R20
0376 .dbline 411
0376 ; WDR(); //喂狗;
0376 A895 wdr
0378 .dbline 416
0378 ; //此函数在本机被选中为从读出时运行
0378 ; //要发送的数据存入发送缓冲区
0378 ;
0378 ;
0378 ; if ((Twi_LocalBuffer.status==TWI_DATA_SEND)&&Twi_SendBuffer.status==TWI_DATA_FREE)
0378 80911900 lds R24,_Twi_LocalBuffer+7
037C 8230 cpi R24,2
037E 11F5 brne L133
0380 20900700 lds R2,_Twi_SendBuffer+7
0384 2220 tst R2
0386 F1F4 brne L133
0388 .dbline 417
0388 ; {
0388 .dbline 418
0388 ; InitQueue(&Twi_SendBuffer); //清除上次发送的信息
0388 00E0 ldi R16,<_Twi_SendBuffer
038A 10E0 ldi R17,>_Twi_SendBuffer
038C 0E940000 xcall _InitQueue
0390 .dbline 419
0390 ; for(i=0; (Twi_LocalBuffer.count>0)&&(Twi_SendBuffer.errorcode!=QUEUE_OVERFLOW); i++)
0390 0AC0 xjmp L140
0392 L137:
0392 .dbline 420
0392 .dbline 421
0392 00E0 ldi R16,<_Twi_LocalBuffer
0394 10E0 ldi R17,>_Twi_LocalBuffer
0396 0E940000 xcall _DeQueue
039A 202F mov R18,R16
039C 00E0 ldi R16,<_Twi_SendBuffer
039E 10E0 ldi R17,>_Twi_SendBuffer
03A0 0E940000 xcall _EnQueue
03A4 .dbline 422
03A4 L138:
03A4 .dbline 419
03A4 4395 inc R20
03A6 L140:
03A6 .dbline 419
03A6 2224 clr R2
03A8 30901400 lds R3,_Twi_LocalBuffer+2
03AC 2314 cp R2,R3
03AE 20F4 brsh L143
03B0 80910600 lds R24,_Twi_SendBuffer+6
03B4 8130 cpi R24,1
03B6 69F7 brne L137
03B8 L143:
03B8 .dbline 423
03B8 ; {
03B8 ; EnQueue(&Twi_SendBuffer,DeQueue(&Twi_LocalBuffer));
03B8 ; }
03B8 ; Twi_SendBuffer.status= TWI_DATA_SEND;
03B8 82E0 ldi R24,2
03BA 80930700 sts _Twi_SendBuffer+7,R24
03BE .dbline 424
03BE ; Twi_LocalBuffer.status=TWI_DATA_FREE;
03BE 2224 clr R2
03C0 20921900 sts _Twi_LocalBuffer+7,R2
03C4 .dbline 425
03C4 ; }
03C4 L133:
03C4 .dbline 426
03C4 ; return i;
03C4 042F mov R16,R20
03C6 .dbline -2
03C6 L132:
03C6 0E940000 xcall pop_gset1
03CA .dbline 0 ; func end
03CA 0895 ret
03CC .dbsym r i 20 c
03CC .dbend
.area vector(rom, abs)
.org 76
004C 0C94E601 jmp _twi_isr
.area text(rom, con, rel)
03CC .dbfile D:\桌面\mp3\TWI\TWI.c
03CC .dbfunc e twi_isr _twi_isr fV
03CC ; status -> R20
.even
03CC _twi_isr::
03CC 0E940000 xcall push_lset
03D0 0E940000 xcall push_gset2
03D4 .dbline -1
03D4 .dbline 441
03D4 ; }
03D4 ; /*********************************************************************************************************
03D4 ; ** 函数名称:
03D4 ; ** 功能描述:Twi_ (TWI) 中断服务程序
03D4 ; ** 输 入:
03D4 ; ** 输 出:
03D4 ; ** 全局变量:
03D4 ; ** 调用模块:
03D4 ; ** 说明:
03D4 ; ** 注意:
03D4 ; ** 日 期: 2006年8月29日
03D4 ; ********************************************************************************************************/
03D4 ; #pragma interrupt_handler twi_isr: iv_TWI
03D4 ; void twi_isr(void)
03D4 ; {
03D4 .dbline 444
03D4 ; //读状态位
03D4 ; uint8 status;
03D4 ; status = TWSR & TWSR_STATUS_MASK;
03D4 41B1 in R20,0x1
03D6 487F andi R20,248
03D8 .dbline 445
03D8 ; switch(status)
03D8 642F mov R22,R20
03DA 7727 clr R23
03DC 6836 cpi R22,104
03DE E0E0 ldi R30,0
03E0 7E07 cpc R23,R30
03E2 09F4 brne X4
03E4 31C1 xjmp L168
03E6 X4:
03E6 88E6 ldi R24,104
03E8 90E0 ldi R25,0
03EA 8617 cp R24,R22
03EC 9707 cpc R25,R23
03EE 0CF4 brge X5
03F0 6AC0 xjmp L191
03F2 X5:
03F2 L190:
03F2 6033 cpi R22,48
03F4 E0E0 ldi R30,0
03F6 7E07 cpc R23,R30
03F8 09F4 brne X6
03FA F8C0 xjmp L157
03FC X6:
03FC 80E3 ldi R24,48
03FE 90E0 ldi R25,0
0400 8617 cp R24,R22
0402 9707 cpc R25,R23
0404 0CF4 brge X7
0406 2FC0 xjmp L193
0408 X7:
0408 L192:
0408 6031 cpi R22,16
040A E0E0 ldi R30,0
040C 7E07 cpc R23,R30
040E 09F4 brne X8
0410 C5C0 xjmp L150
0412 X8:
0412 80E1 ldi R24,16
0414 90E0 ldi R25,0
0416 8617 cp R24,R22
0418 9707 cpc R25,R23
041A 7CF0 brlt L195
041C L194:
041C 6030 cpi R22,0
041E 6707 cpc R22,R23
0420 09F4 brne X9
0422 78C1 xjmp L189
0424 X9:
0424 X1:
0424 6030 cpi R22,0
0426 E0E0 ldi R30,0
0428 7E07 cpc R23,R30
042A 0CF4 brge X10
042C 7AC1 xjmp L147
042E X10:
042E L196:
042E 6830 cpi R22,8
0430 E0E0 ldi R30,0
0432 7E07 cpc R23,R30
0434 09F4 brne X11
0436 B2C0 xjmp L150
0438 X11:
0438 74C1 xjmp L147
043A L195:
043A 6032 cpi R22,32
043C E0E0 ldi R30,0
043E 7E07 cpc R23,R30
0440 09F4 brne X12
0442 D4C0 xjmp L157
0444 X12:
0444 80E2 ldi R24,32
0446 90E0 ldi R25,0
0448 8617 cp R24,R22
044A 9707 cpc R25,R23
044C 34F0 brlt L198
044E L197:
044E 6831 cpi R22,24
0450 E0E0 ldi R30,0
0452 7E07 cpc R23,R30
0454 09F4 brne X13
0456 AAC0 xjmp L151
0458 X13:
0458 64C1 xjmp L147
045A L198:
045A 6832 cpi R22,40
045C E0E0 ldi R30,0
045E 7E07 cpc R23,R30
0460 09F4 brne X14
0462 A4C0 xjmp L151
0464 X14:
0464 5EC1 xjmp L147
0466 L193:
0466 6834 cpi R22,72
0468 E0E0 ldi R30,0
046A 7E07 cpc R23,R30
046C 09F4 brne X15
046E BEC0 xjmp L157
0470 X15:
0470 88E4 ldi R24,72
0472 90E0 ldi R25,0
0474 8617 cp R24,R22
0476 9707 cpc R25,R23
0478 84F0 brlt L200
047A L199:
047A 6833 cpi R22,56
047C E0E0 ldi R30,0
047E 7E07 cpc R23,R30
0480 09F4 brne X16
0482 BCC0 xjmp L158
0484 X16:
0484 6833 cpi R22,56
0486 E0E0 ldi R30,0
0488 7E07 cpc R23,R30
048A 0CF4 brge X17
048C 4AC1 xjmp L147
048E X17:
048E L201:
048E 6034 cpi R22,64
0490 E0E0 ldi R30,0
0492 7E07 cpc R23,R30
0494 09F4 brne X18
0496 BFC0 xjmp L160
0498 X18:
0498 44C1 xjmp L147
049A L200:
049A 6835 cpi R22,88
049C E0E0 ldi R30,0
049E 7E07 cpc R23,R30
04A0 09F4 brne X19
04A2 9FC0 xjmp L156
04A4 X19:
04A4 88E5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -