Hej! Sitter i skolan och försöker konstruera ett alarm, men jag tycks inte verka lyckas få till det här med utgångar och ingångar till processorn, när det gäller programmeringen.
Jag använder mig av en 16F84A-processor.
Grejen är den att jag använder PORTA som utgång till alarmen, och PORTB som ingång.
Jag börjar med att skriva raden:
TRISA = %11111111
För att sätta PORTA till en utgångsport.
Sen skriver jag:
__________________________________
Loop:
IF PORTB.0 = 0 THEN GOSUB PANIC
IF PORTB.1 = 0 THEN GOSUB INSTANT
IF PORTB.2 = 0 THEN GOSUB DELAY
IF PORTB.0 = 1 THEN GOSUB NOPANIC
IF PORTB.1 = 1 THEN GOSUB NOINSTANT
IF PORTB.2 = 1 THEN GOSUB NODELAY
goto Loop
___________________________________
Detta för att när en givare ger 0 på nån av de tre olika ingångarna så ska alarmet gå igång, och när man sedan stänger av alarmet, genom att sätta en 1a på ingången så ska alarmet sluta.
Såhär ser det ut för de olika SUB'sen.
_______________________________________
PANIC:
PORTA.0 HIGH
PORTA.1 HIGH
RETURN
INSTANT:
PORTA.0 HIGH
PORTA.1 HIGH
RETURN
DELAY:
PORTA.0 HIGH
PAUSE 30000
PORTA.1 HIGH
RETURN
NOPANIC:
PORTA.0 LOW
PORTA.1 LOW
RETURN
NOINSTANT:
PORTA.0 LOW
PORTA.1 LOW
RETURN
NODELAY:
PORTA.0 LOW
PORTA.1 LOW
RETURN
______________________
PORTA.0 Visar att alarmet är igång med hjälpa av en diod.
PORTA.1 Sätter igång en siren. Fast egentligen bara en annan diod enligt min krets, men sak samma.
Problemet med detta program är ett kretsen blir kortsluten när jag ger den ström. Jag har inte den minsta aning om varför. Dessutom så försvinner det problemet ifall jag tar bort det som har med NOPANIC, NODELAY och NOINSTANT.
Uppkopplingen av kretsen är det inget fel på. Det är som det ska vara, så det måste vara programmet det är fel på.
Har ni nån aning om vad felet kan vara?
Tack på förhand. Ursäktar ifall jag skriver rörigt eller otydligt. Fråga om det är nåt annat ni behöver veta.
/Marcus
Jag använder mig av en 16F84A-processor.
Grejen är den att jag använder PORTA som utgång till alarmen, och PORTB som ingång.
Jag börjar med att skriva raden:
TRISA = %11111111
För att sätta PORTA till en utgångsport.
Sen skriver jag:
__________________________________
Loop:
IF PORTB.0 = 0 THEN GOSUB PANIC
IF PORTB.1 = 0 THEN GOSUB INSTANT
IF PORTB.2 = 0 THEN GOSUB DELAY
IF PORTB.0 = 1 THEN GOSUB NOPANIC
IF PORTB.1 = 1 THEN GOSUB NOINSTANT
IF PORTB.2 = 1 THEN GOSUB NODELAY
goto Loop
___________________________________
Detta för att när en givare ger 0 på nån av de tre olika ingångarna så ska alarmet gå igång, och när man sedan stänger av alarmet, genom att sätta en 1a på ingången så ska alarmet sluta.
Såhär ser det ut för de olika SUB'sen.
_______________________________________
PANIC:
PORTA.0 HIGH
PORTA.1 HIGH
RETURN
INSTANT:
PORTA.0 HIGH
PORTA.1 HIGH
RETURN
DELAY:
PORTA.0 HIGH
PAUSE 30000
PORTA.1 HIGH
RETURN
NOPANIC:
PORTA.0 LOW
PORTA.1 LOW
RETURN
NOINSTANT:
PORTA.0 LOW
PORTA.1 LOW
RETURN
NODELAY:
PORTA.0 LOW
PORTA.1 LOW
RETURN
______________________
PORTA.0 Visar att alarmet är igång med hjälpa av en diod.
PORTA.1 Sätter igång en siren. Fast egentligen bara en annan diod enligt min krets, men sak samma.
Problemet med detta program är ett kretsen blir kortsluten när jag ger den ström. Jag har inte den minsta aning om varför. Dessutom så försvinner det problemet ifall jag tar bort det som har med NOPANIC, NODELAY och NOINSTANT.
Uppkopplingen av kretsen är det inget fel på. Det är som det ska vara, så det måste vara programmet det är fel på.
Har ni nån aning om vad felet kan vara?
Tack på förhand. Ursäktar ifall jag skriver rörigt eller otydligt. Fråga om det är nåt annat ni behöver veta.
/Marcus