WinFuture-Forum.de: Assembler Programierung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Assembler Programierung


#1 Mitglied ist offline   BaSeL 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 19. November 05
  • Reputation: 0
  • Wohnort:Lage (Lippe)

geschrieben 28. November 2005 - 18:39

Hallo ich habe hier ein Programm



; Programmbeschreibung: Der mobile Roboter HanddyBug kann ueber den Start-
; Button aktiviert werden. Er bewegt sich dann solange
; vorwaerts, bis er gegen ein Hindernis stoeßt. Dann
; bleibt es kurz stehen und bewegt sich dann für 2 sec.
; rueckwaerts und bleibt stehen und wartet darauf, dass
; wieder start gedrueckt wird.



; Symbolische Konstanten festlegen

HC11_INT_RAM_START = $0000 ; 256 Bytes internes RAM ($00-$FF)
HB_EXT_RAM_START = $8000 ; 32 KByte externes RAM ($8000-&FFFF)
RESET_VECTOR = $BFFE ; Mit NoICE-Monitor $BC00
DI_LATCH = $7000 ; START,STOP,DI15,DI14,DI13,DI12,DI11,DI10
START_BTN_MASK = $80 ; Bedingung zum Starten
DI_15 = $20 ; Sensor
DI_14 = $10 ; Sensor
MOTOR_LATCH = $7000 ; M3_E,M2_E,M1_E,M0_E,M3_D,M2_D,M1_D,M0_D
ALL_OFF = $00 ; Alle Motoren aus
MOTOREN_ON_VOR = $30 ; Mo + M1 ein
MOTOREN_ON_RUECK = $33 ; M0 + M1 Rueckwaerts ein


.area CODE( abs ) ; Absolutes Code-Segment
.org HB_EXT_RAM_START ; beginnt bei Adresse $8000 (RAM-Start)

start: ldaa #ALL_OFF
staa MOTOR_LATCH ; Alle Motoren aus
ldaa DI_LATCH ; Wurde der Start-Button betaetigt?
anda #START_BTN_MASK ; Bit 7 maskieren
bne start ; Wenn Nein, dann wieder zu start

vor: ldaa #MOTOREN_ON_VOR
staa MOTOR_LATCH ; Motor 0 und 1 ein und vorwaerts fahren

links: ldaa DI_LATCH ; Wurde der Sonsor links betaetigt?
anda #DI_15 ; Bit 5 maskieren
beq stop ; wenn Ja, dann zum Rueckwaerts fahren

rechts: ldaa DI_LATCH ; Wurde der Sonsor rechts betaetigt?
anda #DI_14 ; Bit 4 maskieren
beq stop ; wenn Ja, dann zum Rueckwaerts fahren
jmp links ; Sensoren weiter Testen

stop: ldaa #ALL_OFF
staa MOTOR_LATCH ; Alle Motoren aus
jmp rueck ; springe zum Rueckwaerts fahren

rueck: ldaa #MOTOREN_ON_RUECK
staa MOTOR_LATCH ; Motor 0 und 1 ein und rueckwaerts fahren
jsr verz ; ablaufen der 2sec.
jmp start ; Anhalten

verz: ldab #111110 ; 2sec.
vz nop ; No Operation (Zeitverzoegerung)
nop ; No Operation (Zeitverzoegerung)
deca ; A runterzählen bis 0
bne vz ; solange A != 0, weiterer Durchlauf
rts ; Verzögerung erreicht (A = 0)

end


.org RESET_VECTOR ; Der Reset-Vektor liegt beim HanfyBoard
.word start ; bei $BC00, hier wird die Adresse des
; Programmstarts ($8000) gespeichert

Ich wollte fragen ob das so geht,
und ob es noch andere möglich keiten gibt MC-Systemen einen Timer ein zu bauen?

danke schon mal

Dieser Beitrag wurde von BaSeL bearbeitet: 28. November 2005 - 18:40

0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0