Hallo Leute,
ich bin neu hier im Forum und vor allem ein Neuling was PICs angeht.
Darum hab ich auch Probleme mit dem folgenden Code:
Code:
;**************************************************************
;*
;* Pinbelegung
;* ----------------------------------
;* PORTA:
;* Pin Funktion
;* 0 Ausgang
;* 1 Ausgang
;* 2 Ausgang
;* 3 Ausgang
;* 4 Ausgang
;* 5 Ausgang
;*
;* PORTB:
;* Pin Funktion
;* 0 Ausgang
;* 1 Ausgang
;* 2 Ausgang
;* 3 Ausgang
;* 4 Ausgang
;* 5 Ausgang
;* 6 Ausgang
;* 7 Ausgang
;*
;* PORTC:
;* NN
;*
;*
;**************************************************************
; Includedatei für den 16F84 einbinden
list p=16f876
#include <P16f876.INC>
ERRORLEVEL -302 ; SUPPRESS BANK SELECTION MESSAGES
;**********************************************************
; Variablennamen vergeben
dx EQU 0x20
dy EQU 0x21
org 0 ; Programmstart immer bei 0
goto init ; Init ausführen
;**********************************************************
; Anfangsinitialisierung
init
CLRF dx ; Schleifenende
CLRF dy ; Schleifenzaehler
MOVLW H'55' ; Schleifenlaenge ins W-Register setzen`
MOVWF dx ; Schleifenlaenge aus W-Register nach dx
BSF STATUS, RP0 ; auf Bank 1 umschalten
BCF STATUS, RP1 ;
MOVLW B'00000000' ; PortA alle output
MOVWF TRISA
MOVLW B'10001111' ; PortA dig output
MOVWF ADCON1
MOVLW B'00000000' ; PortB alle output
MOVWF TRISB
BSF STATUS, RP0 ; auf Bank 0 zurückschalten
BCF STATUS, RP1 ;
CLRF PORTB ; alle Port A Latches ausschalten
CLRF PORTA ; alle Port B Latches ausschalten
;**********************************************************
; Hauptprogrammschleife
Main
MOVF dx,0 ; lädt Schleifenende
MOVWF dy ; setzt Schleifenzähler
SchleifeBegin
MOVF dy,0 ; hohle Schleifenzähler ins W-Register
NOP
MOVWF PORTA ; W-Register auf PORT A ausgeben
XORLW H'00' ; Komplement bilden
MOVWF PORTB ; Komplement auf PORT B ausgeben
DECF dy,1 ; dy um eins erniedrigen
MOVF dy,1 ; Prüfen auf 0 und Zero-Flag setzen
BNZ SchleifeBegin
NOP ; ende
end
Irgendwie läuft das Alles nicht so richtig!
Könnt ihr mir helfen?
Danke Vinc
Lesezeichen