📄 main.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 + -