PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler Code Pic 16F88



Pic-Electron
20.01.2008, 13:48
Hallo Leute, wer kennt sich gut mit Assembler Codes aus.
Es soll nämlich ein Assembler Code erweitert werden, dass für eine ansteuerung eines Tid ist.

Das ganze funktioniert so weit ganz gut.
Es sollen aber noch weitere Texte erscheinen die bestimmte Zustände anzeigen sollen. Es wird ein Pic16F88 verwendet.
Der Pic16F88 hat noch folgende Pins frei:
1 RA2, 4 MCLR, 8 RB2, 15 OSC2, 16 OSC1, 17 RA0, 18 RA1.

Es sollen noch weitere Zustände angezeigt werden. Wenn zB. der Kofferraum geöffnet ist, soll K.R. AUF wenn es wieder geschlossen wird K.R. ZU auf dem Display erscheinen.

Wer kann den Assembler Code erweitern, so dass zB. noch weitere Zustände angezeigt werden können.

PicNick
20.01.2008, 17:57
In der Hauptschleife wird dzt. permanent "Call SpeedControl" gerufen. an dieser Stelle kannst du z.B. irgendwelche Pins abfragen, wo z.B. der Kofferaumsensor angeschlossen ist.
Ist der offen, zeigst du statt der Speed eben einen anderen Text.
In der Routine "Speedcontrol" siehst du ja recht gut, wie sowas geht.
Einfachn den Text in die CHAR1-Char9 schreiben, und die Zeigefunktion aufrufen.

Pic-Electron
20.01.2008, 23:49
Kann das jemand bitte umschreiben.
Kenne mich mit dem Assembler coden noch nicht so ganz gut aus.
Vielen Dank.

PicNick
21.01.2008, 10:33
Angenommen, auf RA2 ist der Kofferraumschalter angeschlossen.
d.h. RA2 hängt mit ~10k auf +5V. Solange der Kofferraum zu ist, verbindet der Schalter RA2 mit Masse (GND). --> RA2 ist also normalerweise = 0.
Geht der Kofferraum auf, Schalter offen -> RA2 = 1

Erstmal PORTB RA2 als Eingang def.


; Port B - einstellen der Richtung und Art der Pins

banksel PORTB ;Bank0
clrf PORTB ;PortB "bereinigen"

;================================================ PicNick ===========================
banksel TRISB ;Bank1
movlw B'00000100' ; Port B.2 = RA2 = Eingang Kofferaum-Sensor
movwf TRISB ;Port schreiben
;================================================= ===================================



In der Hauptschleife: Solange der Kofferaum RA2 = 0, ist der Kofferraum zu, also wird normal die Geschwindigkeit angezeigt.
Ist RA = 1 , d.h der Schalter bzw. der Kofferraum ist offen, wird statt der Geschwindigkeit der Text "KR.Offen!" angezeigt. (Die Geschwindigkeit ist zu dem Zeitpunkt ja wohl hoffentlich eh NULL)



;Begin der Hauptschleife
Gesch
;================================================ PicNick ===========================
btfssc PORTB, 2 ; Test Kofferraum-Bit auf = 0 = überspringen
goto KofferAuf ; KofferraumBit=1 --> Offen
;================================================= ===================================
call showSpeed ;Unterroutine zur Geschwindigkeitsmessung aufrufen und Geschwindigkeit ausgeben
call delay_0.2_sec ;kleine Pause für das "Auge"
goto Gesch ; Wieder von Vorne

;================================================ PicNick ===========================
KofferAuf
movlw 'K' ; "KR.Offen!"
movwf CHAR1
movlw 'R' ; "R"
movwf CHAR2
movlw '.' ; "."
movwf CHAR3
movlw 'O' ; "O"
movwf CHAR4
movlw 'f' ; "f"
movwf CHAR5
movlw 'f' ; "f"
movwf CHAR6
movlw 'e' ; "e"
movwf CHAR7
movlw 'n' ; "n"
movwf CHAR8
movlw '!' ; "!"
movwf CHAR9
movlw ' ' ; " "
movwf CHAR10
call sendTIDText ; display on TID
goto Gesch ; Wieder von Vorne
;================================================= ===================================


Die Anzeige "KR.Zu !" würd' ich garnicht machen, das ist ja der Normalfall.


Versuch's mal.

Da Du offenbar noch recht am Anfang stehst, würd ich Dir aber empfehlen, erstmal die Lernbeispiele auf www.sprut.de durchzuarbeiten. Es ist besser, von Grund auf lernen.

PicNick
13.02.2008, 18:45
So, ein einfacher Versuch:

Ist der Kofferraum offen, geht's nach "Kofferaum auf"
Solange der aber offen ist, kommt die Routine aber NICHT zurück,
sondern erst, wenn zu ist, wird "KR.ZU" gezeigt (2 Sekunden)
dann wieder auf die Hauptschleife

Beruht darauf, dass ja eh' keine Geschwindigkeit zu zeigen ist, solange offen ist. Nicht elegant, sollte aber gehen



;================================================ PicNick ===========================
KofferAuf
movlw 'K' ; "KR.Offen!"
movwf CHAR1
movlw 'R' ; "R"
movwf CHAR2
movlw '.' ; "."
movwf CHAR3
movlw 'O' ; "O"
movwf CHAR4
movlw 'f' ; "f"
movwf CHAR5
movlw 'f' ; "f"
movwf CHAR6
movlw 'e' ; "e"
movwf CHAR7
movlw 'n' ; "n"
movwf CHAR8
movlw '!' ; "!"
movwf CHAR9
movlw ' ' ; " "
movwf CHAR10
call sendTIDText ; display on TID

btfssc PORTB, 2 ; Test Kofferraum-Bit auf = 0 = überspringen
goto KofferAuf ; immer wieder, solange er offen ist

KofferZu ; jetzt isser zu
movlw 'K' ; "KR.Zu!"
movwf CHAR1
movlw 'R' ; "R"
movwf CHAR2
movlw '.' ; "."
movwf CHAR3
movlw 'Z' ; "O"
movwf CHAR4
movlw 'u' ; "u"
movwf CHAR5
movlw '!' ; "!"
movwf CHAR6
movlw ' ' ; " "
movwf CHAR7
movwf CHAR8
movwf CHAR9
movwf CHAR10
call sendTIDText ; display on TID

call delay_1_sec ; eine Sekunde warten

call delay_1_sec ; noch eine Sekunde ???

goto Gesch ; Wieder von Vorne
;================================================= ===================================


Alles andere bleibt wie gehabt