📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
** 文 件 名: main.c
** 最后修改日期: 2004年11月15日
** 描 述: 用户应用程序
** 版 本: V5.0
**********************************************************************************************************/
/*串口一次接收EP2_PACKET_SIZE个字节*/
#include <reg52.h>
#include "D12Config.h"
#include "Descriptor.h"
#include "Chap_9.h"
#include "D12Driver.h"
#include <stdio.h>
extern INT8U idata EpBuf_num;
INT8U Uart_OK=0;
sbit led1=P1^2;
sbit led2=P1^3;
//初始化串口
Initail_Uart()
{
SCON=0X50;
TMOD=0X21;
PCON=0X80;
TH1 =0XFF;
TL1 =0XFF;
TR1=1;
ES=1;
EA=1;
}
Uart_Isr() interrupt 4
{
ES=0;
RI=0;
EpBuf[EpBuf_num]=SBUF;
EpBuf_num++;
if(EpBuf_num==EP2_PACKET_SIZE)
Uart_OK=1;
ES=1;
}
main()
{
unsigned char i;
led1=0;
if (Init_D12()!=0) //初始化D12
return; //如果初始化不成功,返回
EX0 = 1; //开外部中断0
PX0 = 0; //设置外部中断0中断优先级
EA = 1; //开80C51总中断
Initail_Uart() ;
while(1)
{
usbserve(); //处理USB事件
if(bEPPflags.bits.configuration)
{
//在这里添加端点操作代码
//请参考光盘提供的示例
if(bEPPflags.bits.ep2_rxdone==1)
{ //端点2收到数据
DISABLE();
bEPPflags.bits.ep2_rxdone =0; //清空端点2收到数据标志
ENABLE();
led1=0; //(数据处理)将数据通过串口发送出来
ES=0; //将收到的数据发送给串口
for(i=0;i<EpBuf_num;i++)
{
SBUF=EpBuf[i];
while(TI==0);
TI=0;
}
EpBuf_num=0; //清发送与接收的缓冲区
led1=1;
ES=1;
// D12_WriteEndpoint(5,10,EpBuf); //通过usb发10个字节到PC机
}
}
if(Uart_OK)
{
D12_WriteEndpoint(5,EpBuf_num,EpBuf); //通过usb发EpBuf_num个字节到PC机
Uart_OK=0;
EpBuf_num=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -