📄 vendor.lst
字号:
108 3 Kernel_Flag.BITS.In_Reset_Done = 0;
109 3 }
110 2
111 2 if(FileSize.Size.DIR == 0x00 || FileSize.Size.DIR == 0x80)
112 2 DMA_Mode(Write);
113 2 else
114 2 DMA_Mode(Read);
115 2 }
116 1 }
117
C51 COMPILER V7.06 VENDOR 07/02/2003 10:05:12 PAGE 3
118
119 //***********************************************************************
120 //* *
121 //* Routine : DMA Mode *
122 //* Input : DMA Controller setting *
123 //* Output : None *
124 //* Function : to do GDMA data transfer *
125 //* *
126 //***********************************************************************
127
128 void DMA_Mode(Data)
129 {
130 1 UI Datcount;
131 1 UC i;
132 1
133 1 if(Data)
134 1 {
135 2 //read
136 2 do
137 2 {
138 3 //Check for Out Token ACK interrupt
139 3 while(!USB_Int_Flag.BITS.EP2RX);
140 3 EA_DISABLE;
141 3 USB_Int_Flag.BITS.EP2RX = 0;
142 3 D14_Cntrl_Reg.D14_ENDPT_INDEX = 4;
143 3 //Read in FIFO data
144 3 if (bytecount > PIO_Count)
145 3 {
146 4 Datcount = PIO_Count;
147 4 }
148 3 else
149 3 {
150 4 Datcount = bytecount;
151 4 }
152 3
153 3 for(i = 0 ; i < (UC)Datcount ; i++)
154 3 Endpt_FIFO[i] = D14_Cntrl_Reg.D14_DATA_PORT_LSB;
155 3
156 3 EA_ENABLE;
157 3 bytecount -= Datcount;
158 3 }while(bytecount);
159 2 rt2_process();
160 2 }
161 1 else
162 1 {
163 2 //write
164 2 do
165 2 {
166 3 //initialize endpoint index
167 3 D14_Cntrl_Reg.D14_ENDPT_INDEX = 5;
168 3 //Write data to FIFO
169 3 if (bytecount>PIO_Count)
170 3 {
171 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) PIO_Count;
172 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (PIO_Count>>8);
173 4 Datcount = PIO_Count;
174 4 }
175 3 else
176 3 {
177 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) bytecount;
178 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (bytecount>>8);
179 4 Datcount = bytecount;
C51 COMPILER V7.06 VENDOR 07/02/2003 10:05:12 PAGE 4
180 4 }
181 3
182 3
183 3 tt2_process();
184 3 for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
185 3 D14_Cntrl_Reg.D14_DATA_PORT_LSB = Endpt_FIFO[Count_PIO];
186 3
187 3 //Check for In Token ACK
188 3 while(!USB_Int_Flag.BITS.EP2TX)
189 3 {
190 4 if(USB_Int_Flag.BITS.SUSP || Kernel_Flag.BITS.Bus_Reset || USB_Int_Flag.BITS.EP0SETUP)
191 4 break;
192 4 }
193 3 EA_DISABLE;
194 3 USB_Int_Flag.BITS.EP2TX = 0;
195 3 EA_ENABLE;
196 3 bytecount -= Datcount;
197 3 }while(bytecount);
198 2 //stop DMA controller
199 2 DMA_Start = GDMA_Stop;
200 2 //transfewr done,reset internal variables
201 2 DMA_Int_Flag.BITS.DMA_DONE = 0;
202 2 Count_PIO = 0;
203 2 }
204 1 Kernel_Flag.BITS.Transfer_Start = 0;
205 1 }
206
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 483 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -