查看: 1434|回复: 0
打印 上一主题 下一主题

004、按键识别

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-27 20:01:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/********************************************************************
                            汇诚科技

实现功能:按键识别程序
使用芯片:AT89S52
晶振:11.0592MHZ
波特率:9600
编译环境:Keil
作者:zhangxinchunleo
网站:www.ourhc.cn
淘宝店:汇诚科技 http://shop36330473.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     

*********************************************************************/
#include<reg52.h>                 //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
/********************************************************************
                            初始定义
*********************************************************************/
uchar count;   //按键计数,每按一下,count 加1
uchar a,b;           //定义字符型变量
uchar temp;    //定义字符型变量
sbit BY1=P2^0; //定义按键的输入端(为单片机P2口的P2.1按键)
/********************************************************************
                            延时函数
*********************************************************************/
void delay10ms(void) //延时程序
{
uchar i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
/********************************************************************
                           按键判断函数
*********************************************************************/
void key() //按键判断程序
{
        if(BY1==0) //判断是否按下键盘
        {
                delay10ms(); //延时,软件去干扰
                if(BY1==0) //确认按键按下
                {
                        count++; //按键计数加1
                        if(count==8) //计8次重新计数
                        {
                                count=0;//将count 清零
                        }
                }
        while(BY1==0);//按键锁定,每按一次count 只加1.
        }
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
        temp=0xfe; //定义为11111110
        while(1)
        {
                key(); //调用按键判断函数
                a=temp<<count;//左移count位
                b=temp>>(8-count);//右移8-count位
                P1=a|b;        //求值
        }
}
       
/********************************************************************
                              结束
*********************************************************************/



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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