- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE #/ 8
//
函数声明,变量定义
#include <reg
51.h>
#define KEY P1
// 变量声明
void program_SCANkey(); // 程序扫描键盘 ,供主程序调用
void delay(unsigned int N) ;// 延时子程序,实现 (16*N+24)us 的延时 bitjudge_hitkey(); // 判断是否有键按下,有返回 1,没
有返回 0
unsigned char scan_key(); 表行,低四位代表列
unsigned char scan_key(); 表行,低四位代表列 )
// 扫描键盘,返回键值 (高四位代
void key_manage(unsigned char keycode); //键盘散转
void manage_key1(void);// 按键 1 处理程序void manage_key2(void);// 按键 2 处理程序
void manage_key1(void);
// 按键 1 处理程序
void manage_key2(void);
// 按键 2 处理程序
void manage_key3(void);
// 按键 3 处理程序
void manage_key4(void);
// 按键 4 处理程序
//
每个按键对应一个处理程序,这里
//
//函数名称:
program_SCANkey
// 函数功能:
程序扫描键盘,
// 有键按下完成按键处理,无键按下直接返回
//
void program_SCANkey(){unsigned char key_code;
if(judge_hitkey())(1000);if(judge_hitkey())while(judge_hitkey());
if(judge_hitkey())
(1000);
if(judge_hitkey())
while(judge_hitkey());
key_manage(key_code);
//
// 判断是否有键按下 {delay
//延时20ms左右,消除抖动干扰
//判断是否有效按键 {key_code=scan_key(;)
// 等待按键释放
// 键盘扫描、键盘散转、按键处理 }}}
//函数名称: delay
//入口参数:N//函数功能:
延时子程序,实现(16*N+24)us的延时
// 系统采用
11.0592MHz的时钟时,延时满足要求,其它情况需要改动
//
void delay(unsigned int N){int i; for(i=0;i<N;i++);}//
// 函数名称:
system_init()
// 函数功能:
初始化设置
// 设定 INT
0、INT1 及 T
0、T1的工作方式
//
/* void system」nit(void ){TMOD=0x55;〃定时器1和定时器0工作在方式 1,的计数模式 TR0=1; //定时器 1 和定时器 0开始计数
TR1=1;
ET0=1; //定时器 1 和定时器 0中断允许
ET1=1;
IT1=0; //选择INTO和INT1为电平触发方式
IT0=0;
EX0=1; //外部中断允许
EX1=0;
EA=1; // 系统中断允许 }//
// 函数名称:
INT0_intrupt
// 函数功能:
外部中断 0 处理程序
//
void INT0_intrupt() interrupt 0 using 1{EA=0; // 系统中断禁止 delay
(1000); // 键盘消抖动
if(INT_0==0) // 判断是否干扰
{ // 的确有健按下
while(INT_O==O);〃等待键盘释放
delay
(1000); //键盘消抖动
manage_key1();}EA=1;
}*/
//
// 函数名称: judge_hitkey
// 函数功能:
// 判断是否有键按下,有返回 1,没有返回 0
//
bitjudge_hitkey() // 判断是否有键按下,有返回
1,没有返回 0{unsigned char scancode,keycode;
scancode=0xff; //P
1.4~P
1.7 输出全 1 则无键闭合 KEY=scancode;
keycode=KEY;1.0~P1.3 的状态
keycode=KEY;
1.0~P
1.3 的状态 if(keycode==0xff) return
(0);
else
return
(1);
// 读 P
// 全 1 则无键闭合
//否则有键闭合 }//
// 函数名称:
scan_key
// 函数功能:
//
文档评论(0)