社区
单片机/工控
帖子详情
定时中断键盘扫描
heavenxyf
2002-11-20 10:20:15
那位大虾有16键的定时中断扫描键盘程序(C程序),可否给小弟一个程序!谢谢!我现在有急用!当然8279的外部中断程序也可以,也是C程序,我想做一个参考!
我是新手!
...全文
288
9
打赏
收藏
定时中断键盘扫描
那位大虾有16键的定时中断扫描键盘程序(C程序),可否给小弟一个程序!谢谢!我现在有急用!当然8279的外部中断程序也可以,也是C程序,我想做一个参考! 我是新手!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heavenxyf
2002-12-03
打赏
举报
回复
谢谢上面的兄弟!感激涕零!
wyabc
2002-12-02
打赏
举报
回复
4*6键盘!
在t2中进行键盘扫描.可判断是否为连击按健.t2终端周期:1.5625ms
sbit KH0=P0^0;
sbit KH1=P0^1;
sbit KH2=P0^2;
sbit KH3=P0^3;
unsigned char KEY(void) //获得key值
{
static unsigned char KEY_i=0x40; //key扫描指针
unsigned char data ka;
if (KEY_i!=0x40) { KEY_i=_crol_(KEY_i,1);} //左移一位
else KEY_i=1;
OUTKEY=KEY_i;
ka=0;
if (KH0==1) ka=ka+1;
if (KH1==1) ka=ka+2;
if (KH2==1) ka=ka+4;
if (KH3==1) ka=ka+8;
if (ka==0x0f) return(0); //无按键按下
return(KEY_i*10+15-ka); //扫描到按键,返回键值
}
void KKEY(unsigned char key)
{
static unsigned char nk=0, //没有扫描到按键计数器
mk=0, //本次按键和前次按键不同计数器
yk=60, //单击到连击的延时计数器
pk; //前次键值
if (key==0) //若没有扫描到按键
{
if ((++nk)==15)
{ pk=0;nk=0;mk=0;yk=60;CSK=0;ECK=0;} //若连续15次(23ms)没有扫描到按键,初始化。
return; // 15次*1.5625ms
}
nk=0; //初始化没有扫描到按键计数器
if (CSK==0)
{
pk=key; //若是首次按键,保存键值到前次键值,作为下次按键的比较依据
CSK=1; //设为非首次按键
return;
}
if (pk!=key) //若扫描的键值和前次不同,
{ pk=0;nk=0;yk=60;CSK=0;ECK=0; //干扰抖动处理
return;
}
if (ECK==0) //确认为单击
{
// BEEP=0; //单击时,响铃
F_key(key); //按键处理
ECK=1; //连击标志
return;
}
if ((--yk)==0) //已经扫描到按键,开始计数连击按键计数器
{
yk=20; //修正连击按键时的延时计数器
F_key(key);
}
}
void F_key(unsigned char key) //确认按键后的处理
{
switch(key)
{
case 18: F_QIDONG();return; //Start按键,开始启动
}
}
你试试看!
heavenxyf
2002-12-01
打赏
举报
回复
哦!能给小弟一份资料吗?万分感谢!heavenwj@hotmail.com
已经没有好名字
2002-11-29
打赏
举报
回复
我有,但是用的是东芝单片机,不知要否?C程序,4X4键盘,定时扫描.
Hermit
2002-11-29
打赏
举报
回复
单片机的话就有很多C了,AVRGCC,keilyC,AVRICC,IAR...
winskeeter
2002-11-29
打赏
举报
回复
是。keily c 吧
猛禽
2002-11-28
打赏
举报
回复
还是汇编好.^_^
heavenxyf
2002-11-24
打赏
举报
回复
当然是c语言了!汇编的很多,只是不太会改,所以想要点现成的东西作参考!
Hermit
2002-11-22
打赏
举报
回复
用什么C
基于状态机的
定时
中断
扫描
矩阵
键盘
程序
基于状态机的
定时
中断
矩阵
键盘
扫描
程序,相当好用,直接调用h文件中的KeyBoardScan()即可
双机通信程序
键盘
扫描
程序,
定时
和串口
中断
程序.
该程序中定义各端口的地址,写出了显示程序,延时程序,
键盘
扫描
程序,
定时
和串口
中断
程序.
Quartz
定时
任务
1、掌握Spring自带的
定时
任务2、学会配置
定时
任务线程池3、掌握cron表达式,记住口诀:秒分时日月周年4、学会使用Quartz创建
定时
任务、删除
定时
任务、修改
定时
任务, 灵活配置
定时
任务
4x4矩阵
键盘
扫描
程序(高效、快速)
汇编语言编写,主程序采用
键盘
扫描
方式执行该程序,因为未使用延时判断,程序效率很高(
扫描
一次最长只需26个机器周期,整个程序只有92个字节),节省了CPU的时间,为了避免按键按下后频繁执行该程序,本
键盘
扫描
程序的前面后面都可以加入少量代码既可以达到消抖动效果,如采用
定时
中断
来决定按键是否进行第二次按键
扫描
。而且本程序简单易懂!最适合4*4及以下矩阵!
基于CPLD 的矩阵
键盘
扫描
模块设计
摘要: 为了在不增加CPU工作负担的前提下,实现标准
键盘
和矩阵
键盘
双
键盘
同时工作,提出了一种基于复杂可编逻辑器件(CPLD)的矩阵
键盘
扫描
方案,实现了在矩阵
键盘
状态控制下CPLD 自动完成
键盘
扫描
、编码、输出的功能,CPU 通过
定时
器
中断
服务程序
定时
查询矩阵
键盘
状态,并将按键值直接送入
键盘
缓冲区,供其他程序使用。 给出了CPLD 部分模块的VHDL 语言实现和仿真波形。在矩阵
键盘
的
扫描
、编码、输出完全不需CPU 控制的前提下,实现标准
键盘
和矩阵
键盘
双
键盘
同时使用。 在基于PC104 的便携式野外测试设备的设计中,
键盘
是常用的输入设备。对于便携式设备野外工作时,一般使用小型(4×4)矩阵
键盘
就能满足设备的信息输入需要; 室内调试时, 使用标准PS2
键盘
更方便、灵活。一般的做法是保留PC104 的
键盘
接口用于接标准
键盘
, 利用扩展I/O接口完成小矩阵
键盘
的
扫描
和输入。这样做虽然可以实现设备双
键盘
同时工作的功能, 却需耗费大量的CPU 处理时间
扫描
矩阵
键盘
, 造成CPU 处理其他信息的能力下降。而本文设计的基于CPLD 的矩阵
键盘
扫描
模块能够很好地解决上述问题。 1 矩阵
键盘
扫描
原理
单片机/工控
27,374
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章