📄 main.c
字号:
//----------------------------------------------------------------------------
// C main ( unisen Cyber Station K.B. Qwert Mode Keyboard )
// 2007-1 ver 1.00
// 应 增加 NumLock,ArrowLock,Shift,Ctrl四个LED灯
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include <string.h>
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include "CSD_KeyProcess.c"
int KB_empty_cnt;
BYTE KB_save;
/*
//GPIO 操作例程,先在 Device Editer 中将其中一个IO口 命名为
#define Beep_BIT_Enable Beep_BIT_Data_ADDR |= Beep_BIT_MASK
#define Beep_BIT_Disable Beep_BIT_Data_ADDR &= ~Beep_BIT_MASK
//如何判断以上IO的高低电平?
//如何控制IO高低电平?
//下面是 中断服务程序的定义方法:
#pragma interrupt_handler timer_handler
...
void timer_handler()
{
...
}
//在 boot.tpl 中,将对应的中断向量表中 填写 ljmp timer_handler
*/
//memcmp(RPT_DATA,USB_INTERFACE_0_OUT_RPT_DATA,8); //从 USB 得到USB HOST送来的数据
BYTE abKeyboardData[8] = {0,0,0,0,0,0,0,0};
// ^ ^
// | |
// ctrl Alpha
//M8C_Reset;
char KeyPressMainFlg;
void main()
{
M8C_EnableGInt; //Enable Global Interrupts
Beep_Start(); Beep_Switch(0);
LED_ShiftCAP_Start(); LED_ShiftCAP_Switch(0);
CSD_1_Start();//CSD 电容式键盘初始化
CSD_1_InitializeBaselines() ; //scan all sensors first time, init baseline
CSD_1_SetDefaultFingerThresholds() ;//设置 电容式键盘 Finger Thresholds
USBFS_1_Start(0, USB_5V_OPERATION); //Start USBFS Operation using device 0
//and with 5V operation
while(!USBFS_1_bGetConfiguration()); //Wait for Device to enumerate 等待USB HOST取得USB描述符
//Enumeration is completed load endpoint 1. Do not toggle the first time
USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_NO_TOGGLE);
//M8C_EnableWatchDog; //(CPU_SCR0 &= ~CPU_SCR0_PORS_MASK)
memset( abKeyboardData,0,8 );
KB_empty_cnt = 0; KB_save = 0; KeyPressMainFlg = 0;
while( 1 )
{
memset( ScanArrayImage,0,5 );//将键盘位图清零
KeyPressMainFlg = KeyPressMain();//扫描键盘
while(!USBFS_1_bGetEPAckState(1)); //Wait for ACK before loading data 等待 USB HOST ACK 协议发生
//ACK has occurred, load the endpoint and toggle the data bit
//扫描键盘
if( KeyPressMainFlg == 1 ) //产生了键盘码
{
if( USB_KeyAct[1]==KB_save && KB_empty_cnt<1 )//防抖动
continue;
else
{
KB_empty_cnt = 0; KB_save = USB_KeyAct[1];
}
//向 USB 送键盘扫描码
BeepDelayXXms( 50 ); //响铃,表示按键有效
memset( abKeyboardData,0,8 );
abKeyboardData[0] = USB_KeyAct[0];
abKeyboardData[2] = USB_KeyAct[1];
USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_TOGGLE);//将键盘码送USB
memset( abKeyboardData,0,8 );
while(!USBFS_1_bGetEPAckState(1));
USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_TOGGLE);//将键盘抬起送USB
}else
{
KB_empty_cnt ++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -