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