📄 d12isr.lis
字号:
0166 40924000 sts _XmtBuff+64,R4
016A .dbline 193
; D12_COMMAND = 0xfa;//设置缓冲区有效(满标志)
016A 8AEF ldi R24,250
016C 8093017C sts 31745,R24
0170 .dbline 194
; csram;
0170 609301FC sts 0xfc01,R22
0174 .dbline 194
0174 .dbline -2
0174 .dbline 195
; }
0174 L25:
0174 00D0 rcall pop_gset1
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r j 16 c
0178 .dbsym r k 18 c
0178 .dbsym r i 20 c
0178 .dbfunc s BULK_submit _BULK_submit fI
; j -> R16
; k -> R18
; i -> R20
.even
0178 _BULK_submit::
0178 00D0 rcall push_gset1
017A .dbline -1
017A .dbline 218
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:BULK端点传输提交
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:传输结构体
; **调用的函数说明:
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void BULK_submit(void)
; {
017A .dbline 220
; unsigned char i,j,k;
; if(64 > XmtBuff.wrLength)
017A 30904100 lds R3,_XmtBuff+64+1
017E 20904000 lds R2,_XmtBuff+64
0182 80E4 ldi R24,64
0184 90E0 ldi R25,0
0186 2816 cp R2,R24
0188 3906 cpc R3,R25
018A 18F4 brsh L38
018C .dbline 221
; {
018C .dbline 222
; j = XmtBuff.wrLength;
018C 022D mov R16,R2
018E 132D mov R17,R3
0190 .dbline 223
; }else
0190 01C0 rjmp L39
0192 L38:
0192 .dbline 224
; {
0192 .dbline 225
; j = 64;
0192 00E4 ldi R16,64
0194 .dbline 226
; }
0194 L39:
0194 .dbline 227
; D12_COMMAND = 0x05;// 选择端点(指针指向0位置)
0194 85E0 ldi R24,5
0196 8093017C sts 31745,R24
019A .dbline 228
; cwait;
019A 0000 nop
019C .dbline 229
; D12_COMMAND = 0xf0;// 写缓冲区
019C 80EF ldi R24,240
019E 8093017C sts 31745,R24
01A2 .dbline 230
; cwait;
01A2 0000 nop
01A4 .dbline 238
; /****************************
; 缓冲区数据结构:
; 字节1:保留,可为任意值
; 字节2:数据字节的数目/长度
; 字节3:数据字节1
; 字节4:数据字节2
; *****************************/
; D12_DATA = 0x00;//写字节1
01A4 2224 clr R2
01A6 2092007C sts 31744,R2
01AA .dbline 239
; cwait;
01AA 0000 nop
01AC .dbline 240
; D12_DATA = j;//写字节2
01AC 0093007C sts 31744,R16
01B0 .dbline 241
; csram;
01B0 609301FC sts 0xfc01,R22
01B4 .dbline 241
01B4 .dbline 247
; /*****************************
; 判断输出
; XmtBuff.p_p = 0:输出一般数据
; XmtBuff.p_p = 1:输出CONST数据
; ******************************/
; if(XmtBuff.p_p)
01B4 20904600 lds R2,_XmtBuff+70
01B8 2220 tst R2
01BA 11F1 breq L42
01BC .dbline 248
; {
01BC .dbline 249
; for(i=0;i<j ;i++)
01BC 4427 clr R20
01BE 11C0 rjmp L48
01C0 L45:
01C0 .dbline 250
01C0 .dbline 251
01C0 30904300 lds R3,_XmtBuff+66+1
01C4 20904200 lds R2,_XmtBuff+66
01C8 442E mov R4,R20
01CA 5524 clr R5
01CC 420C add R4,R2
01CE 531C adc R5,R3
01D0 E42D mov R30,R4
01D2 F52D mov R31,R5
01D4 C895 lpm
01D6 202D mov R18,R0
01D8 .dbline 252
01D8 2093007C sts 31744,R18
01DC .dbline 253
01DC 609301FC sts 0xfc01,R22
01E0 .dbline 253
01E0 .dbline 254
01E0 L46:
01E0 .dbline 249
01E0 4395 inc R20
01E2 L48:
01E2 .dbline 249
01E2 4017 cp R20,R16
01E4 68F3 brlo L45
01E6 .dbline 255
; {
; k = *(XmtBuff.pp+i);
; D12_DATA = k;//写数据字节
; csram;
; }
; XmtBuff.pp += j;
01E6 30904300 lds R3,_XmtBuff+66+1
01EA 20904200 lds R2,_XmtBuff+66
01EE 402E mov R4,R16
01F0 5524 clr R5
01F2 420C add R4,R2
01F4 531C adc R5,R3
01F6 50924300 sts _XmtBuff+66+1,R5
01FA 40924200 sts _XmtBuff+66,R4
01FE .dbline 256
; }else
01FE 1EC0 rjmp L43
0200 L42:
0200 .dbline 257
; {
0200 .dbline 258
; for(i=0;i<j;i++)
0200 4427 clr R20
0202 0EC0 rjmp L54
0204 L51:
0204 .dbline 259
0204 .dbline 260
0204 30904500 lds R3,_XmtBuff+68+1
0208 20904400 lds R2,_XmtBuff+68
020C E42F mov R30,R20
020E FF27 clr R31
0210 E20D add R30,R2
0212 F31D adc R31,R3
0214 2081 ldd R18,z+0
0216 .dbline 261
0216 2093007C sts 31744,R18
021A .dbline 262
021A 609301FC sts 0xfc01,R22
021E .dbline 262
021E .dbline 263
021E L52:
021E .dbline 258
021E 4395 inc R20
0220 L54:
0220 .dbline 258
0220 4017 cp R20,R16
0222 80F3 brlo L51
0224 .dbline 264
; {
; k = *(XmtBuff.p+i);
; D12_DATA = k;//写数据字节
; csram;
; }
; XmtBuff.p += j;
0224 30904500 lds R3,_XmtBuff+68+1
0228 20904400 lds R2,_XmtBuff+68
022C 402E mov R4,R16
022E 5524 clr R5
0230 420C add R4,R2
0232 531C adc R5,R3
0234 50924500 sts _XmtBuff+68+1,R5
0238 40924400 sts _XmtBuff+68,R4
023C .dbline 265
; }
023C L43:
023C .dbline 266
; XmtBuff.wrLength -= j;
023C 202E mov R2,R16
023E 3324 clr R3
0240 50904100 lds R5,_XmtBuff+64+1
0244 40904000 lds R4,_XmtBuff+64
0248 4218 sub R4,R2
024A 5308 sbc R5,R3
024C 50924100 sts _XmtBuff+64+1,R5
0250 40924000 sts _XmtBuff+64,R4
0254 .dbline 267
; D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效(满标志)
0254 8AEF ldi R24,250
0256 8093017C sts 31745,R24
025A .dbline 268
; csram;
025A 609301FC sts 0xfc01,R22
025E .dbline 268
025E .dbline -2
025E .dbline 269
; }
025E L37:
025E 00D0 rcall pop_gset1
0260 .dbline 0 ; func end
0260 0895 ret
0262 .dbsym r j 16 c
0262 .dbsym r k 18 c
0262 .dbsym r i 20 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -