⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d12.c

📁 基于avr,D12的U盘设计,有完整的USB1.1的协议代码.
💻 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 + -