📄 vendor.lst
字号:
115
116
117 //***********************************************************************
C51 COMPILER V7.01 VENDOR 03/28/2003 14:38:29 PAGE 3
118 //* *
119 //* Routine : DMA Mode *
120 //* Input : DMA Controller setting *
121 //* Output : None *
122 //* Function : to do GDMA data transfer *
123 //* *
124 //***********************************************************************
125
126 void DMA_Mode(Data)
127 {
128 1 UI Datcount;
129 1
130 1 if(Data)
131 1 {
132 2 //read
133 2 do
134 2 {
135 3 //Check for Out Token ACK interrupt
136 3 while(!USB_Int_Flag.BITS.EP2RX)
137 3 {
138 4 if(USB_Int_Flag.BITS.SUSP || Kernel_Flag.BITS.Bus_Reset || USB_Int_Flag.BITS.EP0SETUP)
139 4 break;
140 4 }
141 3 EA_DISABLE;
142 3 USB_Int_Flag.BITS.EP2RX = 0;
143 3 EA_ENABLE;
144 3 D14_Cntrl_Reg.D14_ENDPT_INDEX = 4;
145 3 D14_Cntrl_Reg.D14_DMA_ENDPOINT = 2;
146 3 //Read in FIFO data
147 3 if (bytecount > PIO_Count)
148 3 {
149 4 Datcount = PIO_Count;
150 4 }
151 3 else
152 3 {
153 4 Datcount = bytecount;
154 4 }
155 3 if(Kernel_Flag.BITS.HS_FS_State == FULL_SPEED)
156 3 {
157 4 for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
158 4 Endpt_FIFO[Count_PIO] = D14_Cntrl_Reg.D14_DATA_PORT_LSB;
159 4 }
160 3 else
161 3 {
162 4 for(Count_PIO = 0 ; Count_PIO < Datcount; Count_PIO++)
163 4 Temp = D14_Cntrl_Reg.D14_DATA_PORT_LSB;
164 4 }
165 3 bytecount -= Datcount;
166 3 }while(bytecount);
167 2 }
168 1 else
169 1 {
170 2 //write
171 2 do
172 2 {
173 3 //initialize endpoint index
174 3 D14_Cntrl_Reg.D14_ENDPT_INDEX = 5;
175 3 D14_Cntrl_Reg.D14_DMA_ENDPOINT = 2;
176 3 //Write data to FIFO
177 3 if (bytecount>PIO_Count)
178 3 {
179 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) PIO_Count;
C51 COMPILER V7.01 VENDOR 03/28/2003 14:38:29 PAGE 4
180 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (PIO_Count>>8);
181 4 Datcount = PIO_Count;
182 4 }
183 3 else
184 3 {
185 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) bytecount;
186 4 D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (bytecount>>8);
187 4 Datcount = bytecount;
188 4 }
189 3
190 3 if(Kernel_Flag.BITS.HS_FS_State == FULL_SPEED)
191 3 {
192 4 for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
193 4 D14_Cntrl_Reg.D14_DATA_PORT_LSB = Endpt_FIFO[Count_PIO];
194 4 }
195 3 else
196 3 {
197 4 for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
198 4 D14_Cntrl_Reg.D14_DATA_PORT_LSB = Count_PIO % 256;
199 4 }
200 3 //Check for In Token ACK
201 3 while(!USB_Int_Flag.BITS.EP2TX)
202 3 {
203 4 if(USB_Int_Flag.BITS.SUSP || Kernel_Flag.BITS.Bus_Reset || USB_Int_Flag.BITS.EP0SETUP)
204 4 break;
205 4 }
206 3 EA_DISABLE;
207 3 USB_Int_Flag.BITS.EP2TX = 0;
208 3 EA_ENABLE;
209 3 bytecount -= Datcount;
210 3 }while(bytecount);
211 2 //stop DMA controller
212 2 DMA_Start = GDMA_Stop;
213 2 //transfewr done,reset internal variables
214 2 DMA_Int_Flag.BITS.DMA_DONE = 0;
215 2 Count_PIO = 0;
216 2 }
217 1 Kernel_Flag.BITS.Transfer_Start = 0;
218 1 }
219
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 627 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 4
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 + -