Thanks for replies, what I wonder is I don't know how to read portb; Can you just write down a sample code _?
Thanks in advance,
Saolasın Hocam :P
Thanks for replies, what I wonder is I don't know how to read portb; Can you just write down a sample code _?
Thanks in advance,
Saolasın Hocam :P
Like what?
Example:
IF PORTB.6 = 0 then .....
or another one
WHILE PORTB.3 = 0
..
....
WEND
or
IF PORTB.2 = 1 AND PORTB.5 = 0 THEN .....
Etc..
These are some kind of readinds.
Make sure you make them input pin.
----------------
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
So sorry but can you correct my code , I tried everything as in your sample code for PORTB.6 ; But can't get it out.
By the way my msn is [email protected]. (Olmadı bana burdan yardımcı olursan çok sevinirim, altı üstü bi interruptan çıkamadık)
Here is my new code below ;
device 16f84a
ON_INTERRUPT goto flash
intcon = %10001000
input portb.6 ' Bu pinleri sıfırladıktan sonra alıcı olarak ayarlamalısın
loop:
high porta
delayms 200
low porta
delayms 200
goto loop
disable
flash:
WHILE PORTb.6 = 1: WEND
intcon.0 = 0
delayms 20
low porta
CONTEXT RESTORE
end
Couple of things to remember.
1. It is not a good idea to post an e-mail on the forum. You will get thousands of junks to your e-mail. I suggest that you remove it right away and PM to members instead.
2. You are not using PBP, but this is a PBP forum
3. Lets keep this issue on this forum, so that it can be some help to some other members having similar issue.
-----------------------------
Let me try to start by changing the code to PBP first.
In your schematic, I would use Interrupt on RB0 pin, instead of RB6 pin. May be you should change that first.
Then, assuming you are now using RB0/Int, we set Intcon Bit 4: RB0/INT External Interrupt Enable bit. Thus, we end up with INTCON = %10010000
Now the code should look like below but remember it is with PBP statements. You can get around it.
Code:TRISA = %00000000 'All output. TRISB = %00000001 'RB0 is input, rest is output. INTCON = %10010000 'Enable global (Bit7) interrupt, enable RB0/Int (Bit4) ON INTERRUPT GOTO FLASH loop: PORTA = 255 PAUSE 200 PORTA = 0 PAUSE 200 GOTO loop disable FLASH: PORTA = 0 INTCON.0 = 0 RESUME ENABLE END
Also, why do you have to use interrupt?
-------------------
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
Add this line before your main loop:
RBIF var INTCON.0
Add these two lines to your flash subroutine:
@ MOVE?BA PORTB 'Read PORTB by placing it WREG
RBIF = 0 'Clear the interrupt flag
Also, read the pic datasheet on interrupts and under the I/O Ports section. You should find were it mentions both of items added to the ISR.
Steve
RETLW PORTB.6 when I use this line in top flash block, it doesn't do anything and continue to it's job
As Sayzer asked,
Using interrupts may just be overcomplicating the application. Could you just pool the I/O line in question in your main loop?Originally Posted by sayzer
Steve
As Steve repeated,
May be, a code like the one below could do the job for you, may be.
Not a real drop-in interrupt compatible code but may work in some cases.Code:TRISA = %00000000 'All output. TRISB = %01000000 'RB6 is input, rest is output. IN_PIN VAR PORTB.6 Loop: WHILE IN_PIN PORTA = 255 PAUSE 200 PORTA = 0 PAUSE 200 WEND PORTA = 0 GOTO Loop END
Try...
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
Thanks alot for your helps and replies;
It finally works with this code below , but to return to main progress takes approximetly 1:20 minute. I think there might be problem with my schematic; If ISIS is that good, may be simulation thinks about small arcs that is created by button .Which gives a unexpected voltage levels for a short time to the PORTB.6.So PIC interrupts it's self for more then one time.The reason that took so long, might be that. Is this the problem or is it still in software _?
device 16f84a
ON_INTERRUPT goto flash
intcon = %10001000
input portb.6
loop:
high porta
delayms 200
low porta
delayms 200
goto loop
disable
flash:
delayms 1000
MOVF PORTB, W
low porta
intcon.0 = 0
CONTEXT RESTORE
end
Bookmarks