Can the PIC send out true binary serially or just ASCII representation of it?
Printable View
Can the PIC send out true binary serially or just ASCII representation of it?
Yes, It is always binairy data what you sent. ASCII is also binairy.
The recieving unit could be a problem. Don't forget to sent 8 bits.
Well, like if I use the BIN8 operator, i do get 10110111 in the serial command window, but Matlab reads it as 49, 48, 49, 49, 48, 49, 49, 49 (which is the decimal value of the ascii characters, 0 and 1. So instead of each bit being sent in 1 bit, each bit requires 5 bits b/c 2^5 is 64. Basically, is there a way to send binary and not ascii?
TurboLS,
A "standard terminal" displays the ASCII representation of each byte received.
So if you would like to see "BINARY" on your terminal screen you have got to send the (8bit) ASCII value for the every single "1" and "0"
or
choose a "terminal-program" that is capable of displaying the binary values of received data.
what is the command to send binary values if I have a terminal program that can view them?
Is the PIC capable of sending RAW binary data?? ASCII characters take longer to send, so if I can send RAW binary data, that would be optimum. Does anyone know?
I think if you just send the value without any formatting, it's in raw format.Quote:
Is the PIC capable of sending RAW binary data??
I.E. X = 10 : HSEROUT [X].
You can send whatever value's in X directly to the USART TXREG like this,
and I'm fairly sure the PIC doesn't automatically convert bytes placed in
TXREG to ASCII;
I don't have MATLAB to test this, but I can't see why it wouldn't work. I getCode:SPBRG = 64 ' 19200 bps @20MHz
RCSTA = $90 ' Serial port enable
TXSTA = $24 ' Transmit enable, BRGH = 1 for high-speed
X VAR BYTE
TRISC.6=0
MAIN:
FOR X = 0 to 255
GOSUB ENCODE
PAUSE 50
NEXT X
X = $0D ' Carriage return
GOSUB ENCODE
X = $0A ' Line feed
GOSUB ENCODE
PAUSE 100
GOTO Main
ENCODE:
ASM
movf _X, W ; Load X into W reg
btfss PIR1,4 ; Wait for TXREG to be empty after last byte
goto $-1 ; Not empty, wait
movwf TXREG ; Empty, so send next byte
ENDASM
RETURN
the same results from either method with a standard terminal program.