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

📄 main.c

📁 基于80C52的USB转串口程序
💻 C
字号:
#include <reg52.h>
#include "D12Config.h"
#include "Descriptor.h"
#include "Chap_9.h"
#include "D12Driver.h"
#include "UART.h"



#include "D12CI.h"
#include "D12HAL.h"


sbit USB_INT = P3^2;

main()
{
	INT16U i_st;	
	if (Init_D12()!=0)					//初始化D12
	return;							//如果初始化不成功,返回

	InitUART();
	EA = 1;								//开80C51总中断
//	EX0 = 1;							//开外部中断0
//	PX0 = 0;							//设置外部中断0中断优先级

	while(1)
	{
		usbserve();						//处理USB事件

		if(!USB_INT)		//中断产生
    	{
		bEPPflags.bits.in_isr = 1;
		i_st = D12_ReadInterruptRegister();				//读取PDIUSBD12中断寄存器值
		if(i_st != 0) {
		if(i_st & D12_INT_BUSRESET)
			bEPPflags.bits.bus_reset = 1;			//USB总线复位标志
		if(i_st & D12_INT_EOT)
			dma_eot();								//DMA传输技术处理
		if(i_st & D12_INT_SUSPENDCHANGE)
			bEPPflags.bits.suspend = 1;				//挂起改变标志置1
		if(i_st & D12_INT_ENDP0IN)
			ep0_txdone();							//控制端点发送数据处理
		if(i_st & D12_INT_ENDP0OUT)
			ep0_rxdone();							//控制端点接收数据处理
		if(i_st & D12_INT_ENDP1IN)
			ep1_txdone();							//端点 1发送数据处理
		if(i_st & D12_INT_ENDP1OUT)
			ep1_rxdone();							//端点 1接收数据处理
		if(i_st & D12_INT_ENDP2IN)
			ep2_txdone();							//端点 2发送数据处理
		if(i_st & D12_INT_ENDP2OUT)
			ep2_rxdone();							//端点 2接收数据处理
		}
   		bEPPflags.bits.in_isr = 0;
		}								   

		if (bEPPflags.bits.configuration == 1)
		{

			if (bEPPflags.bits.ep2_rxdone == 1)					
			{											//端点2收到数据
//				DISABLE();		   
				bEPPflags.bits.ep2_rxdone = 0;			//清空端点2收到数据标志
//				ENABLE();
				D12_WriteEndpoint(5,10,UartBuf);			//发10个字节到PC机
			}
		}	   
	}  
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -