hallo;
ich habe folgendes kleine PIC-ASS-Programm:
1
PROCESSOR16F15313
2
#include<pic16f15313.inc>
3
4
PSECTpsect1
5
org0x00
6
gotomain
7
8
PSECTpsect2
9
main:
10
movlw0b11111011
11
movwfTRISA
12
movlw0b00000100
13
movwfPORTA
14
end
Das Programm soll eine LED, die am PIN 5 eines PIC16F15313 angeschlossen
ist, zum Leuchten bringen.
Warum tut sie das nicht ? Hat das Programm einen Fehler oder ist das
Programm so richtig und ich muss den Fehler woanders suchen ?
Pin 5 ist PA2 stimmt soweit schonmal.
TRIS auf 0 für Ausgang passt auch.
Und jetzt die Frage : wo ist der andere Pin der Led hin verbunden ?
An den Vorwiderstand wirst Du ja gedacht haben, oder ?
Ist die Led nicht verpolt ?
Kannst ja in Zeile 12 mal 0 ins W Register laden und schauen, ob die Led
leuchtet, wenn der Pin low ist.
0 in Zeile 12 hat (erwartungsgemäß) nichts gebracht. Klar Vorwiderstand
ist dabei und verpolt ist sie auch nicht, habe mit direktem 5V-Anschluß
getestet.
also ich hab jetzt alles Hinweise von euch ins Programm eingebaut. dann
hab ich ein kleines C-Programm geschrieben, das funktioniert. dann hab
ich die configs aus dem C-Programm ins Assemblerprogramm übernommen.
aber es geht immer noch nicht. so sieht das Programm jetzt aus:
Michael S. schrieb:> banksel TRISA> movlw 0b11111011> movwf TRISA>> banksel PORTA> movlw 0b00000100> movwf PORTA
Hmmm, wie schnell kannst du eigentlich gucken?
Michael S. schrieb:> wie meinst du das ?
Me Culpa, hab das weiter oben eingeführte LATA, irgend wie auf TRISA
"gemappt". Sorry
Wie viel Strom zieht den die LED?
Kann es sein dass die meisten hier im Forum noch den MPASM haben und
ich, da ich die Version 6 von der MPLAB IDE habe, den pic-ass und es
zwischen den beiden Unterschiede gibt, wie ein Programm aufzubauen ist ?
Michael S. schrieb:> welcher Assembler ist denn jetzt der neuere ? MPASM pder pic-ass ?https://www.microchip.com/forums/m1150682.aspx
"pic-as is a brand new eco-system that has been first released with
MPLABX 5.40, and is still having the bugs and limitations ironed out of
it. It is NOT something I would recommend for learning on."
Ich habe bisher nur nur mit dem C-Compiler und MPASM-Assembler
gearbeitet.
Pic-As ist mir neu - erstelle ja nicht jeden Tag ein neues Progamm....
Mit Sicherheit wuerde ich mein naechstes Assemblerpr0gramm wieder mit
dem MPASM erstellen - wenn ueberhaupt !
Ich verwende fast nur noch den C-Compiler selbst fuer kleinste und
ziemlich alte PICs.
Habe eben meine MPLAB-IDE gestartet - und tatsaechlich - MPASM ist nicht
mehr verfuegbar.So ein Mist.Zum Glueck habe ich alle alten
Assemblerprogramme schon laengst in C konvertiert.
Aber nun werden ich mich wohl mit Pic-As anfreunden muessen.....
==================================
Du weisst ja,das du den Simulator verwenden kannst?
Das habe ich eben getan und wie es aussieht gibt es Probleme mit der
Konfiguration - der Main-Code wird erst gar nicht durchgefuehrt.
Im uebrigen:
xc.h ersetzt normalerweise alle pic-header files in der C-Umgebung.
Du verwendest 2 mal die include-Anweisung fuer den PIC :#include <xc.h>
und
#include <pic16f15313.inc>
Den Pic-As schaue ich mir vorlaeufig nicht an....kein Bedarf im Moment
> RTFM
Der kann nicht lesen.
Ist das noch nicht allgemein bekannt?
Und mit FLAs kann er auch nichts anfangen.
Vermutlich bindet ihm Mutti auch noch die Schuhe zu.
Psect1 u. Psect2 würde ich mal versuchshalber weglassen, jedenfalls
wurde dies früher bei kleinen Pics nicht gebraucht oder aber eher in C
bei grösseren Pics.
Hast du ein template von MPLABX verwendet, oder wie bist du auf Psect
gekommen?
> haben offenbar auch andere Probleme mit Pic as
Wenn man in C und Assembler schreibt, war der XC8-Assembler,
darum handelt es bei "PICAS" ja wohl, schon beim alten
MPLAB 8.92 nach der XC8-Installation mit an Bord.
Das ist nun kein "Einfach-Absolut-Assembler" wie MPASM.
Man muss das Handbuch lesen wenn man ihn benutzen will.
Bei Unklarheiten kann es auch hilfreich sein, sich
den vom Compiler generierten Assemblercode anzusehen.
Dann schafft man es sogar, z.B. eine Interruptroutine in
Assembler seinem (C-)Projekt hinzuzufuegen.
Die ist nun bzgl. der Attribute etwas komplexer.
Notorische Nichthandbuchleser werden mit dem nicht viel
Freude haben.
Der ist halt nicht fuer Weicheier die nur Code kopieren koennen.
... die absolute "org" Anweisung würde ich nur in Ausnahmefall benutzen,
weil dann viele Linker Infos wegfallen!
Besser benutzen "psect ResetVec, class=CODE, delta=2"
und im Project unter Linker die -pResetVec Option nutzen!
Dann ist die org Adresse relative im Segment definiert
Apollo M. schrieb:> Besser benutzen "psect ResetVec, class=CODE, delta=2"
Wie dem auch sei - dein Code funktioniert...
Beim Debuggen gibt aber eine Warnmeldung:
:0:: warning: (528) no start record; entry point defaults to zero
Toxic schrieb:> :0:: warning: (528) no start record; entry point defaults to zero
Wenn Linker Option -p genutzt wird, dann "end ResetVec" und die Warnung
ist weg!
Toxic schrieb:
> :0:: warning: (528) no start record; entry point defaults to zero
Mit absolute org ... im psect "ovrld" weg lassen und dann wieder "end
ResetVec" !
Apollo M. schrieb:> Mit absolute org ... im psect "ovrld" weg lassen und dann wieder "end> ResetVec" !
Ich hab seit einiger Zeit nichts mehr mit dm Assembler gemacht(MPASM)
und vom Pic As habe ich heute erstmals gehoert.
Bin zur Zeit nicht mehr auf dem Laufenden - manchmal lohnt es sich
mitzulesen...
Aber Dank deiner Initiative kann der TO nun endlich die Led zum Leuchten
bringen.Jetzt steht der Weg zur PWM-Steuerung eines Tesla Motors mit
einem Encoder rechts neben dem Lenkrad nichts mehr im Wege...😉