Gå til innhold

Assembly: Få STK500 å lyse når man trykker på knappene


Anbefalte innlegg

Videoannonse
Annonse
Jeg sitter her med AVR studio og en STK500 og lurte på om noen kan hjelpe meg å lage et program som får den til å lyse når jeg trykker på knappene. Slik at når jeg trykker på SW0 så lyser LED0 osv :D Ville ha vært til stor hjelp siden jeg driver å jobber litt med forståelsen av STKen og sitter litt fast.

7515298[/snapback]

 

Hei!

 

Det kunne vært nyttig med litt mer informasjon fra deg. Hvilken mikrocontroller du bruker og om du skriver mikroprogrammet ditt i C eller assembly er en bra start.

 

Har ikke stk500 hjemme, men har brukt det en gang for en stund siden. Her er litt hjelp ut ifra det jeg kan huske:

 

- Knapper og LEDs er i utgangspunktet ikke koblet til mikrocontrolleren.

- For å koble til må du bruke ledningene som følger med STK

- Se side 11 i userguide for stk500

 

Forutsatt at LEDs og knapper er koblet riktig til portene på mikrocontrolleren må programmet ditt gjøre følgende:

 

1. Definere pinnen du brukte til knappen som inngang (pinnen kan da avleses)

2. Definere pinnen som er koblet til LED'en som utgang (pinnen kan da styres av/på)

3. Programmet ditt må så starte en "uendelig" sløyfe som sjekker om knappen blir trykket

4. Når knappen blir trykket så skrur du LED på hvis den var av og av hvis den var på (f.eks)

 

NB! Signalet fra knappen kan være litt "stygt", dvs. hvis du trykker på knappen så vil signalet utløse flere endringer på LED før signalet har stabilisert seg (veldig fort)

 

Dette er bare en grov skisse. Skriv hvilken mikrocontroller og hvilket språk du bruker, så kan jeg forklare litt nærmere hvis noe var uklart.

 

Hilsen Øyvind

Lenke til kommentar

Aaaaa, blir så sprø av dette.

 

Jeg programmerer i AVR Studio, i assembly. Mikrokontrolleren er ATmega 128.

 

.nolist
.include "m128def.inc"
.list


knapp:	ldi r16, $00
 in r16, ddra
 breq knapp


lys:	ldi r17, $00
 mov r17, r16
 out ddrb, r17
 rjmp knapp

 

Det er sikkert riv ruskende galt, men jeg kan vel paste åssen jeg tenker.... Og for de som ikke skjønner åssen jeg tenker så kommer det en liten forklaring :D

 

knapp: ønsket er å registrere hvilken knapp som blir trykket. Jeg har en anelse av at denne må loopes til den blir trykket på.

 

lys: knappens verdi skal kjøres ut på leds som jeg har kobla til ddrb, slik at når jeg trykker på SW1 så lyser LED1

Lenke til kommentar

Eureka! Nå fikk jeg det til! For et rot jeg starta med, det jeg ikke tenkte på var at jeg måtte bruke pina!

 

.nolist
.include "m128def.inc"
.list

prog:  in r16, pina
 	out ddrb, r16
 	rjmp prog

 

Dette lille programmet får STKen til å slokke lampa til den tilsvarende bryteren du trykker ned. Ble litt motsatt av hva jeg hadde tenkt, siden jeg hadde tenkt å tenne lampa(alle er slukt) tilsvarende bryteren jeg trykket på. Men nå ble det motsatt.

Lenke til kommentar

Nå fikk jeg det til! JEJ

 

.nolist
.include "m128def.inc"
.list

init:         ldi r16, 0x00
 out ddra, r16
 ldi r16, 0xff
 out ddrb, r16
 clr r16

prog:      in r16, pina
 out portb, r16
 rjmp prog

 

Etter å ha tenkt meg om satte jeg hele port a på send(0x00) og hele part b på motta(0xff), så da når jeg trykket på SW1 sender jo denne 000001 til port b med sine respektive lamper :D Pretty fancy :D

Lenke til kommentar
Nå fikk jeg det til! JEJ

 

.nolist
.include "m128def.inc"
.list

init:         ldi r16, 0x00
 out ddra, r16
 ldi r16, 0xff
 out ddrb, r16
 clr r16

prog:      in r16, pina
 out portb, r16
 rjmp prog

 

Etter å ha tenkt meg om satte jeg hele port a på send(0x00) og hele part b på motta(0xff), så da når jeg trykket på SW1 sender jo denne 000001 til port b med sine respektive lamper :D Pretty fancy :D

7521563[/snapback]

 

 

Gratulerer! Ser ut som vi har nok en AVR-Frelst :D

 

Gå ut og spre ordet, broder :thumbup:

 

Hvis du vil ha et forslag til neste skritt:

Finn ut hvordan PWM-modulen virker, så kan du dimme lysdiodene med knappene.

 

Hilsen Øyvind

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...