Hi Joe,
Take a look at this.
http://www.picbasic.co.uk/forum/showthread.php?t=3753
Regards.
Hi Joe,
Take a look at this.
http://www.picbasic.co.uk/forum/showthread.php?t=3753
Regards.
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
BRAD,
What PIC? You posted in the PBC section and not PBP - is this correct? If you are using PBC, try
You might also want to check out Melanie's excellent post hereCode:'Example for 16F628A with PBC (Not PBP) POKE $86, 0 ' all of PORTB output (optional line but good programming practice) POKE $06, 0 ' all of PORTB low (optional line but good programming practice) MAIN: PAUSE 500 ' no LED on FOR B0 = 0 to 3 HIGH B0 ' turn ON RB0, then RB1, then RB2, then RB3 PAUSE 500 ' pause half a second NEXT B0 FOR B0 = 0 to 3 LOW B0 ' turn OFF RB0, then RB1, then RB2, then RB3 PAUSE 500 ' pause half a second NEXT B0 PAUSE 500 ' no LED on GOTO MAIN END
http://tinyurl.com/gpt6b
and search the forum for "rider" (as in knight rider) for more visual ideas.
Any questions?
Paul Borgmeier
Salt Lake City, UT
USA
__________________
Thanks for the replies...
I think I will test out a code I created using some of the elements from the code you guys gave me...
Hopefully it'll work and I can get this thing going...
-Brad
Okay well I will use the code from the link Sayzer gave me...
I am making an LED Underbody Kit though and so one PIC will control the front left, one will control the left side, one will control the the back left, and the same for the right side. So I will need my PIC's to communicate. When the last LED on the front left is turned on I want the side to start sequencing and same goes for the transition from side to back.
To do this will I have to set the final output on the front left to go high and then have it connected to an input on the side PIC? That way I could tell the side PIC not to do anything until that input receives a "high" signal from the other PIC. I could do that correct? If so, how would I program it?
Thanks again for all your help guys.
-Brad
If I understood correct, this should be it. Just an example though.
Code:Wait: IF PORTA.1 = 1 THEN GOTO Loop 'This is the pin you get the input signal from the other PIC. GOTO Wait Loop: 'Your loop code should be here.... 'When the last loop index is achieved, 'you will HIGH a pin to activate the next PIC 'and you will go back to "Wait" GOTO loop
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
Here is the code I came up with...
------------------------------------------------------
SYMBOL PORT_PIN = PORTA
X VAR BYTE ' For loop & bit index pointer
Wait:
IF PORTA.1 = 1 THEN GOTO Main 'checks if input recieves high signal
GOTO Wait
On:
ADCON1 = 7 ' All digital
PORTA = 0 ' Clear all port pins
PORTB = 0
PORTC = 0
TRISA = 0 ' Make them all outputs
TRISB = 0
TRISC = 0
FOR X = 0 TO 23
PORT_PIN.0[X] = 1 ' Set all porta, portb, and portc pins high
PAUSE 200
NEXT X
GOTO Off
Off:
ADCON1 = 7 ' All digital
PORTA = 0 ' Clear all port pins
PORTB = 0
PORTC = 0
TRISA = 0 ' Make them all outputs
TRISB = 0
TRISC = 0
FOR X = 0 TO 23
PORT_PIN.0[X] = 0 ' Set all porta, portb, and portc pins low
PAUSE 200
NEXT X
GOTO On
---------------------------------------------------
My only question now is, how do I set PORTA.1 to be an input? In my code I set all PORTA pins to be outputs. Is there a way I can set just PORTA.1 to be input?
As always, I appreciate your help.
-Brad
1. You first need to set the TRIS register for a port. Having TRISA = %00000000 makes all pins output. From right to left they are arranged as porta.0 to porta.7. (F877 has 6 pins on PORTA). If you want to make one of them an input, say you need PORTA.1 as input, then you state TRISA = %00000010. Now, all of them are outputs except for PORTA.1 (also for some PICs, you need to watch for MCLR pin which is an input-only pin).
OR, you can just say INPUT PORTA.1
2. You should keep all registers at the beginning. No need to put them into each subroutine.
3. ON is a reserved word. Thus, you can not use it for another purpose.
4. In your code you have "goto Main" but there is no Main. I think you meant "goto ON", but since you can not use "ON", just change ON to Main.
5. For the FOR loop you have, you will not have 8-bits on PORTA. Thus you need to have a look at there. Check Bruce's example on the link above.
Check the datasheet of the PIC you will use. Check which pin can be used as an input-only and/or output-only etc.
Also, check how many pins you have on each port.
----------
------------
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
Bookmarks