📄 d12isr.lis
字号:
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 + -