📄 d12driver.lst
字号:
136 1 }
137
138 /*******************************************************************
139 ** 函数名称: ep1_txdone()
140 ** 功能描述: 端点1 OUT(接收)处理处理函数
141 ** 输 入: 无
142 ** 输 出: 无
143 ********************************************************************/
144 void ep1_rxdone(void)
145 {
146 1 unsigned char len;
147 1
148 1 D12_ReadLastTransactionStatus(2); //清中断标志位
149 1 len = D12_ReadEndpoint(2,sizeof(GenEpBuf),GenEpBuf); //读取数据
150 1 if(len != 0)
151 1 bEPPflags.bits.ep1_rxdone = 1; //标志接收到数据
152 1 }
153
154 /*******************************************************************
155 ** 函数名称: ep2_txdone()
156 ** 功能描述: 端点2 IN(发送)处理处理函数
157 ** 输 入: 无
158 ** 输 出: 无
159 ********************************************************************/
160 void ep2_txdone(void)
161 {
162 1 D12_ReadLastTransactionStatus(5); //清中断标志位
163 1 }
164
165 /*******************************************************************
166 ** 函数名称: ep2_rxdone()
167 ** 功能描述: 端点2 OUT(接收)处理处理函数
168 ** 输 入: 无
169 ** 输 出: 无
170 ********************************************************************/
171 void ep2_rxdone(void)
172 {
173 1 INT8U len;
174 1
175 1 D12_ReadLastTransactionStatus(4); //清中断标志位
176 1 len = D12_ReadEndpoint(4,EP2_PACKET_SIZE,EpBuf); //读取缓冲区中的数据
177 1 if (len != 0)
178 1 bEPPflags.bits.ep2_rxdone = 1;
C51 COMPILER V7.06 D12DRIVER 12/03/2004 14:38:17 PAGE 4
179 1 }
180
181 /***********************************************************************
182 ** 函数名称: void Usb_Exception(void)
183 ** 功能描述: D12中断服务程序
184 *************************************************************************/
185 void Usb_Exception(void) interrupt 0
186 {
187 1 INT16U i_st;
188 1
189 1 DISABLE(); //进入D12中断服务程序时关中断
190 1
191 1 bEPPflags.bits.in_isr = 1;
192 1 i_st = D12_ReadInterruptRegister(); //读取PDIUSBD12中断寄存器值
193 1 if(i_st != 0) {
194 2 if(i_st & D12_INT_BUSRESET)
195 2 bEPPflags.bits.bus_reset = 1; //USB总线复位标志
196 2 if(i_st & D12_INT_EOT)
197 2 dma_eot(); //DMA传输技术处理
198 2 if(i_st & D12_INT_SUSPENDCHANGE)
199 2 bEPPflags.bits.suspend = 1; //挂起改变标志置1
200 2 if(i_st & D12_INT_ENDP0IN)
201 2 ep0_txdone(); //控制端点发送数据处理
202 2 if(i_st & D12_INT_ENDP0OUT)
203 2 ep0_rxdone(); //控制端点接收数据处理
204 2 if(i_st & D12_INT_ENDP1IN)
205 2 ep1_txdone(); //端点 1发送数据处理
206 2 if(i_st & D12_INT_ENDP1OUT)
207 2 ep1_rxdone(); //端点 1接收数据处理
208 2 if(i_st & D12_INT_ENDP2IN)
209 2 ep2_txdone(); //端点 2发送数据处理
210 2 if(i_st & D12_INT_ENDP2OUT)
211 2 ep2_rxdone(); //端点 2接收数据处理
212 2 }
213 1 bEPPflags.bits.in_isr = 0;
214 1
215 1 ENABLE(); //退出D12中断服务程序时开中断
216 1 }
217
218
219 /************************************************************
220 ** 函数名称: disconnect_USB()
221 ** 功能描述: 断开USB总线
222 ************************************************************/
223 void disconnect_USB(void)
224 {
225 1 // Initialize D12 configuration
226 1 D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
227 1 } //SoftConnect 断开
228
229
230 /************************************************************
231 ** 函数名称: connect_USB()
232 ** 功能描述: 连接USB总线
233 ************************************************************/
234 void connect_USB(void)
235 {
236 1 // Initialize D12 configuration
237 1 D12_SetDMA(0x00);
238 1 D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
239 1 } //SoftConnect 连接上,并设置为无LazyClock,模式为非同步模式
240
C51 COMPILER V7.06 D12DRIVER 12/03/2004 14:38:17 PAGE 5
241
242 /************************************************************
243 ** 函数名称: reconnect_USB()
244 ** 功能描述: 重新连接USB总线
245 ************************************************************/
246 void reconnect_USB(void)
247 {
248 1 INT16U clk_cnt;
249 1
250 1 disconnect_USB(); //断开芯片与USB总线连接
251 1 for (clk_cnt = 0;clk_cnt<= 0x9000;clk_cnt++); //延时处理
252 1 connect_USB(); //连接到USB总线
253 1 }
254
255
256 /************************************************************
257 ** 函数名称: Get_D12_FirmwareVer()
258 ** 功能描述: 重新连接USB总线
259 ** 输 入: 无
260 ** 输 出: 16bit整数,如0x0500表示D12固件软件版本号为5.00
261 ************************************************************/
262 INT16U Get_D12_FirmwareVer(void)
263 {
264 1 return 0x0500; //D12固件软件版本号为5.00
265 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 422 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = 80 ----
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 + -