📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
** 文 件 名: main.c
** 最后修改日期: 2004年11月15日
** 描 述: 用户应用程序
** 版 本: V5.0
**********************************************************************************************************/
#include <reg52.h>
#include "D12Config.h"
#include "Descriptor.h"
#include "Chap_9.h"
#include "D12Driver.h"
#include <intrins.h>
//定义按键及LED引脚
sbit MCU_SWM0 = P1^0; //按键
sbit MCU_SWM1 = P1^1;
sbit MCU_LED0 = P1^2; //LED
sbit MCU_LED1 = P1^3;
void check_key_LED(void);
main()
{
INT32U cnt;
//复位后LED亮
for(cnt = 0; cnt <= 0x5000; cnt++) //延时
{
MCU_LED0 = 0; //D2和D3点亮
MCU_LED1 = 0;
}
MCU_LED0 = 1; //D2和D3灭
MCU_LED1 = 1;
if (Init_D12()!=0) //初始化D12
return; //如果初始化不成功,返回
EX0 = 1; //开外部中断0
PX0 = 0; //设置外部中断0中断优先级
EA = 1; //开80C51总中断
while(1)
{
usbserve(); //处理USB事件
if(bEPPflags.bits.configuration)
{
check_key_LED(); //连接正常,调用按键和LED控制处理
}
}
}
/******* 下面为与D12 Smart板相关的操作 *************/
/*******************************************************************
** 函数名称: check_key_LED()
** 功能描述: 检测D12 Smart板上的按键以及控制LED
** 输 入: 无
** 输 出: 无
********************************************************************/
void check_key_LED(void)
{
static unsigned char c, last_key = 0xf;
c = MCU_SWM0 & MCU_SWM1; //读取两个按键状态
c &= 0x0f;
if (c != last_key) {
D12_WriteEndpoint(3, 1, &c); //按键状态改变,发送信息给主机
}
last_key = c; //保留按键状态
if(bEPPflags.bits.ep1_rxdone) {
DISABLE(); //接收到主机发来的LED控制信息
bEPPflags.bits.ep1_rxdone = 0;
ENABLE();
MCU_LED0 = !(GenEpBuf[3] & 0x1); //控制LED状态
MCU_LED1 = !(GenEpBuf[3] & 0x2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -