Função para Edição de Variável no LCD

Olá gente,
Estou tentando fazer uma rotina em C para edição de dados num LCD através de 4 teclas (Up, Down, Enter e Cancel), mas não está ficando nada boa
. Na realidade, como a intenção é fazer algo genérico, e estou usando interrupção, percebo que estou pouco a pouco complicando demais a coisa toda, pelo que gostaria de um ponto de partida dos colegas ou alguma orientação de maneira a simplificar as coisas.
Tenho o seguinte:
- Todas as funções de tratamento do LCD
- Main loop que mantém atualizado o buffer de tecla pressionada (com debouncing) = Loop infinito que chama a função "key = ReadKeys();"
- Função "char ReadKeys(void)" que me retorna a tecla pressionada, pelo que posso utilizar estruturas do tipo:
A idéia é permitir a edição de uma variável, cuja representação no LCD possa ser algo como [000000], sendo que inicialmente o cursor estaria posicionado no primeiro caractere (ou seja: [X00000]). A medida que fosse pressionando a tecla UP, o caracter seria incrementado ([100000], [200000],..) mas limitado entre 0 e 9. Assim que pressionasse a tecla ENTER, o cursor passaria ao caracter seguinte ([2X0000]), e assim por diante, até que atingido o último caracter editável, o dado seria aceito e então convertido para utilização pelo programa principal.
Imaginei implementar uma função genérica (EditField), cujos parâmetros seriam:
>Tamanho do campo de edição
- DataLen = Máximo 6 caracteres (0 a 999999)
>Variável a editar
- *Var = teria que ser tipo "double", porque 999999d não cabe em 16 bits
>Coordenadas do dado no LCD (linha e coluna do primeiro caracter)
- Row = Linha do LCD
- Col = Coluna do LCD
>Tecla que foi pressionada
- Key = {NONE, UP, DOWN, ENTER, CANCEL}
Desta forma, poderia editar variáveis de 1 a 6 caracteres, poisicionadas em qualquer coordenada do LCD.
Alguma dica?
Ou melhor, alguém conhece um jeito simples de implementar isto em C, considerando que "EditField" será chamada sempre que uma tecla for pressionada?
Valeu!
Estou tentando fazer uma rotina em C para edição de dados num LCD através de 4 teclas (Up, Down, Enter e Cancel), mas não está ficando nada boa

Tenho o seguinte:
- Todas as funções de tratamento do LCD
- Main loop que mantém atualizado o buffer de tecla pressionada (com debouncing) = Loop infinito que chama a função "key = ReadKeys();"
- Função "char ReadKeys(void)" que me retorna a tecla pressionada, pelo que posso utilizar estruturas do tipo:
- Código: Selecionar todos
if (key == NONE)
{
// Código para quando não houver nada pressionado
}
else if (key == UP)
{
// Código para tratar incrementos
}
else if (key == DOWN)
{
// Código para tratar decrementos
}
else if (key == ENTER)
{
// Código para aceitar o dado
}
else if (key == CANCEL)
{
// Código para cancelar a edição
}
A idéia é permitir a edição de uma variável, cuja representação no LCD possa ser algo como [000000], sendo que inicialmente o cursor estaria posicionado no primeiro caractere (ou seja: [X00000]). A medida que fosse pressionando a tecla UP, o caracter seria incrementado ([100000], [200000],..) mas limitado entre 0 e 9. Assim que pressionasse a tecla ENTER, o cursor passaria ao caracter seguinte ([2X0000]), e assim por diante, até que atingido o último caracter editável, o dado seria aceito e então convertido para utilização pelo programa principal.
Imaginei implementar uma função genérica (EditField), cujos parâmetros seriam:
>Tamanho do campo de edição
- DataLen = Máximo 6 caracteres (0 a 999999)
>Variável a editar
- *Var = teria que ser tipo "double", porque 999999d não cabe em 16 bits
>Coordenadas do dado no LCD (linha e coluna do primeiro caracter)
- Row = Linha do LCD
- Col = Coluna do LCD
>Tecla que foi pressionada
- Key = {NONE, UP, DOWN, ENTER, CANCEL}
Desta forma, poderia editar variáveis de 1 a 6 caracteres, poisicionadas em qualquer coordenada do LCD.
Alguma dica?


Valeu!