void ReadCmd(char kp);
void ReadKey(void);
char canRead = 0;
unsigned int error;
const unsigned long sectorNo = 510;
char i=0;
unsigned short kp;
char *chNumbers = "123A456B789C*0#D";
char buffer[17];
char dataBuffer[sectorNo];
void main()
{
CMCON = 0x07; // turn off comparators
ADCON1 = 0xFF; // turn off analog inputs
TRISA = 0x00; // PORTB is output
TRISC = 0x00;
TRISE = 0x00;
//TRISB=0x00;
Keypad_Init(&PORTD);
Lcd_Custom_Config(&LATA,0,1,2,3,&LATE,2,1,0); // Initialize LCD on PORTB
Lcd_Custom_Cmd(LCD_CLEAR); // Clear display
Lcd_Custom_Cmd(LCD_CURSOR_OFF); // Cursor off
Spi_Init_Advanced(MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH);
//Spi_Init();
Delay_ms(1000);
Lcd_Custom_Out(1, 1, "No MMC Card");
//PortA.F6 = 1;
LATA = 0x60;
while(1)
{
if(Mmc_Init(&PORTB,6) == 0)
{
Lcd_Custom_Out(1, 1, "MMC connected");
canRead = 1;
ReadKey();
}
}
}//~!
void ReadCmd(char kp)
{
switch(kp)
{
case '#':
{
strcpy(dataBuffer, buffer);
error = Mmc_Write_Sector(sectorNo, dataBuffer);
if(error == 0)
{
i=0;
buffer[i]='\0';
Lcd_Custom_Out(2, 1, " ");
}
}break;
case '*':
{
error = Mmc_Read_Sector(sectorNo, dataBuffer);
if(error == 0)
{
strncpy(buffer, dataBuffer, 17);
Lcd_Custom_Out(2, 1, buffer);
i=strlen(buffer);
}
}break;
default:
{
if(i<16)
{
buffer[i++]= kp;
buffer[i]='\0';
Lcd_Custom_Out(2, 1, buffer);
}
}
}
}
void ReadKey(void)
{
do {
kp = 0;
//--- Wait for key to be pressed
do
//--- un-comment one of the keypad reading functions
kp = Keypad_Released();
//kp = Keypad_Read();
while (!kp);
//--- print it on LCD
//Lcd_Custom_Chr(1, 10, chNumbers[kp]);
ReadCmd(chNumbers[kp]);
//WordToStr(cnt, txt);
} while (canRead);
}