找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5426|回复: 4
打印 上一主题 下一主题
收起左侧

各位谁能帮我做下面一道简单51编程题,非常感谢

[复制链接]
跳转到指定楼层
楼主
ID:18392 发表于 2009-10-22 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 

请利用下面的条件,做一个51单片机的键盘去抖动的程序,将键值送入数组key[10]里。

1) 要求做到程序不能延迟死等。

2) 请继续发挥,当按下键不放2秒后,自动变为连按状态,每200ms便送入1次到key[]里。

       假如一个按键接在8051的P1.0口上,同时原程序已经有了基本的时间节拍,即10ms信号(是用定时器循环计算和定时中断完成的),每隔10ms后,标志位“one_tick”被置1,见如下程序:

Void main( )

{

       Ini( ); //相关的初始化不用你写

       While(1)

{

       If(one_tick)

{//10ms到

       one_tick=0;//清0

       //你的程序放在这里

}

}

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:18336 发表于 2009-10-22 21:08 | 只看该作者
帮楼主顶一下,应该不是很难,但是快要关机房了,没时间了
回复

使用道具 举报

板凳
ID:6313 发表于 2009-10-23 16:12 | 只看该作者

不太理解你的题目要求。是不是这样的,就是有一个按键,这个按键如果按下的话,他的键值是在不断增加的。增加间隔是没2秒,加一个值。

[此贴子已经被作者于2009-10-23 16:14:46编辑过]
回复

使用道具 举报

地板
ID:18333 发表于 2009-10-30 16:52 | 只看该作者

1) 要求做到程序不能延迟死等。

    我的理解认为是判断按键松开的程序,这样程序就会一直停留在判断按键松开的死循环上了。产生了延迟死等,

 如果采用的方式是行列扫描,但是在按键检测、键值判断的时候可以采用标志位的方式,按键一次后判置位标志位,其实只是执行一次按键判断,当响应后在松开后,释放标志位。当标志位没有释放之前,不会按键判断,这样程序就不会一直停留在判断按键松开的死循环上了。

2) 请继续发挥,当按下键不放2秒后,自动变为连按状态,每200ms便送入1次到key[]里。

    当按键被按下是就放映,之后再判断按键松开的时间程序。

要是我理解对了,这程序应该不难。

回复

使用道具 举报

5#
ID:18690 发表于 2009-10-31 22:49 | 只看该作者
单片机交流群QQ:69100826。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表