基于USB-CDC 单串口例程修改
-
- void USB_Send(char*p, char len)
- {
- unsigned char n;
-
- if (DeviceState != DEVSTATE_CONFIGURED) return;
-
- if(!UsbInBusy)
- {
- IE2 &= ~0x80;
- UsbInBusy = 1;
- usb_write_reg(INDEX, 1);
-
- for(n=0; n<len; n++)
- usb_write_reg(FIFO1, *p++);
-
- usb_write_reg(INCSR1, INIPRDY);
- IE2 |= 0x80;
- }
- }
-
- void USB_Read(void)
- {
- if (UsbOutBusy)
- {
- /* IE2 &= ~0x80;
- if (RxWptr - RxRptr < 256 - EP1OUT_SIZE)
- {
- UsbOutBusy = 0;
- usb_write_reg(INDEX, 1);
- usb_write_reg(OUTCSR1, 0);
- }
- IE2 |= 0x80;
- */
- UsbOutBusy = 0;
- USB_Send(USB_CDC_Buff, UsboutLen);
-
- }
- }
- #ifdef EN_EP1OUT
- void usb_out_ep1()
- {
- BYTE csr;
- BYTE cnt;
-
- usb_write_reg(INDEX, 1);
- csr = usb_read_reg(OUTCSR1);
- if (csr & OUTSTSTL)
- {
- usb_write_reg(OUTCSR1, OUTCLRDT);
- }
- if (csr & OUTOPRDY)
- {
- cnt = 0;
- UsboutLen =0;
-
- cnt = usb_read_reg(OUTCOUNT1);
- UsboutLen = cnt;
- while (cnt--)
- {
- USB_CDC_Buff[RxWptr++] = usb_read_reg(FIFO1);
- }
- UsbOutBusy = 1;
-
- // if (RxWptr - RxRptr >= 256 - EP1OUT_SIZE)
- // {
- // UsbOutBusy = 1;
- // }
- // else
- // {
- usb_write_reg(OUTCSR1, 0);
- // }
- }
- }
- #endif
-
- BYTE xdata USB_CDC_Buff[64];
复制代码
|