📄 d12.c
字号:
#include<reg51.h>
#include"types.h"
#include <intrins.h>
#define USB_DATA P0
sbit USB_A0=P3^5;
sbit USB_WR=P3^6;
sbit USB_RD=P3^7;
sbit USB_INT=P3^2;
void D12_CMD(uchar dat)
{
USB_RD=1;
USB_A0=1;
USB_WR=0;
USB_DATA=dat;
USB_WR=1;
}
void D12_DAT(uchar dat)
{
USB_RD=1;
USB_A0=0;
USB_WR=0;
USB_DATA=dat;
USB_WR=1;
}
uchar D12_READ_DAT()
{
uchar temp;
USB_WR=1;
USB_A0=0;
USB_RD=0;
temp=USB_DATA;
USB_RD=1;
return temp;
}
void sys_int()
{
EX0=1;
EA=1;
}
void set_addr(uchar add)
{
D12_CMD(0xd0);
D12_DAT(0x80|add);
}
void set_endp_enable()
{
D12_CMD(0xd8);
D12_DAT(1);
}
void set_mode()
{
D12_CMD(0xf3);
//...
}
uchar select_endp(uchar endp)
{
D12_CMD(0x07&endp);
return D12_READ_DAT();
}
uchar read_endp_status(uchar endp)
{
D12_CMD(0x80|endp);
return D12_READ_DAT();
}
uchar read_last_endp_status(uchar endp)
{
D12_CMD(0x40|endp);
return D12_READ_DAT();
}
void write_buffer(uchar *pt,uchar len)
{
uchar i;
D12_CMD(0xf0);
D12_DAT(0);
D12_DAT(len);
for(i=0;i<len;i++)
{
D12_DAT(*pt++);
}
}
uchar read_buffer(uchar *pt)
{
uchar len;
uchar i;
D12_CMD(0xf0);
len=D12_READ_DAT();
for(i=0;i<len;i++)
{
*pt++=D12_READ_DAT();
}
return len;
}
void clear_buffer()
{
D12_CMD(0xf2);
}
void buffer_enable()
{
D12_CMD(0xfa);
}
void set_endp_status(uchar endp,uchar st)
{
D12_CMD(0x40|endp);
D12_DAT(st);
}
void ACK_SETUP()
{
D12_CMD(0xf1);
}
void Send_resume()
{
D12_CMD(0xf6);
}
void inter0()interrupt 0
{
uchar temp;
EA=0;
D12_CMD(0XF4);
temp=D12_READ_DAT();
d12_status=(D12_READ_DAT()<<8)|temp;
EA=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -