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 ???
Printable View
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 ???
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...Code: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
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 ??Code: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
:D
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
untested . . .
Code: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
I know, wrong chip and wrong pins... it is what I have on the bench...
Code:'18F6680'07/14/09'BLINKY
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_ON_2H & _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
Here my contribution.Code:
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
Al.
how about the easiest one out there:
it might not be the smallest in code size, but it will work and its really easy to understand!!!Code:
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
Here is mine.
No PAUSE used !
Code:@ 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
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.
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
A question for you first... why do you specify using INTERRUPT?
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
You may want to look at this. Post #2 might be of interest.
http://www.picbasic.co.uk/forum/showthread.php?t=3251