-         

Ergebnis 1 bis 5 von 5

Thema: Assembler Code Pic 16F88

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.07.2007
    Beiträge
    11

    Assembler Code Pic 16F88

    Anzeige

    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.
    Angehängte Dateien Angehängte Dateien

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.07.2007
    Beiträge
    11
    Kann das jemand bitte umschreiben.
    Kenne mich mit dem Assembler coden noch nicht so ganz gut aus.
    Vielen Dank.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.
    Code:
    ; 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)

    Code:
    ;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.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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

    Code:
    ;================================================ 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
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •