📄 d12driver.lst
字号:
148 ** 功能描述: 端点2 IN(发送)处理处理函数
149 ** 输 入: 无
150 ** 输 出: 无
151 ********************************************************************/
152 void ep2_txdone(void)
153 {
154 1 D12_ReadLastTransactionStatus(5); //清中断标志位
155 1 //可添加用户代码(进行检测端点号5IN令牌的操作)
156 1 if(byte_cnt.word>0)
157 1 {
158 2 if(byte_cnt.word<64)
159 2 {
160 3 D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
161 3 byte_cnt.word=0;
162 3 }
163 2 else
164 2 {
165 3 byte_cnt.word=byte_cnt.word-64;
166 3 D12_WriteEndpoint(5, 64, EpBuf);
167 3 }
168 2 }
169 1
170 1 if ((D12_ReadEndpointStatus(5) & 0x60) != 0x60)
171 1 {
172 2 if(byte_cnt.word>0)
173 2 {
174 3 if(byte_cnt.word<64)
175 3 {
176 4 D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
177 4 byte_cnt.word=0;
178 4 }
C51 COMPILER V7.02b D12DRIVER 09/24/2007 20:01:36 PAGE 4
179 3 else
180 3 {
181 4 byte_cnt.word=byte_cnt.word-64;
182 4 D12_WriteEndpoint(5, 64, EpBuf);
183 4 }
184 3 }
185 2 }
186 1 }
187
188 /*******************************************************************
189 ** 函数名称: ep2_rxdone()
190 ** 功能描述: 端点2 OUT(接收)处理处理函数
191 ** 输 入: 无
192 ** 输 出: 无
193 ********************************************************************/
194 void ep2_rxdone(void)
195 {
196 1 INT8U len;
197 1
198 1 D12_ReadLastTransactionStatus(4); //复位中断寄存器
199 1 len = D12_ReadEndpoint(4, 64, EpBuf); //读取端点2接收数据
200 1 if (bEPPflags.bits.ep2buf_full)
201 1 len += D12_ReadEndpoint(4, 64, EpBuf); //读取端点2接收数据
202 1 if (len != 0)
203 1 bEPPflags.bits.ep2_rxdone = 1; //标志端点2接收到数据
204 1 }
205
206 /***********************************************************************
207 ** 函数名称: void Usb_Exception(void)
208 ** 功能描述: D12中断服务程序
209 *************************************************************************/
210 void Usb_Exception(void) interrupt 0
211 {
212 1 DISABLE(); //进入D12中断服务程序时关中断
213 1 fn_usb_isr();
214 1 ENABLE(); //退出D12中断服务程序时开中断
215 1 }
216
217
218 /************************************************************
219 ** 函数名称: disconnect_USB()
220 ** 功能描述: 断开USB总线
221 ************************************************************/
222 void disconnect_USB(void)
223 {
224 1 // Initialize D12 configuration
225 1 D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
226 1 } //SoftConnect 断开
227
228
229 /************************************************************
230 ** 函数名称: connect_USB()
231 ** 功能描述: 连接USB总线
232 ************************************************************/
233 void connect_USB(void)
234 {
235 1 // Initialize D12 configuration
236 1 D12_SetDMA(0x00);
237 1 D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
238 1 } //SoftConnect 连接上,并设置为无LazyClock,模式为非同步模式
239
240
C51 COMPILER V7.02b D12DRIVER 09/24/2007 20:01:36 PAGE 5
241 /************************************************************
242 ** 函数名称: reconnect_USB()
243 ** 功能描述: 重新连接USB总线
244 ************************************************************/
245 void reconnect_USB(void)
246 {
247 1 INT16U clk_cnt;
248 1
249 1 disconnect_USB(); //断开芯片与USB总线连接
250 1 for (clk_cnt = 0;clk_cnt<= 0x9000;clk_cnt++); //延时处理
251 1 connect_USB(); //连接到USB总线
252 1 }
253
254
255 /************************************************************
256 ** 函数名称: Get_D12_FirmwareVer()
257 ** 功能描述: 重新连接USB总线
258 ** 输 入: 无
259 ** 输 出: 16bit整数,如0x0500表示D12固件软件版本号为5.00
260 ************************************************************/
261 INT16U Get_D12_FirmwareVer(void)
262 {
263 1 return 0x0500; //D12固件软件版本号为5.00
264 1 }
265
266 /************************************************************
267 ** 函数名称: D12_ReadChipID()
268 ** 功能描述: 读取芯片ID
269 ** 输 入: 无
270 ** 输 出: 芯片的ID号
271 ************************************************************/
272 INT16U D12_ReadChipID(void)
273 {
274 1 INT16U i,j;
275 1
276 1 if(bEPPflags.bits.in_isr == 0)
277 1 DISABLE();
278 1
279 1 outportb(D12_COMMAND, 0xFD); //发送读PDIUSBD12芯片ID号命令
280 1 i=inportb(D12_DATA); //读取ID号低字节
281 1 j=inportb(D12_DATA); //读取ID号高位字节
282 1 i += (j<<8); //组成16位的PDIUSBD12芯片ID号
283 1
284 1 if(bEPPflags.bits.in_isr == 0)
285 1 ENABLE();
286 1
287 1 return i;
288 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 539 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 3
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 + -