PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit PortD



bader357
14.10.2007, 14:06
Ich möchte mit dem Programm und dem PIC16F877a Leuchdioden an PortD ansteuern. Bei der Auswahl an Port A,B oder C funktioniert das auch, nur bei PortD bekomme ich die Fehlermeldung:
Argument out of range (0008 not between 0005 and 0007)

Kann jemand helfen? Danke



portd equ 0x08
TRISE equ 0x88



start movlw 0x00 ;lade W mit 0000 0000
tris portd ;kopiere W tristate PORTD als Ausgang
movlw 0x0f ;lade W mit 0000 1111
movwf portd ;lade PORTD mit dem Inhalt von W

goto start ;Endlosschleife

end

kalledom
14.10.2007, 16:59
Hallo,
in dem Assembler-Listing fehlen Definitionen, da reicht PORTD und TRISE nicht aus. TRISE wird Dir übrigens fürchterlichen Ärger bereiten, weil Du da an Bit 7...3 dran gehst; da sind nur die Bits 2...0 erlaubt !

Du mußt eine Definitions-Datei einbinden: include "p16f877a.inc"
Schau Dir mal die richtige Initialisierung und andere Dinge für den PIC16F877a hier (http://www.domnick-elektronik.de/picasm.htm) an.

Edit: TRISD befindet sich in Register-Bank 1 !
Edit2: Was ist das für ein neuer Assembler-Befehl: "tris portd" ?

MichaelM
14.10.2007, 18:45
Hallo,
"tris" ist ein alter Befehl aus der 16Cxx - Reihe. Mit diesem Befehl kann man direkt auf die Tris-Reg. zugreifen ohne die Bank zu wechseln. Man sollte ihn nicht mehr verwenden weil neuere Pics ihn nicht mehr haben (werden?). Wenn man MPLAB benutzt muss man auch noch den richtigen Pic angeben (wird unten in der Leiste angezeigt).
Gruß,
Michael