PDA

View Full Version : blinking LED



kindows
- 14th July 2009, 13:32
Hi..
By using PICBASIC PRO and PIC16F84a how I can make this:
Port a.1 high for 6 sec & in the same time porta.0 blinking ???

Melanie
- 14th July 2009, 16:10
CounterA var Byte

LEDA var PortA.0
LEDB var PortA.1

Low LEDA
Low LEDB

Start:
High LEDB ' PortA.1 goes High
For CounterA=1 to 6 ' For Six seconds
Gosub BlinkyOne ' Whilst Blinky blinks
Next CounterA
Low LEDB ' PortA.1 then goes LOW
EndLoop: ' and Blinky continues forever
Gosub BlinkyOne
Goto EndLoop ' until you get bored and switch off

'
' Subroutine Blinks LEDA across 1 Second
' --------------------------------------
BlinkyOne:
High LEDA
Pause 500
Low LEDA
Pause 500
Return


C'mon Guys... lets have another five different ways of doing this... then all the students who are using this forum for answers to their homework assignments can each have a different method and not be accused of copying...

Jerson
- 14th July 2009, 18:11
CounterA var Byte

LEDA var PortA.0
LEDB var PortA.1

Low LEDA
Low LEDB

Start:
High LEDB ' PortA.1 goes High
For CounterA=1 to 6*2 ' For Six*2 half seconds
Gosub BlinkyHalf ' Whilst Blinky blinks
Next CounterA
Low LEDB ' PortA.1 then goes LOW
pause 10000 ' a 10 second gap and then go blinkety blink
EndLoop:
Gosub BlinkyHalf
Goto EndLoop ' until you get bored and switch off

'
' Subroutine Blinks LEDA across 1 Second
' --------------------------------------
BlinkyHalf:
Toggle LEDA
Pause 500
Return


Melanie, I hope you don't mind me using my brain to mod your code. However, as you have it, it is a variation of blinky. More to come ??

:D

peterdeco1
- 14th July 2009, 19:45
Blinkcounter var byte
clear

start:
High porta.1 'high port
high porta.0 'on led
pause 500
low porta.0 'off led
pause 500
let blinkcounter = (blinkcounter + 1)
if blinkcounter < 6 then start
low porta.1
low porta.0
pause 1000
goto start 'keep it going

Archangel
- 14th July 2009, 21:32
untested . . .


PortA = %00000000
TrisA = %00000000
i var byte
Start:
PortA.1 = 1
while PortA.1 = 1
For i = 0 to 5
portA.0 = 1
pause 500
PortA.0 = 0
pause 500
next i
portA.1 = 0
wend

end

mackrackit
- 15th July 2009, 00:55
I know, wrong chip and wrong pins... it is what I have on the bench...


'18F6680'07/14/09'BLINKY

DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_ON_2H &amp; _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
CNT VAR BYTE
FIRST6:HIGH PORTB.2 'SLOW
FOR CNT = 1 TO 60:TOGGLE PORTG.4:PAUSE 100
NEXT CNT:LOW PORTB.2:PAUSE 500:GOTO SECOND6

