8279键盘和显示程序#include<at89c
52.h>
#include<absacc.h>
#include<stdio.h>
#defineCOM8279XBYTE [0xF2FF定义8279 控制口#defineDATA8279XBYTE [OxFOFF定义8279 数据口#define uchar unsigned char
#define uint unsigned int
uint keyval// 定义键内码传递参数
uint time// 定义延时参数
void delay(uint time)
void key(void)
void main(){delay
(13OO)// 开机延时
COM8279 = 0xD2/4青除RAM 和FIFO
delay
(1)
EA=1
EX1 = 1〃开总中断,开外部中断1;
IT仁1〃外部中断1选用下降沿
COM8279=OxOO//8279键盘双键互锁,编码扫描,左端入口
COM8279=Ox12〃时钟分频设置,分频数为18
COM8279=0x70
COM8279=0x90;
while
(1)}void delay (uint time)// 传递参数为time{uchar j// 设置读显示命令
// 设置写显示命令
while (time--)// 用time-1 来进行循环{for (j=100;j>0;j--)//用j 来进行125次循环,大约8us}}}
void intsvr1(void) interrupt 2 using 1{keyval=DATA8279
key()}〃按键确认程序
void key(void){switch(keyval){case 0xC3:{P0=0x3F;
DATA8279=P0;
break;}case 0xC2:{P0=0x06;
DATA8279=P0;
break;}case 0xC1:
{//0 号键赋值
//1 号键赋值;
//2 号键赋值;
P0=0x5B;
DATA8279=P0;
break;}case 0xc0://3 号键赋值;DATA8279=P0; break;}case 0xCB:
{P0=0x66;
DATA8279=P0;
break;}case 0xCC:
{P0=0x6D;
DATA8279=P0;
break;}case 0xC9:{P0=0x7D;
DATA8279=P0;
break;}case 0xC8://4 号键赋值;
//5 号键赋值;
//6 号键赋值;
//7 号键赋值;{P0=0x07;
DATA8279=P0;
break;}case 0xD3://8 号键赋值;
DATA8279=P0;
break;}case 0xD2:{P0=0x6F;
DATA8279=P0;
break;}case 0xD1:{P0=0x77;
DATA8279=P0;
break;}case 0xD0:{P0=0x7C;
DATA8279=P0;
break;
}//9 号键赋值;
//A 号键赋值;
//B 号键赋值;
case 0xE3://C 号键赋值;{P0=0x39;
DATA8279=P0;
break;}case 0xE1:{P0=0x5E;
DATA8279=P0;
break;}case 0xE2:{P0=0x79;
DATA8279=P0;
break;}case 0xE0:{P0=0x71;
DATA8279=P0;
break;}default:
break;}}//D 号键赋值;
//E 号键赋值;
//F 号键赋值;{P0=0x4F; {P0=0x7F;。