Hi,
Kann mir mal jemand sagen was dieses Programm macht ^^
Also ich habe es geschrieben für einen Hausaufgabe bin mir aber nicht
sicher ob es korekt läuft weil ich die Simulation von MPLAB nicht
richtig rafe,,,
hier mal das Programm:
;project1
;-----------------------------------------------------------------------
-----
list p=16f84a ; processor pic16f84a
#include <p16f84a.inc> ; verwendet definition
;-----------------------------------------------------------------------
-----
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_RC_OSC ; voreinstellungen
;-----------------------------------------------------------------------
-----
org 0x00 ; reset adresse 00(hex)
goto main ; sprung zu main
;-----------------------------------------------------------------------
-----
main ; main Programm
bsf STATUS,RP0 ; schaltet auf bank1
bcf TRISB,0 ; setzt RB0 auf out
bcf TRISB,1 ; setzt RB1 auf out
bcf TRISB,2 ; setzt RB2 auf out
bcf TRISB,3 ; setzt RB3 auf out
bcf TRISB,4 ; setzt RB4 auf out
bcf TRISB,5 ; setzt RB5 auf out
bcf TRISB,6 ; setzt RB6 auf out
bcf TRISB,7 ; setzt RB7 auf out
bcf STATUS,RP0 ; schaltet zurück auf bank0
loop
bcf PORTB,1 ; RB1 = 0 (0V), led aus
bsf PORTB,0 ; RB0 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,0 ; RB0 = 0 (0V), led aus
bsf PORTB,1 ; RB1 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,1 ; RB1 = 0 (0V), led aus
bsf PORTB,2 ; RB2 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,2 ; RB2 = 0 (0V), led aus
bsf PORTB,3 ; RB3 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,3 ; RB3 = 0 (0V), led aus
bsf PORTB,4 ; RB4 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,4 ; RB4 = 0 (0V), led aus
bsf PORTB,5 ; RB5 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,5 ; RB5 = 0 (0V), led aus
bsf PORTB,6 ; RB6 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,6 ; RB6 = 0 (0V), led aus
bsf PORTB,7 ; RB7 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,7 ; RB7 = 0 (0V), led aus
bsf PORTB,6 ; RB6 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,6 ; RB6 = 0 (0V), led aus
bsf PORTB,5 ; RB5 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,5 ; RB5 = 0 (0V), led aus
bsf PORTB,4 ; RB4 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,4 ; RB4 = 0 (0V), led aus
bsf PORTB,3 ; RB3 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,3 ; RB3 = 0 (0V), led aus
bsf PORTB,2 ; RB2 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
bcf PORTB,2 ; RB2 = 0 (0V), led aus
bsf PORTB,1 ; RB1 = 1 (5V), led ein
nop ;warten
nop ;warten
nop ;warten
goto loop ; springt zur loop zurück
;-----------------------------------------------------------------------
-----
end ; ende der datei.
Das Programm zeigt ein paar LED mehr oder weniger hell gedimmt.
Mehr tut es nicht.
Für die ursprüngliche Intention, ein Knight-Rider Lauflicht zu
programmieren, sind die Wartezeiten viel zu kurz. Die 3 nop arbeitet der
Prozessor in (geschätzten) weniger als 100µs ab. Das Lauflicht wird also
in einer Sekunde sicherlich ein paar Hundert mal hin und her fetzen. Zu
schnell, als das dein Auge das auflösen kann. Du siehst nur noch einen
Lichtstreifen und keinen hin und her wandernden Punkt.
nehmen wir mal an die nop reichen für 1sec würde es dann ein lauflicht
ergeben das nach hinten und dann wieder zurück läuft ?
wenn ja dann passt es schon unser lehrer hat gesagt 3 nop reichen um
eine LED blinken zu lassen auf unserem Board.
Acker schrieb:> nehmen wir mal an die nop reichen für 1sec würde es dann ein lauflicht> ergeben das nach hinten und dann wieder zurück läuft ?
So sieht es wohl aus.
Ich denke du hast das Programm geschrieben?
Ob sich bei dir ein heller Lichtpunkt bewegt oder eine dunkle
Lichtlücke, hängt davon ab, wie die LED angesteuert werden. Das kann ich
von hier nicht beurteilen.
> wenn ja dann passt es schon unser lehrer hat gesagt 3 nop reichen um> eine LED blinken zu lassen auf unserem Board.
Autsch!
Ich verstehe nun deine antwort nicht xD
Funktioniert das lauflicht oder nicht ? die Zeit der nop´s lassen wir
mal aus es geht mir grade um das prinzip das ist unser erstes programm
wir haben noch nie was mit Microcontrollern gemacht des sollte ein crash
kurs seien um einen einstieg zu finden und ich denke mal mein Lehrer
weiss wie das Board von uns funktioniert der ist Dipe Ing und hat auch
bevor er lehrer wurde genug mit MC´s gemacht also denke ich das mit den
3 nops wird schon stimmen wie ers gesagt hat.
ich will nur wissen ob das lauflicht so funktioniert das ich mir sicher
seien kann das ich denn anfang vom progen in asm richtig verstanden
habe.
MFG
Dennis Acker
Acker schrieb:> Ich verstehe nun deine antwort nicht xD>> Funktioniert das lauflicht oder nicht ? die Zeit der nop´s lassen wir> mal aus es geht mir grade um das prinzip das ist unser erstes programm> wir haben noch nie was mit Microcontrollern gemacht
brenn es in den Prozessor und probiere es aus!
Du bringst dich doch um den halben Spass an der ganzen Sache!
> kurs seien um einen einstieg zu finden und ich denke mal mein Lehrer> weiss wie das Board von uns funktioniert der ist Dipe Ing und hat auch> bevor er lehrer wurde genug mit MC´s gemacht also denke ich das mit den> 3 nops wird schon stimmen wie ers gesagt hat.
Das denke ich nicht, aber das ist ein anderes Kapitel.
> ich will nur wissen ob das lauflicht so funktioniert das ich mir sicher> seien kann das ich denn anfang vom progen in asm richtig verstanden> habe.
Kannst du es assemblieren?
Wenn ja, dann hast du schon mal wenigstens Befehle benutzt, die es
tatsächlich gibt und auch sonst keine Tippfehler gemacht.
Brenn es in den µC und teste es. Testen macht mehr als 60% der
Softwareentwicklung aus.
Und wenn du es im Moment nur simulieren kannst, dann musst du dich mit
deiner Simulationsumgebung vertraut machen. Du wirst noch viele, viele
Stunden mit ihr verbringen. Je besser du sie jetzt beherrschen lernst,
desto einfacher hast du es in der Zukunft.
(Was soll den sonst rauskommen, wenn 7 Leute in einer Reihe sitzen und
nacheinander jeder eine Tafel hochhält, ein wenig wartet und dann die
Tafel wieder senkt während der nächste seine Tafel hochhält)
Acker schrieb:> Kann mir mal jemand sagen was dieses Programm macht ^^>> Also ich habe es geschrieben für einen Hausaufgabe bin mir aber nicht> sicher ob es korekt läuft weil ich die Simulation von MPLAB nicht> richtig rafe,,,
Dann ist dir jetzt wahrscheinlich auch klargeworden, warum man im
Kommentar ein bisschen mehr als "LED ein", "LED aus" und "warten"
schreiben soll.
;-)
Tip schrieb:> Acker schrieb:>> Kann mir mal jemand sagen was dieses Programm macht ^^>>>> Also ich habe es geschrieben für einen Hausaufgabe bin mir aber nicht>> sicher ob es korekt läuft weil ich die Simulation von MPLAB nicht>> richtig rafe,,,>> Dann ist dir jetzt wahrscheinlich auch klargeworden, warum man im> Kommentar ein bisschen mehr als "LED ein", "LED aus" und "warten"> schreiben soll.>> ;-)
ich weiss ja was es machen soll ich habe es erst gestern geschrieben es
ist aber der einstieg in die Mikrocontroler Technick deswegen will ich
lernen dabei und wissen ob mein erstes programm funktioniert damit ich
daraus lerne ^^
Acker schrieb:> ist aber der einstieg in die Mikrocontroler Technick deswegen will ich> lernen dabei und wissen ob mein erstes programm funktioniert damit ich> daraus lerne ^^
OK.
Wir helfen hier oft Leuten. Allerdings sind die dann schon auf einem
etwas höherem Niveau.
Nichts desto trotz ist dein bester Lehrmeister immer noch dein µC. Denn
der verzeiht nichts, der beschönigt nichts, der übersieht nichts. Der
führt nur das aus, was du ihm aufträgst. Und wenn der µC nicht das
macht, was du willst, dann war dein Programm falsch. So einfach ist das.
Allerdings gilt der Umkehrschluss nicht: Wenn es so aussieht, als ob der
µC genau das macht was du willst, heißt das nicht unbedingt, das nicht
doch noch ein Fehler enthalten ist (ist aber bei deinem Mini-Programm
unwahrscheinlich. Kommen ja nur 3 verschiedene Befehle vor und das dann
auch noch in einem sehr übersichtlichen Ablauf).
Was willst du jetzt hier hören?
Das dein Programm ein Lauflicht macht? Das wird dir hier so keiner
direkt sagen, denn das kannst du auch mit deinem µC leicht feststellen.
Brenn das Programm rein und sieh nach, ob die LED in der richtigen
Reihenfolge aufleuchten und verlöschen. Dabei lernst du viel mehr, als
wenn dir hier wer ein "Thumbs Up" gibt (was er sowieso nicht tun kann,
denn dazu müsste er deine komplette Umgebung kennen)
Acker schrieb:> nehmen wir mal an die nop reichen für 1sec würde es dann ein lauflicht> ergeben das nach hinten und dann wieder zurück läuft ?>> wenn ja dann passt es schon unser lehrer hat gesagt 3 nop reichen um> eine LED blinken zu lassen auf unserem Board.
Man könnte den PIC mit einem externen Takt von z.B.: 10 Hz betreiben.
Aus Datenblatt:
• Operating speed: DC - 20 MHz clock input
Gruß
John
John schrieb:> Ich sehe gerade, dass in der CONFIG _RC_OSC eingestellt wird. Es ist> damit bestimmt möglich sehr niedrige Taktfrequenzen einzustellen.
Glaub ich unbesehen.
Für das erste Programm mag das auch reichen und ich bin sicher sein
Lehrer wird das ganz schnell ändern und den µC wieder auf normale
Taktfrequenz zurückstellen.