[求助]有关51用8155作扩展i/o,键盘扫描程序最近做一个键盘扫描的程序
只做一行扫描,可是按键后怎么也不能跳转
不知道是什么原因,请各位指教!!!
下面附上程序:
#include <REG51.h> /* Device specific head file*/
#include <intrins.h>
#include <absacc.h> /* Absolute memory access */
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
void keyscan(void);
void Initialize(void);
void Dog()
{
uchar xdata *plcd;
plcd = 0xA000;
*plcd = 0x00;
}
void Delay(uint n)
{
data uint i=0;
for(i=0;i <n;i++)
{Dog();}
}
void Initialize()
{ uchar i=0;
for(i=0;i <250;i++)
{
Delay(172);
Delay(172);
}
XBYTE[0x8100]=0x03; /*初始化8155,PB口输出,PC口输入*/
}
void main()
{
Initialize();
while(1)
{
keyscan();
}
}
void keyscan()
{
unsigned char l;
unsigned char m;
unsigned char b;
XBYTE[0x8102]=0x0F;
b=XBYTE[0x8102];
m=XBYTE[0x8103];
m=m&0x0f;
if(m!=0x0f)
{
Delay(430);
XBYTE[0x8102]=0x0f;
m=XBYTE[0x8103];
m&=0x0f;
if(m!=0x0f)
{
m=XBYTE[0X8103];
m&=0x0f;
switch(m)
{
case(0x0e):l=3;break;
case(0x0d):l=2;break;
case(0x0b):l=1;break;
case(0x07):l=0;break;
}
}
}
}