Hello everyone,
I'm a beginner on PBp/electronics and trying to make a sample code run on my hardware. The code is from
picbasic.co.uk/forum by mister_e. The program blinks the green LED on PortB.0 and should trigger(On/Off) red LED on PortB.1 upon entering 1 or 2 on the hyperterminal. I got the code running on proteus, but on the hardware side I hadnt had much luck, I hope anyone can help me here...any help is appreciated.
Kindly check my connection diagram..
DEFINE OSC 20 ' running at 20 MHZ
' PORT setting
' ============
'
TRISC=%10000000 ' RC.7 => USART RX pin set to input
' all other pin set to output
'
TRISB=0 ' RB<7:0> set to output
' USART setting
' =============
' Since we will not use HSERIN/HSEROUT, we must
' write directly to internal PIC register
'
TXSTA=$24 ' enable transmit and SPBRGH=1
RCSTA=$90 ' Enable USART and continuous receive
SPBRG=129 ' BAUD RATE = 9600 BAUDS
' Interrupt definition
' ====================
'
PIE1.5 =1 ' enable USART receive interrupt
INTCON.6 =1 ' enable peripheral interrupt
' Alias definition
' ================
'
RCIF var PIR1.5 ' receiver interrupt
StatusLED var PORTB.0 ' the LED who show a 'running process'
UserLED var PORTB.1 ' the LED that user want to control
' Variable definition
' ===================
'
Delay var word '
DataIn var byte ' use to store RCREG content
Discard var byte ' use to erase RCREG register
' Hardware/software initialisation
' ================================
'
PORTB=0 ' clear PORTB
on interrupt goto USARTInterrupt
Start:
' Main program loop that make the user happy to
' see a LED flashing to mean that something is
' running
'
toggle statusled
for delay = 1 to 5000 ' use a loop delay to ensure
pauseus 5 ' getting interrupt as fast as
next ' possible
goto start
disable interrupt
USARTInterrupt:
' Here's the interrupt routine who will make the user
' much happy by giving him the feeling to have the
' control on the machine when the status of the user
' LED will change
'
RCSTA=0 ' Disable serial port AND
' clear possible error (FERR,OERR)
datain=RCREG ' Get data
while RCif ' wait untill the RCREG is empty
discard=RCREG ' by reading it and store result in a
wend ' don't care variable
select case datain ' What to do with that data???
case "1" ' User selection = 1
userled=1 ' => Enable the LED
case "2" ' User selection =2
userled=0 ' => disable the LED
end select
RCSTA=$90 ' Re-enable the serial PORT AND
resume ' get out of here
enable interrupt
________________
thanks