Thanks I've made some changes to my code and it is working sort of.
Code:
'-------------------------------------
' PBP Fake BCM CODE 21/10/09 V.04
'-------------------------------------
@ DEVICE PIC16F88,INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F88,PROTECT_OFF
@ DEVICE PIC16F88,WDT_OFF
@ DEVICE PIC16F88,PWRT_ON
@ DEVICE PIC16F88,MCLR_OFF
@ DEVICE PIC16F88,BOD_OFF
@ DEVICE PIC16F88,LVP_OFF
@ DEVICE PIC16F88,CPD_OFF
@ DEVICE PIC16F88,DEBUG_OFF
@ DEVICE PIC16F88,CCPMX_OFF
DEFINE OSC 8 'Set oscilator speed to 8mHz
DEFINE HSER_BAUD 9600 'Set Baud rate to 9600bps
DEFINE HSER_BITS 9 'Set to 9 bit mode
DEFINE HSER_EVEN 1 'Set Even Parity
DEFINE HSER_CLROERR 1 'Clear overflow error automatically
OSCCON=%01111000 '8 Mhz
ANSEL = 0 'ALL DIGITAL
CMCON = 7 'COMPARATORS OFF
INTCON = 0 'Disable interrupts
TRISB = %00000100 'SET PORTB RB2(RX) as input, others to OUTPUT
TRISA = %11111111 'SET PORTA AS INPUTS
DATAIN VAR BYTE[12] 'Define DATAIN as a byte array (12 Bytes)
loop: 'Start of Communications Loop
HSERIN [str DATAIN\12] 'Receive 12 bytes into array DATAIN
HSEROUT [str DATAIN\12] 'Transmit 12 bytes from array DATAIN
goto looP 'Goto Loop
END
Now what I want to do is use a qualifier so that the Hserin waits until $AA is received before it starts filling the array. I also want the $AA in the array though? Possible?
So it should receive twelve bytes in all like this.
0xAA,0x10,0x00,0x00,0x00,0x20,0x40,0x61,0x10,0x01, 0x00,0x74
Does this look right?
Code:
loop: 'Start of Communications Loop
HSERIN [WAIT($AA), str DATAIN\12] 'Receive 12 bytes into array DATAIN
HSEROUT [str DATAIN\12] 'Transmit 12 bytes from array DATAIN
goto looP 'Goto Loop
I read that a delay may be required after the last send in the HSEROUT section or it may not transmit the last byte correctly?
Bookmarks