//注:去掉列线上拉,显示正常。
// 加上列线上拉,近乎死机。
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define L1 (P2|0xFE)
#define L2 (P2|0xFD)
#define L3 (P2|0xFB)
#define L4 (P2|0xF7)
uchar key_value=16;
uchar code SMG[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};//0~F显示码。
// A
uchar code K_number[]={1,2,3,10,4,5,6,11,7,8,9,12,14,0,15,13};//键号。
// 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 //键值。
uchar keyscan()
{
static uchar temp; // 必须将temp(返回参数)定义为静态。
uchar count=0;
P2=0xEF;
if(L1!=0xff) temp=count;
count++;
if(L2!=0xff) temp=count;
count++;
if(L3!=0xff) temp=count;
count++;
if(L4!=0xff) temp=count;
count++;
P2=0xDF;
if(L1!=0xff)
temp=count;
count++;
if(L2!=0xff) temp=count;
count++;
if(L3!=0xff) temp=count;
count++;
if(L4!=0xff) temp=count;
count++;
P2=0xBF;
if(L1!=0xff) temp=count;
count++;
if(L2!=0xff) temp=count;
count++;
if(L3!=0xff) temp=count;
count++;
if(L4!=0xff) temp=count;
count++;
P2=0x7F;
if(L1!=0xff) temp=count;
count++;
if(L2!=0xff) temp=count;
count++;
if(L3!=0xff) temp=count;
count++;
if(L4!=0xff) temp=count;
count++;
return temp;
}
//==================================================================================
void main()
{
uchar key_value=16;
EA=1;
EX0=1;
IT0=0; //低电平中断触发。
P2=0x0F;//(这条语句十分重要)。
P0=SMG[key_value];
while(1);
}
//==================================================================================
void KeyBoard_isr(void)interrupt 0 using 1
{
EX0=0;
key_value=keyscan();// 读取键值。
P0=SMG[K_number[key_value]]; //根据键值查键号,根据键号查键码。
P2=0x0F;//(这条语句也十分重要)。
EX0=1;
}
没有合适的资源?快使用搜索试试~ 我知道了~
单片机键盘中断的Proteus仿真
共19个文件
txt:4个
bak:2个
hex:1个
需积分: 9 12 下载量 162 浏览量
2009-05-16
16:34:31
上传
评论
收藏 44KB RAR 举报
温馨提示
键盘扫描与中断的应用,包括程序。 内容包括键盘扫描与键盘中断,学习键盘不可多得的资料。
资源推荐
资源详情
资源评论
收起资源包目录
.rar (19个子文件)
键盘中断
Code
3.键盘中断_普通.txt 2KB
4.键盘中断_经典.txt 2KB
2.经典扫描.txt 1KB
1.普通扫描.txt 1KB
Proteus
KeyBoard_INT.PWI 768B
Last Loaded KeyBoard_INT.DBK 92KB
KeyBoard_INT.DSN 87KB
MCU
KeyBoard_INT 4KB
KeyBoard_INT.plg 171B
KeyBoard_INT_Uv2.Bak 2KB
KeyBoard_INT_Opt.Bak 1KB
KeyBoard_INT.Uv2 2KB
KeyBoard_INT.LST 4KB
KeyBoard_INT.lnp 56B
KeyBoard_INT.C 2KB
KeyBoard_INT.M51 6KB
KeyBoard_INT.hex 1KB
KeyBoard_INT.OBJ 5KB
KeyBoard_INT.Opt 1KB
共 19 条
- 1
资源评论
kof2008
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功