'TRANSMITTER PIC 16F84
'HARDWARE SETUP
'''''''''''''''
DEFINE OSC 4
INCLUDE "MODEDEFS.BAS" 		'Serial communication mode definition file

TRISA = %00000 			'Set PORTA to all outputs
PORTA = 0 			'PORTA outputs LOW
TRISB = %00000000 		'Set PORTB to all outputs
PORTB = 0 			'PORTB outputs LOW

'VAIRABLES
''''''''''
B0 VAR BYTE 			'Serout vairable
B0 = %10101010 			'Vairable value

PORTB.1 = 1			'Light Power-On indicator LED 

'MAIN PROGRAM
'''''''''''''
LOOP1:
PAUSE 10 			'Pause for 10ms
SEROUT PORTB.0,T300,[B0] 	'Output decimal equivalent
GOTO LOOP1 			'Return to main program start
END



****************************************

'RECEIVER PIC 16F84
'HARDWARE SETUP
'''''''''''''''
DEFINE OSC 4 
INCLUDE "MODEDEFS.BAS" 		'Serial communication mode definition file

'Uncalibrated SLEEP mode in assembler code
ASM			
SLEEPUNCAL = 1		
ENDASM

TRISA = %00000 			'Set PORTA to all outputs
PORTA = 0 			'PORTA outputs LOW
TRISB = %00010001 		'Set PORTB to all outputs but RB0
PORTB = 0 			'PORTB outputs LOW

'VAIRABLES
''''''''''
B0	VAR	BYTE		'SERIN input vairable
B1	VAR	BYTE 		'B1 vairable
B1 = %10101010 			'B1 vairable value
B2	VAR	BYTE		'Button vairable

GOSUB STARTBEEP			'Sound START beep on RB1

'MAIN PROGRAM
'''''''''''''
LOOP1:

'Manual activation button
B2 = 0					'Clear B2 vairable
BUTTON PORTB.0,1,255,0,B2,1,LED2	'Set RB0 as a button to activate LED2

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Check ultrasonic sensor for serial binary codes
PORTB.5 = 1				'Set RB5 high to power ultrasonic RX circuit
PAUSE 10				'Pause for 10 ms for circuit stabilisation 
B0 = 0					'SET B0 vairable to zero
SERIN PORTB.4,T300,200,LED1,B0		'Input at True 300 baud on RB4 for 2 seconds
IF B0 = B1 THEN LED2			'Compare
PORTA.5 = 0				'Reset RB5 low to turn off ultrasonic RX circuit
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
GOTO LOOP1 				'Return to main program start
END


'SUBROUTINES
LED1:
PORTB.5 = 0			'Reset RB5 low to turn off ultrasonic RX circuit
PORTB.2 = 1 			'Light LED1 on RB2
PAUSE 1000 			'Pause for 1 second 
GOSUB NOBEEP			'Sound NOBEEP on RB1
PORTB.2 = 0 			'Extinguish LED1 on RB2
'NAP 2				'Testing NAP statement
GOTO LOOP1 			'Return to main program start

LED2:
PORTB.5 = 0			'Reset RB5 low to turn off ultrasonic RX circuit
PORTB.3 = 1 			'Light LED2 on RB3
PAUSE 1000 			'Pause for 1 second
GOSUB SDBEEP			'Sound SDBEEP on RB1
PORTB.3 = 0 			'Extinguish LED2 on RB3
SLEEP 1				'Testing SLEEP statement
GOTO LOOP1 			'Return to main program start

STARTBEEP:
SOUND PORTB.1, [110,20]		'Sound a beep on PORTB RB1
PAUSE 10			'Pause for 10ms
RETURN				'Return to GOSUB and continue

NOBEEP:
SOUND PORTB.1, [90,20]		'Sound a beep on PORTB RB1
PAUSE 10			'Pause for 10ms
RETURN				'Return to GOSUB and continue

SDBEEP:
SOUND PORTB.1, [50,20]		'Sound a beep on PORTB RB1
PAUSE 10			'Pause for 10ms
RETURN				'Return to GOSUB and continue


