| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 957 人关注过本帖
标题:请问下高手独立键盘延迟时间的a,b,c是什么意思?
只看楼主 加入收藏
vcfeng
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-4-16
结帖率:0
收藏
 问题点数:0 回复次数:4 
请问下高手独立键盘延迟时间的a,b,c是什么意思?
/*******************************************************************************
* 实验名               : 左右流水灯实验
* 使用的IO         : LED使用P2,键盘使用P3.1
* 实验效果       : 按下K1键,
*    注意                     
*******************************************************************************/
#include<reg51.h>
#include<intrins.h>   

#define GPIO_LED P2
sbit K1=P0^0;
void Delay10ms( );   //延时10ms

/*******************************************************************************
* 函数名         : main
* 函数功能           : 主函数
* 输入           : 无
* 输出              : 无
*******************************************************************************/
void main(void)
{
    unsigned int i,j;
    j=0x01;
   
    while(1)
    {   
        GPIO_LED=j;     
        if(K1==0)        //检测按键K1是否按下
        {
            Delay10ms();    //消除抖动
            if(K1==0)
            {
                j=_cror_(j,1);//1000 0000
                while((i<50)&&(K1==0))     //检测按键是否松开
                {
                    Delay10ms();
                    i++;
                }
                i=0;
            }
        }        

    }               
}
/*******************************************************************************
* 函数名         : Delay10ms
* 函数功能           : 延时函数,延时10ms
* 输入           : 无
* 输出              : 无
*******************************************************************************/
void Delay10ms(void) //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
这是一个独立键盘的程序,请问下高手最后一个程序的延迟10秒的函数a,b,c是什么意思?还有他们的数字是怎么定的为什么是1 38 130?新手忘高手赐教,万分感谢!
搜索更多相关主题的帖子: include 键盘 左右 
2015-08-04 10:11
sunbeam_
Rank: 3Rank: 3
来 自:我家
等 级:论坛游侠
威 望:1
帖 子:31
专家分:113
注 册:2015-8-2
收藏
得分:0 
a b c并没有什么意思 只是为了延时算出来的三个值
不知道你用的是不是STC的烧写软件 那里面有算延时的功能  
让人自己算出那些数很复杂 还要先把C代码转换成汇编指令 再根据每个指令需要的时钟周期来算

爱好计算机的电气学渣
2015-08-04 11:09
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
a,b,c是控制循环次数以达到延迟特定时间的目的。至于数字是如何计算出来的,我的方法是这样的:
首先根据晶振频率算出机器周期,然后用需要延时的时间除以机器周期,可以得到一个大概的数字,然后再利用调试状态进一步跟踪修改数字以得到更精确的时间。
2015-08-04 11:17
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
在楼主检测按键是否松开时,判断表达式不太合理。因为当i大于50时,检测按键是否松开的while循环就会退出,而此时按键不一定松开。
可以改为:while(k1==0);
意思是只要按键仍处于按下状态,就继续执行空循环,直到按键松开才退出空循环。从而达到按键松手检测的目的。
2015-08-04 11:40
sunbeam_
Rank: 3Rank: 3
来 自:我家
等 级:论坛游侠
威 望:1
帖 子:31
专家分:113
注 册:2015-8-2
收藏
得分:0 
以下是引用取名字在2015-8-4 11:40:36的发言:

在楼主检测按键是否松开时,判断表达式不太合理。因为当i大于50时,检测按键是否松开的while循环就会退出,而此时按键不一定松开。
可以改为:while(k1==0);
意思是只要按键仍处于按下状态,就继续执行空循环,直到按键松开才退出空循环。从而达到按键松手检测的目的。



你这样确实没错  但楼主的那段代码目的不只是松手检测   还可以实现长按的功能
你的手机长按音量键难道就只加或减一次么

爱好计算机的电气学渣
2015-08-04 13:41
快速回复:请问下高手独立键盘延迟时间的a,b,c是什么意思?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032632 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved