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