#define KEY1 1
#define KEY2 2
#define KEY3 3
#define KEY4 4
#define KEY5 5
#define KEY6 6
#define KEY7 7
#define KEY8 8
#define KEY9 9
#define KEY10 10
#define KEY11 11
#define KEY12 12
//external ram
Byte PDATA XFR_ADC _at_ 0x10;
Byte PDATA DAC0 _at_ 0x20;
void GetKey1(void)
{
Byte keytmp;
KeyData = 0;
XFR_ADC = 0x81; //adc channel = 1
DelayX1ms(2); //delay 2ms
keytmp = XFR_ADC & 0x3f; //6 bit ADC, 2^6=0X3f
if(keytmp < (12+4)) KeyData = KEY1;
else if(keytmp < (23+4)) KeyData = KEY2;
else if(keytmp < (34+4)) KeyData = KEY3;
else if(keytmp < (44+4)) KeyData = KEY4;
XFR_ADC = 0X82; //adc channel = 2;
DelayX1ms(2);
keytmp = XFR_ADC & 0x3f;
if(keytmp < (12+4)) KeyData = KEY5;
else if(keytmp < (23+4)) KeyData = KEY6;
else if(keytmp < (34+4)) KeyData = KEY7;
else if(keytmp < (44+4)) KeyData = KEY8;
XFR_ADC = 0X84; //adc channel = 3;
DelayX1ms(2);
keytmp = XFR_ADC & 0x3f;
if(keytmp < (12+4)) KeyData = KEY10;
else if(keytmp < (23+4)) KeyData = KEY11;
else if(keytmp < (34+4)) KeyData = KEY12;
else if(keytmp < (44+4)) KeyData = KEY13;
XFR_ADC = 0X00; //disable adc
}
void DelayX1ms(Word count) //crystal = 12mhz
{
Word i,j; //variable:declare Word
for(i=0;i <count;i++)
for(j=0;j <120;j++)
;
}