📄 d12ci.lis
字号:
00DA .dbline 91
00DA ; if(i==0x60)
00DA 6036 cpi R22,96
00DC 51F4 brne L19
00DE .dbline 92
00DE ; bEPPflags.bits.ep1buf_full=1;
00DE 80910000 lds R24,_bEPPflags
00E2 90910100 lds R25,_bEPPflags+1
00E6 9460 ori R25,4
00E8 90930100 sts _bEPPflags+1,R25
00EC 80930000 sts _bEPPflags,R24
00F0 09C0 xjmp L20
00F2 L19:
00F2 .dbline 94
00F2 ; else
00F2 ; bEPPflags.bits.ep1buf_full=0;
00F2 80910000 lds R24,_bEPPflags
00F6 90910100 lds R25,_bEPPflags+1
00FA 9B7F andi R25,251
00FC 90930100 sts _bEPPflags+1,R25
0100 80930000 sts _bEPPflags,R24
0104 L20:
0104 .dbline 95
0104 ; }
0104 L17:
0104 .dbline 96
0104 ; if(endp==4)
0104 0430 cpi R16,4
0106 A9F4 brne L21
0108 .dbline 97
0108 ; {
0108 .dbline 98
0108 ; if(i==0x60)
0108 6036 cpi R22,96
010A 51F4 brne L23
010C .dbline 99
010C ; bEPPflags.bits.mainbuf_full=1;
010C 80910000 lds R24,_bEPPflags
0110 90910100 lds R25,_bEPPflags+1
0114 9068 ori R25,128
0116 90930100 sts _bEPPflags+1,R25
011A 80930000 sts _bEPPflags,R24
011E 09C0 xjmp L24
0120 L23:
0120 .dbline 101
0120 ; else
0120 ; bEPPflags.bits.mainbuf_full=0;
0120 80910000 lds R24,_bEPPflags
0124 90910100 lds R25,_bEPPflags+1
0128 9F77 andi R25,127
012A 90930100 sts _bEPPflags+1,R25
012E 80930000 sts _bEPPflags,R24
0132 L24:
0132 .dbline 102
0132 ; }
0132 L21:
0132 .dbline 103
0132 ; D12_COMMAND=0xF0;
0132 80EF ldi R24,240
0134 8093017C sts 31745,R24
0138 .dbline 104
0138 ; cwait;
0138 0000 nop
013A .dbline 105
013A ; j=D12_DATA;
013A 4091007C lds R20,31744
013E .dbline 106
013E ; cwait1;
013E 0000 nop
0140 .dbline 106
0140 0000 nop
0142 .dbline 107
0142 ; j=D12_DATA;
0142 4091007C lds R20,31744
0146 .dbline 108
0146 ; if(j>len)j=len;
0146 2417 cp R18,R20
0148 08F4 brsh L25
014A .dbline 108
014A 422F mov R20,R18
014C L25:
014C .dbline 109
014C ; for(i=0;i<j;i++)
014C 6627 clr R22
014E 0AC0 xjmp L30
0150 L27:
0150 .dbline 110
0150 .dbline 111
0150 E62F mov R30,R22
0152 FF27 clr R31
0154 EA0D add R30,R10
0156 FB1D adc R31,R11
0158 2090007C lds R2,31744
015C 2082 std z+0,R2
015E .dbline 112
015E 0000 nop
0160 .dbline 112
0160 0000 nop
0162 .dbline 113
0162 L28:
0162 .dbline 109
0162 6395 inc R22
0164 L30:
0164 .dbline 109
0164 6417 cp R22,R20
0166 A0F3 brlo L27
0168 .dbline 114
0168 ; {
0168 ; *(buf+i)=D12_DATA;
0168 ; cwait1;
0168 ; }
0168 ; D12_COMMAND=0xF2;
0168 82EF ldi R24,242
016A 8093017C sts 31745,R24
016E .dbline 115
016E ; cwait;
016E 0000 nop
0170 .dbline 116
0170 ; return j;
0170 042F mov R16,R20
0172 .dbline -2
0172 L14:
0172 0E940000 xcall pop_gset3
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r j 20 c
0178 .dbsym r i 22 c
0178 .dbsym r buf 10 pc
0178 .dbsym r len 18 c
0178 .dbsym r endp 16 c
0178 .dbend
0178 .dbfunc e D12_WriteEndpoint _D12_WriteEndpoint fc
0178 ; i -> R20
0178 ; buf -> R22,R23
0178 ; len -> R18
0178 ; endp -> R16
.even
0178 _D12_WriteEndpoint::
0178 0E940000 xcall push_gset2
017C 6C81 ldd R22,y+4
017E 7D81 ldd R23,y+5
0180 .dbline -1
0180 .dbline 120
0180 ; }
0180 ; unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len,
0180 ; unsigned char * buf)
0180 ; {
0180 .dbline 122
0180 ; unsigned char i;
0180 ; D12_COMMAND=endp;
0180 0093017C sts 31745,R16
0184 .dbline 123
0184 ; D12_DATA;
0184 .dbline 124
0184 ; D12_COMMAND=0xF0;
0184 80EF ldi R24,240
0186 8093017C sts 31745,R24
018A .dbline 125
018A ; cwait;
018A 0000 nop
018C .dbline 126
018C ; D12_DATA=0;
018C 2224 clr R2
018E 2092007C sts 31744,R2
0192 .dbline 127
0192 ; cwait1;
0192 0000 nop
0194 .dbline 127
0194 0000 nop
0196 .dbline 128
0196 ; D12_DATA=len;
0196 2093007C sts 31744,R18
019A .dbline 129
019A ; for(i=0;i<len;i++)
019A 4427 clr R20
019C 0AC0 xjmp L35
019E L32:
019E .dbline 130
019E .dbline 131
019E E42F mov R30,R20
01A0 FF27 clr R31
01A2 E60F add R30,R22
01A4 F71F adc R31,R23
01A6 2080 ldd R2,z+0
01A8 2092007C sts 31744,R2
01AC .dbline 132
01AC 0000 nop
01AE .dbline 132
01AE 0000 nop
01B0 .dbline 133
01B0 L33:
01B0 .dbline 129
01B0 4395 inc R20
01B2 L35:
01B2 .dbline 129
01B2 4217 cp R20,R18
01B4 A0F3 brlo L32
01B6 .dbline 134
01B6 ; {
01B6 ; D12_DATA=*(buf+i);
01B6 ; cwait1;
01B6 ; }
01B6 ; D12_COMMAND=0xFA;
01B6 8AEF ldi R24,250
01B8 8093017C sts 31745,R24
01BC .dbline 135
01BC ; cwait;
01BC 0000 nop
01BE .dbline 136
01BE ; return len;
01BE 022F mov R16,R18
01C0 .dbline -2
01C0 L31:
01C0 0E940000 xcall pop_gset2
01C4 .dbline 0 ; func end
01C4 0895 ret
01C6 .dbsym r i 20 c
01C6 .dbsym r buf 22 pc
01C6 .dbsym r len 18 c
01C6 .dbsym r endp 16 c
01C6 .dbend
01C6 .dbfunc e D12_CWriteEndpoint _D12_CWriteEndpoint fc
01C6 ; i -> R20
01C6 ; buf -> R22,R23
01C6 ; len -> R18
01C6 ; endp -> R16
.even
01C6 _D12_CWriteEndpoint::
01C6 0E940000 xcall push_gset2
01CA 6C81 ldd R22,y+4
01CC 7D81 ldd R23,y+5
01CE .dbline -1
01CE .dbline 140
01CE ; }
01CE ; unsigned char D12_CWriteEndpoint(unsigned char endp, unsigned char len,
01CE ; const unsigned char * buf)
01CE ; {
01CE .dbline 142
01CE ; unsigned char i;
01CE ; D12_COMMAND=endp;
01CE 0093017C sts 31745,R16
01D2 .dbline 143
01D2 ; cwait;
01D2 0000 nop
01D4 .dbline 144
01D4 ; D12_DATA;
01D4 .dbline 145
01D4 ; cwait;
01D4 0000 nop
01D6 .dbline 146
01D6 ; D12_COMMAND=0xF0;
01D6 80EF ldi R24,240
01D8 8093017C sts 31745,R24
01DC .dbline 147
01DC ; cwait;
01DC 0000 nop
01DE .dbline 148
01DE ; D12_DATA=0;
01DE 2224 clr R2
01E0 2092007C sts 31744,R2
01E4 .dbline 149
01E4 ; cwait1;
01E4 0000 nop
01E6 .dbline 149
01E6 0000 nop
01E8 .dbline 150
01E8 ; D12_DATA=len;
01E8 2093007C sts 31744,R18
01EC .dbline 151
01EC ; for(i=0;i<len;i++)
01EC 4427 clr R20
01EE 0AC0 xjmp L40
01F0 L37:
01F0 .dbline 152
01F0 .dbline 153
01F0 E42F mov R30,R20
01F2 FF27 clr R31
01F4 E60F add R30,R22
01F6 F71F adc R31,R23
01F8 E491 lpm R30,Z
01FA E093007C sts 31744,R30
01FE .dbline 154
01FE 0000 nop
0200 .dbline 154
0200 0000 nop
0202 .dbline 155
0202 L38:
0202 .dbline 151
0202 4395 inc R20
0204 L40:
0204 .dbline 151
0204 4217 cp R20,R18
0206 A0F3 brlo L37
0208 .dbline 156
0208 ; {
0208 ; D12_DATA=*(buf+i);
0208 ; cwait1;
0208 ; }
0208 ; D12_COMMAND=0xFA;
0208 8AEF ldi R24,250
020A 8093017C sts 31745,R24
020E .dbline 157
020E ; return len;
020E 022F mov R16,R18
0210 .dbline -2
0210 L36:
0210 0E940000 xcall pop_gset2
0214 .dbline 0 ; func end
0214 0895 ret
0216 .dbsym r i 20 c
0216 .dbsym r buf 22 pkc
0216 .dbsym r len 18 c
0216 .dbsym r endp 16 c
0216 .dbend
0216 .dbfunc e D12_AcknowledgeEndpoint _D12_AcknowledgeEndpoint fV
0216 ; endp -> R16
.even
0216 _D12_AcknowledgeEndpoint::
0216 .dbline -1
0216 .dbline 160
0216 .dbline 161
0216 0093017C sts 31745,R16
021A .dbline 162
021A 0000 nop
021C .dbline 163
021C 81EF ldi R24,241
021E 8093017C sts 31745,R24
0222 .dbline 164
0222 0023 tst R16
0224 19F4 brne L42
0226 .dbline 165
0226 82EF ldi R24,242
0228 8093017C sts 31745,R24
022C L42:
022C .dbline -2
022C .dbline 166
022C ; }
022C ; void D12_AcknowledgeEndpoint(unsigned char endp)
022C ; {
022C ; D12_COMMAND=endp;
022C ; cwait;
022C ; D12_COMMAND=0xF1;
022C ; if(endp==0)
022C ; D12_COMMAND=0xF2;
022C ; }
022C L41:
022C .dbline 0 ; func end
022C 0895 ret
022E .dbsym r endp 16 c
022E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -