📄 main.c
字号:
#include "./src/config.h"
#define BEEP 0x00000080
#define ZLG7290 0x70
//*************************************************************************************************
//*************************************************************************************************
//延时
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
//*************************************************************************************************
uint8 rcv_buf[8] ;//= {0x0a,0x05,0x02,0x09,0x3};
uint8 kk_buf[8] ;//= {0x03,0x02,0x05,0x00,0x0c};
uint8 input_buf[64];
//extern volatile uint8 rcv_new;
extern EVENT_FLAGS event_flag;
extern CONTROL_XFER control_data;
//*************************************************************************************************
uint8 count=0;
void scan_key(void)
{
uint8 i;
uint8 key_data;
//uint8 last_key_data;
//uint8 current_key_data;
key_data = ZLG7290_GetKey();
if((key_data!=0)&&(key_data<9))
{
rcv_buf[0] = key_data;
switch(key_data-1)
{
case 0:input_buf[1] |= 0x01;
break;
case 1:input_buf[1] |= 0x02;
break;
case 2:input_buf[1] |= 0x04;
break;
case 3:input_buf[2] +=8;
break;
case 4:input_buf[2] -=8;
break;
case 5:input_buf[3] +=8;
break;
case 6:input_buf[3] -=8;
break;
case 7:input_buf[4] +=8;
break;
case 8:input_buf[4] -=8;
break;
default:
break;
}
input_buf[0] = 0x02;
D12_write_Endpoint(5,5,input_buf);
for(i=1; i<5; i++)
input_buf[i] = 0;
D12_write_Endpoint(5,5,input_buf);
}
else
if(key_data!=0)
{
rcv_buf[0] = key_data;
switch(key_data-1)
{
case 0:
break;
case 1:
break;
case 2:input_buf[2] = 0x53;//NUM LOCK
break;
case 3:input_buf[3] = 0x58;//回车
break;
case 4:input_buf[4] = 0x59;//1
break;
case 5:input_buf[5] = 0x5a;//2
break;
case 6:input_buf[6] = 0x5b;//3
break;
case 7:input_buf[7] = 0x5c;//4
break;
case 8:input_buf[2] = 0x5d;//5
break;
case 9:input_buf[3] = 0x5e;//6
break;
case 10:input_buf[4] = 0x5f;//7
break;
case 11:input_buf[5]= 0x60;//8
break;
case 12:input_buf[6] = 0x61;//9
break;
case 13:input_buf[7] = 0x55;//*
break;
case 14:input_buf[2] = 0x56;//-
break;
case 15:input_buf[3] = 0x53;//NUM LOCK
break;
default:
break;
}
input_buf[0] = 0x01;
D12_write_Endpoint(5,9,input_buf);
for(i=1; i<9; i++)
input_buf[i] = 0;
D12_write_Endpoint(5,9,input_buf);
}
/*
if(key_data!=0)
{
rcv_buf[0] = key_data;
switch(key_data-1)
{
case 0:input_buf[0] |= 0x01; //音量减少
break;
case 1:input_buf[0] |= 0x02; //音量增加
break;
case 2:input_buf[0] |= 0x04; //静音
break;
case 3:input_buf[0] |= 0x08; //播放、暂停
break;
case 4:input_buf[0] |= 0x10; //启动windows media player
break;
case 5:input_buf[0] |= 0x20; //启动浏览器
break;
case 6:input_buf[0] |= 0x40; //运行计算器
break;
default:
break;
}
D12_write_Endpoint(5,1,input_buf);
input_buf[0] = 0;
D12_write_Endpoint(5,1,input_buf);
}
*/
/*
if( key_data!=0)
{
rcv_buf[0] = key_data;
switch(key_data-1)
{
case 0:
break;
case 1:
break;
case 2:input_buf[2] = 0x53;//NUM LOCK
break;
case 3:input_buf[3] = 0x58;//回车
break;
case 4:input_buf[4] = 0x59;//1
break;
case 5:input_buf[5] = 0x5a;//2
break;
case 6:input_buf[6] = 0x5b;//3
break;
case 7:input_buf[7] = 0x5c;//4
break;
case 8:input_buf[2] = 0x5d;//5
break;
case 9:input_buf[3] = 0x5e;//6
break;
case 10:input_buf[4] = 0x5f;//7
break;
case 11:input_buf[5]= 0x60;//8
break;
case 12:input_buf[6] = 0x61;//9
break;
case 13:input_buf[7] = 0x55;//
break;
case 14:input_buf[2] = 0x56;//-
break;
case 15:input_buf[3] = 0x53;//NUM LOCK
break;
default:
break;
}
D12_write_Endpoint(5,8,input_buf);
for(i=0; i<8; i++)
input_buf[i] = 0;
D12_write_Endpoint(5,8,input_buf);
}
*/
}
//*************************************************************************************************
//主函数
//*************************************************************************************************
int main(void)
{
PINSEL0 = 0x00000005; //设置IO连接到UART0上
IO0DIR |= BEEP;
IO0SET = BEEP;
UART0_init(115200); //串口初始化
D12_init(); //D12初始化
I2C_init(100000); //IIC初始化
ZLG7290_SendData(0x02,0);
while(1)
{
ZLG7290_DispBuf(rcv_buf,8);
if(event_flag.bits.bus_reset)
{
DISABLE();
event_flag.bits.bus_reset = 0;
ENABLE();
///IO0SET = SUSP; //挂起
}
if(event_flag.bits.bus_suspend)
{
DISABLE();
event_flag.bits.bus_suspend = 0;
ENABLE();
if(IO0PIN&SUSP == SUSP)
{
//IO0CLR = SUSP; //重新唤起
//IO0SET = SUSP;
///////低功耗/////
}
}
if(event_flag.bits.setup_packet)
{
DISABLE();
event_flag.bits.setup_packet = 0;
ENABLE();
DISABLE();
control_handler();
ENABLE();
}
if(event_flag.bits.configuration)
{
scan_key();
}
}
}
//*************************************************************************************************
//结束
//*************************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -