键盘显示模块调试程序
扫描二维码
随时随地手机看文章
键盘显示模块调试
其程序框图如下图所示:
#include
#includeCC.h>
#definecomXBYTE[0X9FFF];8279命令入口地址
#definedatXBYTE[0x9eff];8279数据入口地址
#defineucharunsignedchar
#defineuintunsignedint
sbitcflag=ACC^7;
ucharj=0,sq;
ucharcodekeytab[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};;键码表
ucharcodetab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x71};;字形表
voiddelay(uintt);;延时函数
voidclr();;清除8279RAM数据
voidserve();;8279中断服务函数
voidmain(void);主函数
{uinti;
com=0xd1;;送清除指令
do{ACC=com;}
while(cflag!=0);;查状态寄存器DU,直到DU为零
com=0x34;;定标值20
com=0x10;;写8279工作模式:左端送入,8字符显示
delay(200);;延时
com=0x90;;写入8279显示RAM起始0单元,自动加1
EA=1;;开中断
EX0=1;
IT0=1;
do{}
while(1);;等待按键中断
}
voidserve()interrupt0;中断服务函数
{
uinti;
com=0x40;;读FIFO中的键值
sq=dat&0x3f;;保留键编码部分
for(i=0;i<16;i++)
{if(sq==keytab[i])break;;查键码表
}
dat=tab[i];;查字形表,将按键值送显示
}
voiddelay(uintt);延时函数
{uinti,j;
for(i=0;i
}
voidclr(void);清除8279显示RAM数据函数
{com=0xd1;
do{ACC=com;}
while(cflag!=0);
j=0;
com=0x90;
dat=0x40;
}
测试过程中,每按一键,数码管显示相应的值,即调试成功。