SECOND6:HIGH PORTB.2 'FAST BLINK--REALLY FAST
PWM PORTG.4,5,6000
LOW PORTB.2:PAUSE 500:GOTO [color=#0000FF][b]FIRST6

aratti
- 15th July 2009, 01:50
PortA = 0
TrisA = 0

Seconds var Byte

LED_1 var PortA.0
LED_2 var PortA.1

Loop:
'Your gosub comand goes here
Goto Loop


Blink:
High Led_1
Seconds = 0
While Seconds <>5
High Led_2
pause 500
Low Led_2
pause 500
Seconds = Seconds + 1
wend
Low Led_1
Return

End


Here my contribution.

Al.

dragons_fire
- 15th July 2009, 02:25
how about the easiest one out there:




Start:

High Porta.1

High porta.0
Pause 500
Low Porta.0
Pause 500 '1 second

High porta.0
Pause 500
Low Porta.0
Pause 500 '2 seconds

High porta.0
Pause 500
Low Porta.0
Pause 500 '3 seconds

High porta.0
Pause 500
Low Porta.0
Pause 500 '4 seconds

High porta.0
Pause 500
Low Porta.0
Pause 500 '5 seconds

High porta.0
Pause 500
Low Porta.0
Pause 500 '6 seconds

Low Porta.1
pause 1000

goto start


it might not be the smallest in code size, but it will work and its really easy to understand!!!

sayzer
- 15th July 2009, 07:15
Here is mine.

No PAUSE used !


@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRT_OFF, MCLR_OFF,PROTECT_ON,CPD_ON ,BOD_OFF,LVP_OFF

TRISA=0
TRISB=0
CMCON=7 ' PortA=digital I/O
PAUSE 1
VRCON=0
PAUSE 1

PORTA=0
PORTB=0

T1CON=%00110001 ' 0.524ms
TMR1IF VAR PIR1.0 ' Overflow bit of Timer1.

Output1 VAR PORTA.1 ' Blink 6secs.
Output2 VAR PORTA.0 ' Blink 0.5secs.

PreLoad VAR WORD
TimeCount VAR BYTE
TimetoBlink VAR BYTE

PreLoad=3036 ' to get 500ms.
TMR1L=PreLoad.LowByte
TMR1H=PreLoad.HighByte

TimeCount=0
TimetoBlink=12 '12=6secs.

PAUSE 50 ' OSC to Settle.


Start:


IF TMR1IF THEN Blink

GOTO Start



Blink: 'Each int is 0.500 sec.
TMR1L=PreLoad.LowByte ' Load the timer with preload value.
TMR1H=PreLoad.HighByte
TimeCount=TimeCount + 1 ' Count interrupts.
Output2=Output2 ^ 1 ' Toggle fast blinking output.

IF TimeCount=TimetoBlink THEN '6Secs ON, 6secs OFF.
TimeCount=0
Output1=Output1 ^ 1
ENDIF

TMR1IF=0 ' Clear TMR1 int. flag.

GOTO Start

END

kindows
- 15th July 2009, 08:10
untested . . .


PortA = %00000000
TrisA = %00000000
i var byte
Start:
PortA.1 = 1
while PortA.1 = 1
For i = 0 to 5
portA.0 = 1
pause 500
PortA.0 = 0
pause 500
next i
portA.1 = 0
wend

end



Hi..
Thanks for all
I test your code and its working fine but because I am new with picbasic what dose this meen
PortA = %00000000
TrisA = %00000000
When I remove this tow lines the code not working,
Best regard

Jerson
- 15th July 2009, 09:48
PORTA = %00000000 read this as PORTA gets bits 00000000
This means, write 0 to each bit position of PORTA. Each 0 represents the bits in PORTA from bit 7 to bit 0. You could also write it as
PORTA = $00 read this as PortA gets Hex 0

TRISA = %00000000
This is the tristate register which tells your PIC to allow the values of PORTA to 'drive' the external world circuits. Same as above for the bit position part. If you set any 1 position to 1, that position will only be able to read (INPUT) from the external circuit.

Clear now? Don't hesitate to ask. See how many responses you got.

charudatt
- 31st July 2009, 15:06
I am looking for a way to change the rate of blink (Blinking rate) using Interrupt. I would read a POT using ADC and then change the blink rate, Any idea how I could impliment it in Sayzer's code.

Thanks.

p.s. maybe using TMR0

Melanie
- 31st July 2009, 15:34
A question for you first... why do you specify using INTERRUPT?

charudatt
- 31st July 2009, 15:57
Cause, I want to use it in a code where I am doing some other things like reading ADC channel , and monitoring inputs , while the led is blinking.

Thanks

mackrackit
- 31st July 2009, 16:08
You may want to look at this. Post #2 might be of interest.
http://www.picbasic.co.uk/forum/showthread.php?t=3251