历史上的今天
今天是:2025年06月28日(星期六)
2020年06月28日 | STM8 PS2接口应用子程序
2020-06-28 来源:eefocus
软件设计
/*********************************************************************
目 的: 建立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 LCD602显示子程序
史海拾趣
|
【社区大讲堂】之让我们学学AVR! (m16;led流水灯;外部中断;定时器;串口中断) 【社区大讲堂】之万人学习51单片机!之后,EEWORLD又推力作:让我们学学AVR! 火热进行中...... 讲座资料已经更新完毕,请大家有问题直接发问。 讲座资料集 ...… 查看全部问答> |
|
装了VisualDSP++ 5.0 Update7,可还是不能写DDR寄存器。每次程序执行到对DDR寄存器赋值,就出现\"The system mmr references a unit or peripheral not currently supported by this simulator\".....哪位大侠能帮着解决一下?… 查看全部问答> |
|
俺对硬件是完全0基础, 手头有一过时的PDA (sony clie peg-sj30/u) 闲着也是闲着 dragonball VZ 33mHZ cpu ; ram/rom 为16m 之类的配置. 现有os为palm os4.1 请问我可以将其拆吧拆吧做成一个类似于开发板这类的东西么? 简单来说就 ...… 查看全部问答> |
|
到底全球安防市场规模有多大? 这是一个很有趣的议题. 安全监控产业可大略分为影像监控、防盗入侵检测、门禁、整合性系统等产品类. 但每个地区对产品的归属定义不同, 因而所做出来的规模探讨就有差别. 光视频监控的市场规模又可区分成模拟与网络(IP ...… 查看全部问答> |
|
程序是关于用GPIO端口输出方波的 #include #include #include \"inc/hw_types.h\" #include \"inc/hw_memmap.h\" #include \"driverlib/sysctl.h\" #include \"driverlib/rom.h\" #include \"driverlib/pin_map.h\" #include \"driverlib ...… 查看全部问答> |




