|
|
View previous topic :: View next topic |
Author |
Message |
Cathee Ncqueen
Joined: 10 Oct 2008 Posts: 2
|
PIC 16F84A communicate with Hyperterminal |
Posted: Sat Oct 11, 2008 12:03 am |
|
|
Can anyone tell me what are the codes in C Programming that represent [ENTER], [SPACE],[CTRL+Z] on computer keypad?
I wrote a segment of program in PWC:
Code: |
if(input(PIN_A0))
{
output_high(PIN_B0);
printf("Connected,%x,A1");
printf("Serial Communication Is Effective,%x,0D");
}
else
{
output_low(PIN_B0);
} |
But as I compile there is error in the printf statements...
I've tried this too
Code: |
(input(PIN_A0))
{
output_high(PIN_B0);
printf("Connected\r");
printf("Serial Communication Is Effective"^z);
}
else
{
output_low(PIN_B0);
} |
But it failed too...
Did i get the code wrong or it's the format ? |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Sat Oct 11, 2008 2:23 am |
|
|
I suggest, to spend some time to understand the C language printf syntax. There's nothing CCS C specific in the shown code errors.
In the first example, the arguments for the %x specifier are missing. For each format specifier, a comma separated function parameter is expected. Provided, A1 is a variable name, the correct syntax is:
Code: | printf("Connected,%x",A1); |
The code implies, that the value of A1 is displayed in hexadecimal format, e. g.
If you intend to insert an arbitrary character code to the line, %c would be the correct format specifier. Special character constants can be inserted by a different syntax.
In the second example, ^z isn't a defined character in C language, cause ^ is a reserved operator. |
|
|
Ttelmah Guest
|
|
Posted: Sat Oct 11, 2008 2:46 am |
|
|
'Enter', on the PC, with terminals etc., usually returns two characters, not one. Carriage return, Line feed (CRLF).
In C, you can generate control characters in a whole sequence of ways. So:
Code: |
#define LF ('\n')
#define CR (0xD)
//The both do similar jobs, showing two different ways of coding such
//values.
putc(LF); //Will send the LF character
printf("Showing another way %c%c",CR,LF);
//This will send both CR, and LF. Note that for each '%' definition, there
//_must_ be a variable or constant given after the string
printf("The normal way\n\r");
//Including the constants in the string.
|
There are a lot of standard '\' escapes available, a look in a C reference book will find these.
You can also send just about any byte, using:
putc('\015');
This sends the _octal_ character defined by 015 - Carriage return.
putc('\x0D;);
Sends the same character, but defining it in hex.
These defines can also be used in the printf string.
With putc, you can also just use a number. So:
putc(13);
Again sends the carriage return.
The _one_ character you have to be very careful with, is the '\0' byte. In C, '\0' (ASCII 'NUL'), is the end of string terminator character. So, though you can send this as a single character using putc, you cannot include it 'inside' a string.
Look at a site like: www<dot>bbdsoft<dot>com<slash>ascii<dot>html
Which will give all the standard ASCII codes and names.
For your CTRL-Z, you could use:
putc('\x1A');
Best Wishes |
|
|
Cathee Ncqueen
Joined: 10 Oct 2008 Posts: 2
|
|
Posted: Sat Oct 11, 2008 10:41 am |
|
|
thank you guys so much...
so i have tried this just now:
Code: |
if(input(PIN_A0))
{
output_high(PIN_B0);
printf("Connected%C",0x0D);
printf("correct!%C",0x1A);
}
else
{
output_low(PIN_B0);
}
} |
After I burned the program in PIC and connect it to the hyperterminal, the words "connected correct!" came out continuously without stopping. The CTRL+Z is supposed to be stop the text ...it's supposed to be like this:
connected[ENTER]
correct![END]
So I still don't know what's wrong yet ... |
|
|
Ttelmah Guest
|
|
Posted: Sat Oct 11, 2008 12:42 pm |
|
|
You keep sending.......
The CTRL-Z, is a command that a _receiving_ device, can send to a _transmitting_ device that understands it, to tell _it_ to stop sending.
In your case, so long as pin A0 is high, you keep sending, so hyperterminal keeps displaying. If you want to handle control characters like this, you would have to add handling to _your_ program.
Best Wishes |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|