软件设计
/*********************************************************************
目 的: 建立PCF8563操作库
目标系统: 基于STM8单片机
应用软件: Cosmic CxSTM8
*********************************************************************/
#include void PS2_Init(void) { PRESS_DATA_DDR; SHIFT_DATA_DDR; IN_SDA; } void check(void) { static u8 rcvBits = 0; //接收次数,中断次数 OUT_SCK; //设置"SCK_DDR"为输出 DELAY(); SET_SCK; //"SCK_PORT"输出"1" DELAY(); IN_SCK; //设置"SCK_DDR"为输入 DELAY(); if(!GET_SCK) { if((rcvBits>0) && (rcvBits<9)) { keyVal=keyVal>>1; //数据是LSB格式 //IN_SDA; //当有对键盘有属性设置时,注意输入输出切换 //DELAY(); if(GET_SDA) keyVal=keyVal|0x80; } rcvBits++; while(!GET_SCK); //等待PS/2CLK拉高 if(rcvBits>10) { rcvBits=0; //接收11次表示接收完一帧数据 rcvF=1; //标识有字符已经输入 } } } u8 keyHandle(u8 val) { u8 i; static _Bool isUp=0; //按键释放动作标志 static _Bool shift=0; //shift键按下标志 rcvF = 0; //PRESS_DATA_PORT = val; //状态指示 if(!isUp) { switch(val) { case 0xF0 : // a relase action isUp = 1; break; case 0x12 : // Left shift shift = 1; break; case 0x59 : // Right shift shift = 1; break; default: if(!shift) // If shift not pressed { //for(i=0; unshifted[i][0]!=val && unshifted[i][0];i++); //上述写法较为灵活,但KEIL非UNIXC标准,不能采用该写法 for(i=0;unshifted[i][0]!=val && i<59; i++); if(unshifted[i][0] == val) { //SHIFT_DATA_PORT = val; val = unshifted[i][1]; return val; } //状态指示 } else // If shift pressed { //for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++); //上述写法较为灵活,但KEIL非UNIXC标准,不能采用该写法 for(i=0;shifted[i][0]!=val && i<59; i++); if(shifted[i][0] == val) { //SHIFT_DATA_PORT = val; val = shifted[i][1]; return val; }//状态指示 } } } else { isUp=0; switch(val) { case 0x12 : // Left SHIFT shift = 0; break; case 0x59 : // Right SHIFT shift = 0; break; } } return 0xff; }
上一篇:STM8 PCF8563时钟芯片子程序
下一篇:STM8 LCD602显示子程序
推荐阅读最新更新时间:2024-11-08 14:36
设计资源 培训 开发板 精华推荐
- KITFS85SKTEVM: FS84 / FS85 / FS66安全SBC编程板
- LTC2362 演示板、12 位、500ksps SAR ADC
- ADR366B、3.3V 低功耗、低噪声堆叠电压基准的典型应用
- 使用 Analog Devices 的 LT1302CN8-5 的参考设计
- 电动汽车功率逆变器控制参考平台
- DC2073A-I,基于 LTC6907 的演示板,400kHz 至 4MHz 硅振荡器
- 新的低电阻模拟开关允许在手机中切换扬声器
- ADK-3593,使用 HI-3593 ARINC 429 3.3V 双接收器、单发送器和 SPI 的评估板
- 汽车以太网100BASE-T1 PHY客户评估板
- ADR5045B 5V 负精密基准配置的典型应用