?? d12isr.lis
字號(hào):
00AC .dbline 108
; csram;
00AC 609301FC sts 0xfc01,R22
00B0 .dbline 108
00B0 .dbline 109
; Bulk_In_Packet();//回應(yīng)批量傳輸包
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總線復(fù)位
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操作已結(jié)束
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 操作結(jié)束
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)//總線重置函數(shù)
; {
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 操作結(jié)束函數(shù)
; {
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盤(pán)固件程序開(kāi)發(fā)
; **編譯器類型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **創(chuàng)建人:陳馳
; **所屬單位:湖南大學(xué)計(jì)算機(jī)與通信學(xué)院
;
; **芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **時(shí)鐘頻率:8MHZ
;
; **函數(shù)功能:控制端點(diǎn)傳輸提交
; **函數(shù)輸入?yún)?shù)及說(shuō)明:無(wú)
;
; **函數(shù)返回值:無(wú)
; **在本函數(shù)以外定義的變量:傳輸結(jié)構(gòu)體
; **調(diào)用的函數(shù)說(shuō)明:無(wú)
;
; **修改人:陳馳
; **修改日期:2004.4.30
; **修改說(shuō)明:創(chuàng)建
; *************************************************************/
; void USB_submit(void)
; {
00D6 .dbline 163
; unsigned char i,j,k;
; /*********說(shuō)明******************
; D12芯片數(shù)據(jù)手冊(cè)上說(shuō)明控制端點(diǎn)
; 緩沖區(qū)大小為16BYTES,使用時(shí)試用
; 64BYTES可以完成傳輸,這里故用64
; 來(lái)處理
; *******************************/
; 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;//選擇端點(diǎn)(指針指向0位置)
00F0 81E0 ldi R24,1
00F2 8093017C sts 31745,R24
00F6 .dbline 171
; cwait;
00F6 0000 nop
00F8 .dbline 172
; D12_COMMAND = 0xf0;//寫(xiě)緩沖區(qū)
00F8 80EF ldi R24,240
00FA 8093017C sts 31745,R24
00FE .dbline 173
; cwait;
00FE 0000 nop
0100 .dbline 181
; /****************************
; 緩沖區(qū)數(shù)據(jù)結(jié)構(gòu):
; 字節(jié)1:保留,可為任意值
; 字節(jié)2:數(shù)據(jù)字節(jié)的數(shù)目/長(zhǎng)度
; 字節(jié)3:數(shù)據(jù)字節(jié)1
; 字節(jié)4:數(shù)據(jù)字節(jié)2
; *****************************/
; D12_DATA = 0x00;//寫(xiě)字節(jié)1
0100 2224 clr R2
0102 2092007C sts 31744,R2
0106 .dbline 182
; cwait;
0106 0000 nop
0108 .dbline 183
; D12_DATA = j;//寫(xiě)字節(jié)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;//寫(xiě)數(shù)據(jù)字節(jié)
; 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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -