📄 twi.lis
字号:
00A0 5E07 cpc R21,R30
00A2 09F4 brne X5
00A4 6BC0 xjmp L23
00A6 X5:
00A6 80E7 ldi R24,112
00A8 90E0 ldi R25,0
00AA 8417 cp R24,R20
00AC 9507 cpc R25,R21
00AE ACF0 brlt L35
00B0 L34:
00B0 4036 cpi R20,96
00B2 E0E0 ldi R30,0
00B4 5E07 cpc R21,R30
00B6 09F4 brne X6
00B8 61C0 xjmp L23
00BA X6:
00BA 80E6 ldi R24,96
00BC 90E0 ldi R25,0
00BE 8417 cp R24,R20
00C0 9507 cpc R25,R21
00C2 2CF0 brlt L37
00C4 L36:
00C4 4030 cpi R20,0
00C6 4507 cpc R20,R21
00C8 09F4 brne X7
00CA 85C0 xjmp L31
00CC X7:
00CC X0:
00CC 88C0 xjmp L21
00CE L37:
00CE 4836 cpi R20,104
00D0 E0E0 ldi R30,0
00D2 5E07 cpc R21,R30
00D4 09F4 brne X8
00D6 52C0 xjmp L23
00D8 X8:
00D8 82C0 xjmp L21
00DA L35:
00DA 4038 cpi R20,128
00DC E0E0 ldi R30,0
00DE 5E07 cpc R21,R30
00E0 09F4 brne X9
00E2 51C0 xjmp L24
00E4 X9:
00E4 80E8 ldi R24,128
00E6 90E0 ldi R25,0
00E8 8417 cp R24,R20
00EA 9507 cpc R25,R21
00EC 34F0 brlt L39
00EE L38:
00EE 4837 cpi R20,120
00F0 E0E0 ldi R30,0
00F2 5E07 cpc R21,R30
00F4 09F4 brne X10
00F6 42C0 xjmp L23
00F8 X10:
00F8 72C0 xjmp L21
00FA L39:
00FA 4838 cpi R20,136
00FC E0E0 ldi R30,0
00FE 5E07 cpc R21,R30
0100 09F4 brne X11
0102 41C0 xjmp L24
0104 X11:
0104 6CC0 xjmp L21
0106 L33:
0106 403B cpi R20,176
0108 E0E0 ldi R30,0
010A 5E07 cpc R21,R30
010C 09F4 brne X12
010E 50C0 xjmp L27
0110 X12:
0110 80EB ldi R24,176
0112 90E0 ldi R25,0
0114 8417 cp R24,R20
0116 9507 cpc R25,R21
0118 ACF0 brlt L41
011A L40:
011A 403A cpi R20,160
011C E0E0 ldi R30,0
011E 5E07 cpc R21,R30
0120 09F4 brne X13
0122 41C0 xjmp L26
0124 X13:
0124 80EA ldi R24,160
0126 90E0 ldi R25,0
0128 8417 cp R24,R20
012A 9507 cpc R25,R21
012C 2CF0 brlt L43
012E L42:
012E 4839 cpi R20,152
0130 E0E0 ldi R30,0
0132 5E07 cpc R21,R30
0134 99F1 breq L25
0136 53C0 xjmp L21
0138 L43:
0138 483A cpi R20,168
013A E0E0 ldi R30,0
013C 5E07 cpc R21,R30
013E 09F4 brne X14
0140 37C0 xjmp L27
0142 X14:
0142 4DC0 xjmp L21
0144 L41:
0144 403C cpi R20,192
0146 E0E0 ldi R30,0
0148 5E07 cpc R21,R30
014A 09F4 brne X15
014C 3DC0 xjmp L29
014E X15:
014E 80EC ldi R24,192
0150 90E0 ldi R25,0
0152 8417 cp R24,R20
0154 9507 cpc R25,R21
0156 2CF0 brlt L45
0158 L44:
0158 483B cpi R20,184
015A E0E0 ldi R30,0
015C 5E07 cpc R21,R30
015E 81F1 breq L28
0160 3EC0 xjmp L21
0162 L45:
0162 483C cpi R20,200
0164 E0E0 ldi R30,0
0166 5E07 cpc R21,R30
0168 79F1 breq L29
016A 483C cpi R20,200
016C E0E0 ldi R30,0
016E 5E07 cpc R21,R30
0170 B4F1 brlt L21
0172 L46:
0172 483F cpi R20,248
0174 E0E0 ldi R30,0
0176 5E07 cpc R21,R30
0178 91F1 breq L21
017A 31C0 xjmp L21
017C X1:
017C .dbline 78
017C ; {
017C L23:
017C .dbline 84
017C ; //从接收
017C ; case TW_SR_SLA_ACK:
017C ; case TW_SR_ARB_LOST_SLA_ACK:
017C ; case TW_SR_GCALL_ACK:
017C ; case TW_SR_ARB_LOST_GCALL_ACK:
017C ; Twi_Ack(); //返回ACK
017C .dbline 84
017C 86B7 in R24,0x36
017E 8F70 andi R24,15
0180 806C ori R24,192
0182 86BF out 0x36,R24
0184 .dbline 84
0184 .dbline 84
0184 .dbline 85
0184 ; break;
0184 2CC0 xjmp L21
0186 L24:
0186 .dbline 88
0186 ; case TW_SR_DATA_ACK:
0186 ; case TW_SR_DATA_NACK:
0186 ; main_tmp = TWDR;
0186 23B0 in R2,0x3
0188 20920000 sts _main_tmp,R2
018C .dbline 89
018C ; PORTA = ~ TWDR; //接收数据并显示
018C 23B0 in R2,0x3
018E 2094 com R2
0190 2BBA out 0x1b,R2
0192 .dbline 90
0192 ; Twi_Ack(); //返回ACK
0192 .dbline 90
0192 86B7 in R24,0x36
0194 8F70 andi R24,15
0196 806C ori R24,192
0198 86BF out 0x36,R24
019A .dbline 90
019A .dbline 90
019A .dbline 91
019A ; break;
019A 21C0 xjmp L21
019C L25:
019C .dbline 94
019C ; case TW_SR_GCALL_DATA_ACK:
019C ; case TW_SR_GCALL_DATA_NACK:
019C ; Twi_Ack(); //返回ACK
019C .dbline 94
019C 86B7 in R24,0x36
019E 8F70 andi R24,15
01A0 806C ori R24,192
01A2 86BF out 0x36,R24
01A4 .dbline 94
01A4 .dbline 94
01A4 .dbline 95
01A4 ; break;
01A4 1CC0 xjmp L21
01A6 L26:
01A6 .dbline 97
01A6 ; case TW_SR_STOP:
01A6 ; Twi_Ack();
01A6 .dbline 97
01A6 86B7 in R24,0x36
01A8 8F70 andi R24,15
01AA 806C ori R24,192
01AC 86BF out 0x36,R24
01AE .dbline 97
01AE .dbline 97
01AE .dbline 98
01AE ; break;
01AE 17C0 xjmp L21
01B0 L27:
01B0 .dbline 104
01B0 ; //从发送*****************************
01B0 ;
01B0 ; case TW_ST_SLA_ACK: // 0xA8: 自己的SLA+R 已经被接收,ACK 已返回
01B0 ; case TW_ST_ARB_LOST_SLA_ACK:// 0xB0: SLA+R/W 作为主机的仲裁失败;自己的SLA+R 已经被接收,ACK 已返回
01B0 ; // 被选中为从读出 (数据将从传回主机)
01B0 ; TWDR=main_tmp; //发送全局变量中值
01B0 20900000 lds R2,_main_tmp
01B4 23B8 out 0x3,R2
01B6 .dbline 105
01B6 ; Twi_Ack();
01B6 .dbline 105
01B6 86B7 in R24,0x36
01B8 8F70 andi R24,15
01BA 806C ori R24,192
01BC 86BF out 0x36,R24
01BE .dbline 105
01BE .dbline 105
01BE .dbline 106
01BE ; break;
01BE 0FC0 xjmp L21
01C0 L28:
01C0 .dbline 109
01C0 ; case TW_ST_DATA_ACK: // 0xB8: TWDR 里数据已经发送,接收到ACK
01C0 ; //发送数据位
01C0 ; TWDR=main_tmp;
01C0 20900000 lds R2,_main_tmp
01C4 23B8 out 0x3,R2
01C6 .dbline 110
01C6 ; break;
01C6 0BC0 xjmp L21
01C8 L29:
01C8 .dbline 115
01C8 ; case TW_ST_DATA_NACK: // 0xC0: TWDR 里数据已经发送接收到NOT ACK
01C8 ; case TW_ST_LAST_DATA: // 0xC8: TWDR 的一字节数据已经发送(TWAE = “0”);接收到ACK
01C8 ; // 全部完成
01C8 ; // 从方式开放
01C8 ; Twi_NoAcK();
01C8 .dbline 115
01C8 86B7 in R24,0x36
01CA 8F70 andi R24,15
01CC 8068 ori R24,128
01CE 86BF out 0x36,R24
01D0 .dbline 115
01D0 .dbline 115
01D0 .dbline 116
01D0 ; twi_slave_init(0x50); //重新回到初始化状态,等待接收模式的到来
01D0 00E5 ldi R16,80
01D2 1FDF xcall _twi_slave_init
01D4 .dbline 117
01D4 ; break;
01D4 04C0 xjmp L21
01D6 X2:
01D6 .dbline 120
01D6 ; case TW_NO_INFO: // 0xF8: 没有相关的状态信息;TWINT = “0”
01D6 ; // 无操作
01D6 ; break;
01D6 L31:
01D6 .dbline 123
01D6 86B7 in R24,0x36
01D8 8F70 andi R24,15
01DA 806D ori R24,208
01DC 86BF out 0x36,R24
01DE .dbline 124
01DE .dbline 126
01DE L21:
01DE .dbline -2
01DE L19:
01DE 0E940000 xcall pop_gset1
01E2 0E940000 xcall pop_lset
01E6 .dbline 0 ; func end
01E6 1895 reti
01E8 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -