We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I've written some code for an educational project which tries to capture input from the user, I've noticed that when using the library function _getkey() alone it turns each typed Enter or Intro pressed key into CR ('\r', ASCII encoding = 0x0D), but when using the function getchar(), which is supposed to use _getkey() internally, it turns each typed Enter or Intro pressed key into LF ('\n', ASCII encoding = 0x0A), following I show two small snippets I've used in order to verify this behavior:
1.- Using _getkey() and putchar() to get the job done:
#include <reg515c.h> #include <stdio.h> void test_getkey (void) { char c; while ((c = _getkey ()) != 0x1B) { putchar(c); printf ("\ncharacter = %bu %bx\n", c, c, c); } } void main(void) { SCON = 0x52; BD = 1; /* 9600 Bd @ 10 MHz => SMOD = 1, SREL = 0x3BF */ PCON |= 0x80; SRELL = 0xBF; while(1) test_getkey(); }
Output when pressing the Enter or Intro key:
character = 13 d
1.- Using getchar() to get the job done:
#include <reg515c.h> #include <stdio.h> void test_getchar(void) { char c; while ((c = getchar ()) != 0x1B) { putchar(c); printf ("\ncharacter = %bu %bx\n", c, c, c); } } void main(void) { SCON = 0x52; BD = 1; /* 9600 Bd @ 10 MHz => SMOD = 1, SREL = 0x3BF */ PCON |= 0x80; SRELL = 0xBF; while(1) test_getchar(); }
character = 10 a
In the following Support Knowledge Base article:
http://www.keil.com/support/docs/1791.htm
it is stated that by defaul getchar() is implemented as follows:
char getchar (void) { char c; c = _getkey (); putchar (c); return (c); }
So I don't understand why the characters read vary when pressing the Enter/Intro key, could somebody please shed some light on this issue?.
Thanks in advance, Juan