8279键盘和显示程序
#include<at89c52.h>
#include<absacc.h>
#include<stdio.h>
#define COM8279 XBYTE [0xF2FF] //定义8279控制口
#define DATA8279 XBYTE [0xF0FF] //定义8279数据口
#define uchar unsigned char
#define uint unsigned int
uint keyval //定义键内码传递参数uint time //定义延时参数
void delay(uint time)
void key(void)
void main()
{
delay(1300) //开机延时
COM8279 = 0xD2 //清除RAM和FIFO delay(1)
EA=1
EX1=1 //开总中断,开外部中断1;IT1=1 //外部中断1选用下降沿COM8279=0x00 //8279键盘双键互锁,编码扫描,左端入口COM8279=0x12 //时钟分频设置,分频数为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: //0号键赋值
{
P0=0x3F;
DATA8279=P0;
break;
}
case 0xC2: //1号键赋值;
{
P0=0x06;
DATA8279=P0;
break;
}
case 0xC1: //2号键赋值;
{
P0=0x5B;
DATA8279=P0;
break;
}
case 0xc0: //3号键赋值;{
P0=0x4F;
DATA8279=P0;
break;
}
case 0xCB: //4号键赋值;{
P0=0x66;
DATA8279=P0;
break;
}
case 0xCC: //5号键赋值;{
P0=0x6D;
DATA8279=P0;
break;
}
case 0xC9: //6号键赋值;{
P0=0x7D;
DATA8279=P0;
break;
}
case 0xC8: //7号键赋值;
{
P0=0x07;
DATA8279=P0;
break;
}
case 0xD3: //8号键赋值;{
P0=0x7F;
DATA8279=P0;
break;
}
case 0xD2: //9号键赋值;{
P0=0x6F;
DATA8279=P0;
break;
}
case 0xD1: //A号键赋值;{
P0=0x77;
DATA8279=P0;
break;
}
case 0xD0: //B号键赋值;{
P0=0x7C;
DATA8279=P0;
break;
}
case 0xE3: //C号键赋值;{
P0=0x39;
DATA8279=P0;
break;
}
case 0xE1: //D号键赋值;{
P0=0x5E;
DATA8279=P0;
break;
}
case 0xE2: //E号键赋值;{
P0=0x79;
DATA8279=P0;
break;
}
case 0xE0: //F号键赋值;{
P0=0x71;
DATA8279=P0;
break;
}
default:
break;
}
}。