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

📄 d12isr.lis

📁 USB通信程序开发(附源码 精品)包括详细论文说明
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -