PIC 16F84A Problem mit GOTO-Befehl.........

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 12 2025  20:24:01      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PIC 16F84A Problem mit GOTO-Befehl.........
Suche nach: pic (2060)

    







BID = 125036

Kairan

Gerade angekommen


Beiträge: 1
 

  


Hallo!

Ich benutze einen PIC 16F84A mit dem PIC 16F84 ELV Emulator Programmer. Dazu die Testplatiene mit den 8 LEDs, die aufleuchten sollen, wenn das zugehörige Bit von PORTB auf 0 liegt.
Das Programm soll erst jede 2. LED ansteuern, dann warten und dann die anderen ansteuern. Da das Umschalten nicht geklappt hat habe ich 2 Befehlszeilen eingefügt, die die beiden äußeren LEDs ansteuern und diese Zeilen durch das Programm geschoben. damit habe ich die Zeile mit dem Fehler identifiziert. Das Problem liegt offenbar darin, das der goto-Befehl nicht ausgeführt wird.

Da ich den Quellcode leider nicht von meinem Programmierrechner runterbekomme muß ich ihn abtippen und hier reinschreiben. Tut mir leid, aber anders geht nicht........



LIST p=16F84A

#include <p16f84a.inc>

UNI1 equ 0Ch
UNI2 equ 0Dh
UNI3 equ 0Eh ;nicht mehr benötigt, aber noch nicht gelöscht
org 000h

clrw
bsf 03h,5 ;Bank1
movwf 01h ;Option reg löschen
bsf 01h,5 ;Takt extern
movwf 06h ;PORTB als Ausgänge
bcf 03h,5 ; Bank0
movwf 06h ;PORTB = 0

loop movlw 0AAh
movwf 06h ;PORTB = 10101010
movlw 0EFh
movwf 0Eh ;UNI3
movwf 0Ch ;UNI1

wart movwf 0Dh ;UNI2
bsf 06h,0 ;Laufkontrolle (rechts 2 Lichter aus)

warte decfsz 0Dh,1
goto warte ;Hier liegt das Problem(goto wird nicht gemacht)
bcf 06h,7 ;Laufkontrolle (links 2 Lichter an)
decfsz 0Ch,1
goto wart

movlw 055h
movwf 06h ; PORTB = 01010101
movlw 0FFh
movwf 0Eh ; UNI3
movwf 0Ch ; UNI1

warte3 movwf 0Dh ; UNI2

warte4 decfsz 0Dh,1
goto warte4
decfsz 0Ch,1
goto warte3

goto loop

END

BID = 125107

Her Masters Voice

Inventar


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 5312
Wohnort: irgendwo südlich von Berlin

 

  

LIST p=16F84A

#include <p16f84a.inc>

UNI1 equ 0Ch
UNI2 equ 0Dh
UNI3 equ 0Eh ;nicht mehr benötigt, aber noch nicht gelöscht
org 000h

clrw
bsf 03h,5 ;Bank1
movwf 01h ;Option reg löschen
bsf 01h,5 ;Takt extern
movwf 06h ;PORTB als Ausgänge
bcf 03h,5 ; Bank0
movwf 06h ;PORTB = 0

loop movlw 0AAh
movwf 06h ;PORTB = 10101010
movlw 0EFh
movwf 0Eh ;UNI3
movwf 0Ch ;UNI1

wart movwf 0Dh ;UNI2 <--- Was steht an Speicherzelle 0D?
bsf 06h,0 ;Laufkontrolle (rechts 2 Lichter aus)

warte decfsz 0Dh,1 <--- Und jetzt noch was von der undefinierten Speicherzelle abziehen? Da würd ich auch den folgenden Befehl ignorieren
goto warte ;Hier liegt das Problem(goto wird nicht gemacht)
bcf 06h,7 ;Laufkontrolle (links 2 Lichter an)
decfsz 0Ch,1
goto wart


_________________
Tschüüüüüüüs

Her Masters Voice
aka
Frank

***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************

BID = 125201

SIGINT

Stammposter



Beiträge: 381
Wohnort: Mönchengladbach

Hallo Kairan,
wenn du schon eine Include-Datei nutzt,dann nutze doch die Möglichkeit die symbolischen Namen der Register anzugeben:



Code :


clrw
bsf 03h,5 ;Bank1
movwf 01h ;Option reg löschen
bsf 01h,5 ;Takt extern
movwf 06h ;PORTB als Ausgänge
bcf 03h,5 ; Bank0
movwf 06h ;PORTB = 0

kann wie folgt besser lesen:

BSF STATUS,RP0
CLRF OPTION_REG
BSF OPTION_REG,T0CS
CLRF TRISB
BCF STATUS,RP0
CLRF PORTB



Gruß,
SIGINT

BID = 125934

noch_frei

Gerade angekommen


Beiträge: 2

@Her Masters Voice

Zitat :
Was steht an Speicherzelle 0D?

0xEF, da es der letzte Wert ist, der in W geladen worden ist. Ich sehe keinen Befehl, der diesen Wert verändert.

@Kairan
Da Du die Frage auch hier gestellt hast, findest Du dort auch meine Vermutung zu Deinem Problem.


Viele Grüße
Bernd

[ Diese Nachricht wurde geändert von: noch_frei am 10 Nov 2004  5:42 ]


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 7 Beiträge verfasst
© x sparkkelsputz        Besucher : 187994003   Heute : 13233    Gestern : 11123    Online : 532        28.12.2025    20:24
10 Besucher in den letzten 60 Sekunden        alle 6.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0448760986328