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

📄 d12isr.lis

📁 USB通信程序开发(附源码 精品)包括详细论文说明
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00AC                   .dbline 108
                       ;         csram;
 00AC 609301FC          sts 0xfc01,R22
 00B0                   .dbline 108
 00B0                   .dbline 109
                       ;         Bulk_In_Packet();//回应批量传输包
 00B0 00D0              rcall _Bulk_In_Packet
 00B2                   .dbline 110
 00B2 0CC0              rjmp L16
 00B4                 L15:
 00B4                   .dbline 110
                       ;     }else if(i & 0x80)//D12_INT_SUSPENDCHANGE D12挂起
 00B4 47FF              sbrs R20,7
 00B6 01C0              rjmp L17
 00B8                   .dbline 111
                       ;     {
 00B8                   .dbline 113
 00B8 09C0              rjmp L18
 00BA                 L17:
 00BA                   .dbline 113
                       ;     
                       ;     }else if(i & 0x40)//D12_INT_BUSRESET总线复位
 00BA 46FF              sbrs R20,6
 00BC 02C0              rjmp L19
 00BE                   .dbline 114
                       ;     {
 00BE                   .dbline 115
                       ;         bus_reset();//总线重置
 00BE 08D0              rcall _bus_reset
 00C0                   .dbline 116
                       ;     }else
 00C0 05C0              rjmp L20
 00C2                 L19:
 00C2                   .dbline 117
                       ;     {
 00C2                   .dbline 118
                       ;         i=D12_DATA; //D12_INT_EOT DMA操作已结束
 00C2 4091007C          lds R20,31744
 00C6                   .dbline 119
                       ;         if(i & 0x01)
 00C6 40FF              sbrs R20,0
 00C8 01C0              rjmp L21
 00CA                   .dbline 120
                       ;         {
 00CA                   .dbline 121
                       ;             dma_eot();//Dma 操作结束
 00CA 03D0              rcall _dma_eot
 00CC                   .dbline 122
                       ;         }
 00CC                 L21:
 00CC                   .dbline 123
                       ;     }
 00CC                 L20:
 00CC                 L18:
 00CC                 L16:
 00CC                 L14:
 00CC                 L12:
 00CC                 L10:
 00CC                 L8:
 00CC                 L4:
 00CC                   .dbline -2
 00CC                   .dbline 124
                       ; }
 00CC                 L2:
 00CC 00D0              rcall pop_gset2
 00CE                   .dbline 0 ; func end
 00CE 0895              ret
 00D0                   .dbsym r j 22 c
 00D0                   .dbsym r i 20 c
 00D0                   .dbfunc s bus_reset _bus_reset fI
                         .even
 00D0                 _bus_reset::
 00D0                   .dbline -1
 00D0                   .dbline 127
                       ; 
                       ; void bus_reset(void)//总线重置函数
                       ; {
 00D0                   .dbline -2
 00D0                   .dbline 128
                       ; }
 00D0                 L23:
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbfunc s dma_eot _dma_eot fI
                         .even
 00D2                 _dma_eot::
 00D2                   .dbline -1
 00D2                   .dbline 131
                       ; 
                       ; void dma_eot(void)//Dma 操作结束函数
                       ; {
 00D2                   .dbline -2
 00D2                   .dbline 132
                       ; }
 00D2                 L24:
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbfunc s USB_submit _USB_submit fI
                       ;              j -> R16
                       ;              k -> R18
                       ;              i -> R20
                         .even
 00D4                 _USB_submit::
 00D4 00D0              rcall push_gset1
 00D6                   .dbline -1
 00D6                   .dbline 155
                       ; /************************************************************
                       ; **工程名称:U盘固件程序开发
                       ; **编译器类型及版本:ICCAVR 6.26C
                       ; **日期:2004.4.30
                       ; **创建人:陈驰
                       ; **所属单位:湖南大学计算机与通信学院
                       ; 
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
                       ; **时钟频率:8MHZ
                       ; 
                       ; **函数功能:控制端点传输提交
                       ; **函数输入参数及说明:无
                       ; 
                       ; **函数返回值:无
                       ; **在本函数以外定义的变量:传输结构体
                       ; **调用的函数说明:无
                       ; 
                       ; **修改人:陈驰
                       ; **修改日期:2004.4.30
                       ; **修改说明:创建
                       ; *************************************************************/
                       ; void USB_submit(void)
                       ; {
 00D6                   .dbline 163
                       ;     unsigned char i,j,k;
                       ;     /*********说明******************
                       ;       D12芯片数据手册上说明控制端点
                       ;       缓冲区大小为16BYTES,使用时试用
                       ;       64BYTES可以完成传输,这里故用64
                       ;       来处理
                       ;     *******************************/
                       ;     if(64 > XmtBuff.wrLength)
 00D6 30904100          lds R3,_XmtBuff+64+1
 00DA 20904000          lds R2,_XmtBuff+64
 00DE 80E4              ldi R24,64
 00E0 90E0              ldi R25,0
 00E2 2816              cp R2,R24
 00E4 3906              cpc R3,R25
 00E6 18F4              brsh L26
 00E8                   .dbline 164
                       ;     {
 00E8                   .dbline 165
                       ;         j = XmtBuff.wrLength;
 00E8 022D              mov R16,R2
 00EA 132D              mov R17,R3
 00EC                   .dbline 166
                       ;     }else
 00EC 01C0              rjmp L27
 00EE                 L26:
 00EE                   .dbline 167
                       ;     {
 00EE                   .dbline 168
                       ;         j = 64;
 00EE 00E4              ldi R16,64
 00F0                   .dbline 169
                       ;     }
 00F0                 L27:
 00F0                   .dbline 170
                       ;     D12_COMMAND = 0x01;//选择端点(指针指向0位置)
 00F0 81E0              ldi R24,1
 00F2 8093017C          sts 31745,R24
 00F6                   .dbline 171
                       ;     cwait;
 00F6 0000              nop
 00F8                   .dbline 172
                       ;     D12_COMMAND = 0xf0;//写缓冲区
 00F8 80EF              ldi R24,240
 00FA 8093017C          sts 31745,R24
 00FE                   .dbline 173
                       ;     cwait;
 00FE 0000              nop
 0100                   .dbline 181
                       ;     /****************************
                       ;       缓冲区数据结构:
                       ;       字节1:保留,可为任意值
                       ;       字节2:数据字节的数目/长度
                       ;       字节3:数据字节1
                       ;       字节4:数据字节2
                       ;     *****************************/
                       ;     D12_DATA = 0x00;//写字节1
 0100 2224              clr R2
 0102 2092007C          sts 31744,R2
 0106                   .dbline 182
                       ;     cwait;
 0106 0000              nop
 0108                   .dbline 183
                       ;     D12_DATA = j;//写字节2
 0108 0093007C          sts 31744,R16
 010C                   .dbline 184
                       ;     csram;
 010C 609301FC          sts 0xfc01,R22
 0110                   .dbline 184
 0110                   .dbline 185
                       ;     for(i=0;i<j;i++)
 0110 4427              clr R20
 0112 11C0              rjmp L33
 0114                 L30:
 0114                   .dbline 186
 0114                   .dbline 187
 0114 30904300          lds R3,_XmtBuff+66+1
 0118 20904200          lds R2,_XmtBuff+66
 011C 442E              mov R4,R20
 011E 5524              clr R5
 0120 420C              add R4,R2
 0122 531C              adc R5,R3
 0124 E42D              mov R30,R4
 0126 F52D              mov R31,R5
 0128 C895              lpm
 012A 202D              mov R18,R0
 012C                   .dbline 188
 012C 2093007C          sts 31744,R18
 0130                   .dbline 189
 0130 609301FC          sts 0xfc01,R22
 0134                   .dbline 189
 0134                   .dbline 190
 0134                 L31:
 0134                   .dbline 185
 0134 4395              inc R20
 0136                 L33:
 0136                   .dbline 185
 0136 4017              cp R20,R16
 0138 68F3              brlo L30
 013A                   .dbline 191
                       ;     {
                       ;         k = *(XmtBuff.pp+i);
                       ;         D12_DATA = k;//写数据字节
                       ;         csram;
                       ;     }
                       ;     XmtBuff.pp += j;
 013A 30904300          lds R3,_XmtBuff+66+1
 013E 20904200          lds R2,_XmtBuff+66
 0142 402E              mov R4,R16
 0144 5524              clr R5
 0146 420C              add R4,R2
 0148 531C              adc R5,R3
 014A 50924300          sts _XmtBuff+66+1,R5
 014E 40924200          sts _XmtBuff+66,R4
 0152                   .dbline 192
                       ;     XmtBuff.wrLength -= j;
 0152 202E              mov R2,R16
 0154 3324              clr R3
 0156 50904100          lds R5,_XmtBuff+64+1
 015A 40904000          lds R4,_XmtBuff+64
 015E 4218              sub R4,R2
 0160 5308              sbc R5,R3
 0162 50924100          sts _XmtBuff+64+1,R5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -