|
|
View previous topic :: View next topic |
Author |
Message |
sheing3003
Joined: 05 Jul 2006 Posts: 10
|
problem with putc() |
Posted: Sat Jul 22, 2006 9:00 pm |
|
|
i need help with putc(), it's a strange problem,
i declare int8 dummy, dummy1;
Code: |
dummy=1;
dummy1=255;
printf("start");
for(i=0;i<12928;i++)
if((i%129)==0)
putc(dummy);
else
putc(dummy1);
|
and dummy1 and dummy are suppose to be color data (0 being white, and 255 being black)
when I use 1 as white everything works perfect, but when I set dummy=0, then the picture is all messed up
the pc software has no problem, I can use 0 when no communication with PIC...so can putc() not send 0?
Thanks in advance |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sat Jul 22, 2006 11:20 pm |
|
|
Yes, putc() can send a 0. Here is a test program:
Code: |
#include <16F877.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
//======================
void main()
{
int8 c;
c = 0;
putc(c);
while(1);
} |
Here is the code generated by vs. 3.249 of the compiler,
with comments:
Code: |
0000 00311 ... int8 c;
0000 00312 ...
0000 00313 ... c = 0;
0016 01A1 00314 CLRF 21 // Set 'c' to 0x00
0000 00315 ...
0000 00316 ... putc(c);
0017 0821 00317 MOVF 21,W // Move 'c' into W reg.
0018 1E0C 00318 BTFSS 0C.4 // Wait until UART is ready
0019 2818 00319 GOTO 018
001A 0099 00320 MOVWF 19 // Put W into the TXREG
0000 00321 ...
0000 00322 ...
0000 00323 ... while(1);
001B 281B 00324 GOTO 01B
0000 00325 ... }
SYMBOL TABLE
LABEL VALUE
main.c 00000021
|
This code shows that a variable can be set to 0 and transmitted
by the UART. |
|
|
Ttelmah Guest
|
|
Posted: Sun Jul 23, 2006 3:23 am |
|
|
As PCM programmer says, putc, must definately can send a '0'. I'd be wondering about other possible problems. How is the connection made?. remember a '0' will be unique in having eight consecutive 'low' bits, and some connections (wireless for example, or something with a capacitive connection), can at times show problems with such a data pattern.
Best Wishes |
|
|
sheing3003
Joined: 05 Jul 2006 Posts: 10
|
|
Posted: Tue Jul 25, 2006 12:17 pm |
|
|
the connection is by serial port, rs232...
i don't know why it's behaving like that, it should work, but it's not...
the strangest thing is that when I replace 0 with 1, (there's 255 color bits so replacing 0 with 1 doesn't really matter, since our eyes cant tell), when i replace 0 with 1 everything works fine... but if i leave the 0 as it is my image get all screwed up....
still can't figure it out...
but i guess it works...probably just my program |
|
|
Ttlemah Guest
|
|
Posted: Tue Jul 25, 2006 2:50 pm |
|
|
As a suggestion, are you using the 'MScomm' active-X control to retrieve the data at the PC?. If so, 'null discard', needs to be set to false, or 0 characters will not be returned...
Best Wishes |
|
|
sheing3003
Joined: 05 Jul 2006 Posts: 10
|
|
Posted: Wed Jul 26, 2006 5:35 pm |
|
|
Ttlemah wrote: | As a suggestion, are you using the 'MScomm' active-X control to retrieve the data at the PC?. If so, 'null discard', needs to be set to false, or 0 characters will not be returned...
Best Wishes |
ooo!! that might be the reason! thanks for the suggestion
now i gotta figure out how to set that to false...lol |
|
|
|
|
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
|