View previous topic :: View next topic |
Author |
Message |
Chris.Guest Guest
|
How to pass a pointer to a constant in ROM to a function? |
Posted: Sat May 03, 2008 3:46 am |
|
|
Hello,
I'm trying to pass this string:
Code: | unsigned char rom test[] = {"HELLO"} | to this function:
Code: | void demo(unsigned char *c) |
But the compiler doesn't like this line:
Is there any way to do this?
Chris |
|
|
MartinSwoll Guest
|
|
Posted: Sat May 03, 2008 4:14 am |
|
|
Same problem here...
PCH returns this error:
Code: | *** Error 112 "main.c" Line 62(1,1): Function used but nor defined: ... demo SCR=700 |
Martin |
|
|
MartinSwoll Guest
|
|
Posted: Sat May 03, 2008 4:15 am |
|
|
Sorry, forgot to post my version...
It's 4.065... |
|
|
KU5D
Joined: 10 Feb 2008 Posts: 46 Location: Asheville, North Carolina
|
|
Posted: Sat May 03, 2008 6:52 am |
|
|
Two separate problems.
For the first, instead of
demo(&test);
try this,
demo(test);
-----
As for the second (Error 112), are you sure your function definition appears to your compiler before the function is called? _________________ Confidence is the feeling you have right before you fully understand the situation... |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sat May 03, 2008 9:44 am |
|
|
The following program works. See the key points shown in bold below.
If you run it in MPLAB simulator and use the MPLAB "UART1" for output,
it displays this in the output window:
Quote: |
#include <16F877.H>
#device PASS_STRINGS=IN_RAM
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
unsigned char const test[] = {"HELLO"};
void demo(unsigned char *ptr)
{
printf(ptr);
}
//====================================
void main()
{
demo(test);
while(1);
} |
|
|
|
|