2006-04-12, 17:31
  #1
Medlem
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
Citera
2006-04-12, 23:16
  #2
Medlem
Jag orkar inte sätta mig in i det mera för tillfället än att konstatera att du lyckats klanta dig med TRISA-raden. 11111111 definerar samtliga som högimpedans (INGÅNGAR), inte utgångar. Hoppas det hjälper något på vägen, men det ska ju inte göra så att kretsen blir kortsluten...

Eller jo, nu slog det mig att det ju faktiskt kan vara så att eftersom du kanske har vänt på ingångar och utgångar så kan det vara så att en strömbrytare är nertryckt och det rusar ström från picen till jord eller matning. Därav "kortslutningen".
Citera
2006-04-13, 00:22
  #3
Medlem
Citat:
Ursprungligen postat av Loser Gone Wild
Jag orkar inte sätta mig in i det mera för tillfället än att konstatera att du lyckats klanta dig med TRISA-raden. 11111111 definerar samtliga som högimpedans (INGÅNGAR), inte utgångar. Hoppas det hjälper något på vägen, men det ska ju inte göra så att kretsen blir kortsluten...

Eller jo, nu slog det mig att det ju faktiskt kan vara så att eftersom du kanske har vänt på ingångar och utgångar så kan det vara så att en strömbrytare är nertryckt och det rusar ström från picen till jord eller matning. Därav "kortslutningen".


Är det så pass? Mja, jag kan tyvärr inte säga att det var någon mindre än läraren själv som sa åt oss att ha %11111111. Jag borde dock av erfarenhet av den läraren förstått att det var tvärtom. Tack för hjälpen, den är uppskattad! Tyvärr så blir det ju påsklov nu, och jag kommer inte kunna testa kretsen förren om två veckor. Nåja.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in