Ответ: вот... забабахал ввод текста... ;))) коротко, практично, но жрет память...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SOIC 25 марта 2003 г. 13:54
В ответ на: Хороший вопрос задали (у самого на столе лежит разработка-носимый дивайс Аж на 34 кнопки... пока , вообще, без символов :-() Поделюсь личными соображениями и наблюдениями...(+) отправлено Serg-Ant 25 марта 2003 г. 13:31

Думаю многим помогёт... ;)))

Итак, IAR C:


const unsigned char key1[] = { 'A','B','C','a','b','c',0x00 };
const unsigned char key2[] = { 'D','E','F','d','e','f',0x00 };
const unsigned char key3[] = { 'G','H','I','g','h','i',0x00 };
const unsigned char key4[] = { 'J','K','L','j','k','l',0x00 };
const unsigned char key5[] = { 'M','N','O','m','n','o',0x00 };
const unsigned char key6[] = { 'P','Q','R','p','q','r',0x00 };
const unsigned char key7[] = { 'S','T','U','s','t','u',0x00 };
const unsigned char key8[] = { 'V','W','X','v','w','x',0x00 };
const unsigned char key9[] = { 'Y','Z','y','z', 0x00 };
const unsigned char key0[] = { ' ',',','.','-','+','/','*',0x00 };

const unsigned char*const keymap[] = { key0, key1, key2, key3, key4, key5, key6, key7, key8, key9 };

void inputStr(void)
{
char sbuf[81];
unsigned char sk, CHR, pos;
unsigned int i, ins;

clrscr();

pos = 0;
for(i=0; i < 81; i++) sbuf[i] = 0x00;
lcd_dmode(0x05); // cursor ON

ins = 0;
while(1)
{
clrscr();
printf("%s", sbuf);
gotoxy(pos%20, pos/20);
sk = WaitKBD();
if(sk=='E') break; // Enter
switch(sk)
{
case '-': // Up
if(pos) pos--;
ins = 0;
break;
case '+': // Down
if(pos < 79)
if(sbuf[pos]) pos++;
ins = 0;
break;
case 'B': // Backspace
ins = 0;
if(pos)
{
for(i=pos; i <= 80; i++) sbuf[i-1] = sbuf[i];
pos--;
}
break;
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
if(ins)
{
if(ins==sk)
{
CHR++;
if(!keymap[sk-'0'][CHR]) CHR = 0;
}
else { ins = sk; CHR = 0; }
}
else
{
ins=sk;
CHR = 0;
for(i=79; i > pos; i--) sbuf[i] = sbuf[i-1];
}
sbuf[pos] = keymap[sk-'0'][CHR];
break;
}
}

lcd_dmode(0x04); // cursor OFF
}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru