#include "reg52.h"
#include "absacc.h"
#define up_pa8255 XBYTE[0XF8]//上一片的各端口及控制寄存器地址
#define up_pb8255 XBYTE[0XF9]
#define up_pc8255 XBYTE[0XFA]
#define up_ctrl8255 XBYTE[0XFB]
#define down_pa8255 XBYTE[0X8F]//下一片的各端口及控制寄存器地址
#define down_pb8255 XBYTE[0X9F]
#define down_pc8255 XBYTE[0XAF]
#define down_ctrl8255 XBYTE[0XBF]
#define led XBYTE[0XF8]
void delay10ms(void)
{
unsigned char i=0,j=0;
for(i=0;i<20;i++)
for(j=0;j<248;j++);
}
//------------------------------------------------
void key(void)
{
delay10ms();
if(down_pa8255!=0xff)
switch(~down_pa8255)
{
case 0x01:led=1;break;//输出的是BCD码
case 0x02:led=2;break;
case 0x04:led=3;break;
case 0x08:led=4;break;
case 0x10:led=5;break;
case 0x20:led=6;break;
case 0x40:led=7;break;
case 0x80:led=8;break;
}
}
//------------------------------------------------
void main(void)
{
led=0x00;
up_pa8255=0xff;
down_pa8255=0xff;
up_ctrl8255=0x80;//A,B,C口均为输出
down_ctrl8255=0x90;//A口输入,B,C口输出
while(1)
{
if(down_pa8255!=0xff)
key();
}
}
附注:转载请注明作者与出处!