Hallo zusammen ich muss für meine abschlussarbeit mit assambler eine
digitaluhr mir wecker programmieren leider hab ich ein paar probleme mit
dieser aufgabe 1. mit dem 24 stunden zeitformat ich hab statt 24 stunden
29 stunden 2. ich weiß leider nicht wie ich den wecker in mein programm
einbinde bzw. in zu programmieren zur programmierung nehm ich keil u
vision 2 der verwende microcontroller ist ein dalles ds87c520 der 8051
familie
http://sund.de/miles dieses teil muss ich zur programmierung nehmen
David Ebert schrieb:> http://sund.de/miles dieses teil muss ich zur programmierung nehmen
Aus welchem Museum wurde das wohl nur entwendet?
Ein moderner µC, wie ein AVR, MSP430 oder was auch immer beinhaltet
alles von diesem Kuchenblech.
> Aus welchem Museum wurde das wohl nur entwendet?
Was bitteschön ist gegen einem DS87C520 einzuwenden ?
Bloss weil du dir den nicht leisten kannst ?
Das Board ist solide, der Prozessor Industriestandard
und schnell (entspricht einem 100MHz 8052) und flashbar,
und es gibt weit mehr RAM als bei deinen Billig-CPUs.
Allerdings haben sicher schon Generationen vor David
genau dieselbe Aufgabe mit schlechteren Arbeitsmittels
problemlos umsetzen können, also wird der David mal selber
lernen müssen wie das geht, dazu ist die Ausbildung da,
da macht nicht mehr immer Mami das Essen und die Wäsche.
MaWin schrieb:> Was bitteschön ist gegen einem DS87C520 einzuwenden ?
Man braucht nen haufen Peripherie (Kuchenblech!) um das zu erreichen,
was nen MSP430/xmega/kleiner ARM auf ~2cm² kann.
> Bloss weil du dir den nicht leisten kannst ?
Wenn man denn wüsste, was er kostet? Bei Digikey heißt's anrufen.
> Das Board ist solide, der Prozessor Industriestandard> und schnell (entspricht einem 100MHz 8052)
=33MIPS
>und flashbar,
was daran so besonders? Dass man keine EPROMS mehr löschen und brennen
zu braucht?
> und es gibt weit mehr RAM als bei deinen Billig-CPUs.
XMEGA kann bis zu 16MB an externem RAM, wenn man denn soviel braucht.
David E. schrieb:> Ey versteht ihr das nicht ich muss dieses teil verwenden.> Ich hab keine ander möglichkeit entweder mit dem teil oder durchgefallen
Von
>vielleicht seht ihr da ja meine fehler der wecker ist noch nich dabei:
und Quellcode hinklatschen kommt nichts.
S. Netiquette
> Man braucht nen haufen Peripherie (Kuchenblech!) um das zu erreichen,> was nen MSP430/xmega/kleiner ARM auf ~2cm² kann.
Humbug.
Der 87C520 ist genau so ein Microcontroller wie ein AVR oder XMega,
er hat ein kleines Gehäuse, Pins die nur 5V vertragen.
Wenn man den berufsschulenrobust bekommen will mit 4mm Bananensteckern,
baut man genau so ein Board wie es der David vor sich liegen hat, da ist
kein Unterschied.
> Wenn man denn wüsste, was er kostet? Bei Digikey heißt's anrufen.
Du wirst aufjaulen weil du nur Kinderspielzeug kennst:
http://at.rs-online.com/web/p/products/0138089/> > und flashbar,> was daran so besonders? Dass man keine EPROMS mehr> löschen und brennen zu braucht?
Nichts, aber er ist damit genau so aktuell wie AVRs oder sonstige uC,
keinen Deut schlechter.
> und es gibt weit mehr RAM als bei deinen Billig-CPUs.> XMEGA kann bis zu 16MB an externem RAM, wenn man denn soviel braucht.
EXTERN, klar, aber dein obiger grosskotziger Beitrag behauptete, das
alles beinhaltete ein billiger AVR. Nein, eben nicht, der braucht
dafür auch ein Board.
Du hast einfach keine Ahnung aber ein grosses Maul gehabt, unangebracht,
da musst du dich nicht wundern, wenn du mit mir kollidierst.
Und wie man 2 Digits auf 2 4 und nicht auf 2 9 vergleicht, wird David
auch noch rausfinden, das geht beim 8052 nicht anderes als beim AVR.
David Ebert schrieb:> Hallo zusammen ich muss für meine abschlussarbeit mit assambler eine> digitaluhr mir wecker programmieren leider hab ich ein paar probleme mit> dieser aufgabe 1. mit dem 24 stunden zeitformat ich hab statt 24 stunden> 29 stunden
Tja.
Dann wirst du dir wohl hiefür
1
inc r1
2
CJNE r1, #3h , zurueck
3
mov r1, #'0'
4
5
6
inc r0
7
CJNE r0, #33h , zurueck
was anderes einfallen lassen müssen.
Bei Sekunden und Minuten ist die Sache leicht. Die Einerstelle zählt
jeweils von 0 bis 9. Und wenn es über 9 drüber geht wird die
zehnerstelle um 1 erhöht.
Bei den Stunden ist das aber anders. In der Einerstelle bis 9 zählen
geht nur, wenn die Zehner 0 oder 1 sind. Ist die Zehnerstelle bereits
auf 2, dann ist bereits beim Übergang von 4 auf 5 Schluss.
Und diese Logik musst du programmieren.
> 2. ich weiß leider nicht wie ich den wecker in mein programm> einbinde
So schwer ist das auch wieder nicht.
Wenn nach dem Erhöhen der Zeit die Stunden und Minuten identisch sind
zur Weckzeit schaltest du eine Tröte ein.
es tut mir leid wenn mein obriger beitrag großkotzig klingt (so ist er
echt nich gemeint)
Ich jaule auch nich für irgend einen microkontroller auf. Lass ihn
besser sein ABER ich darf ihn nich verwenden ich möchte nur die uhr
endlich fertig bekommen.
David E. schrieb:> es tut mir leid wenn mein obriger beitrag großkotzig klingt (so ist er> echt nich gemeint)> Ich jaule auch nich für irgend einen microkontroller auf. Lass ihn> besser sein ABER ich darf ihn nich verwenden ich möchte nur die uhr> endlich fertig bekommen.
Das bezog sich wohl auf mich.
Es hat sich aber jemand deines Problems angenommen:
Beitrag "Re: Digitaluhr mit wecker"
> es tut mir leid wenn mein obriger beitrag großkotzig
Du bist die ganze Zeit nicht gemeint, es geht um Lukas
"Aus welchem Museum wurde das wohl nur entwendet?"
MaWin schrieb:>> es tut mir leid wenn mein obriger beitrag großkotzig>> Du bist die ganze Zeit nicht gemeint, es geht um Lukas> "Aus welchem Museum wurde das wohl nur entwendet?"
Was ich persönlich witzig fand:
Denn als der Typ hier ankam, der sich seine CPU aus Transistoren
aufbaut, haben sich alle überschlagen wie toll das nicht wäre.
Ah cool.
könntet ihr mir wenigstens ne liste mit allen befehlen für meinen
microkontroller geben oder'n lösungsansatz denn ich bin mit meinen
latein am ende. mehr als das was in dem link steht hab ich net
Man findet auf den Webseiten des Herstellers alle Informationen über den
Microcontroller, auch sämtliche Befehle des Prozessors.
Wenn Du nicht in der Lage bist, all diese Informationen selbst zu
recherchieren UND zu verstehen, hast Du es ganz klar auch nicht
verdient, die Prüfung zu bestehen. Chancengleichheit in der Ausbildung
ist nicht gleichbedeutend damit, dass jeder Depp durchgeschleust werden
soll.
David E. schrieb:> Ah cool.> könntet ihr mir wenigstens ne liste mit allen befehlen für meinen> microkontroller geben oder'n lösungsansatz denn ich bin mit meinen> latein am ende. mehr als das was in dem link steht hab ich net
Mit den Befehlen, die du bereits verwendet hast, ist zumindest das 24
Stunden Problem zu lösen. Du musst nur der Versuchung widerstehen,
gleich alles in deinen Editor reinzuhacken, sondern dir die Zeit nehmen,
das durchzudenken.
Was ist wenn?
Das kannst du dir dann aufmalen, zb in Form eines Flussdiagramms (aber
verbrate nicht deine Zeit mit Lineal und Farben und das es schön
aussieht. Das soll nur eine Skizze sein, mit der du dein 'Verfahren' in
schriftlicher Form niederschreibst)
1
|
2
v
3
Stunden Einer um 1 erhöhen
4
|
5
|
6
v Ja
7
Stunden Zehner gleich '2' ? ---------+
8
| Nein |
9
| |
10
v Nein v Nein
11
Einer gleich '9'+1 ? --> zurueck Einer gleich '4' ? ---> zurueck
12
| Ja | Ja
13
| |
14
|<------------------------------+
15
|
16
v
17
Stunden Einer auf '0' setzen
18
Stunden Zehner um 1 erhöhen
19
|
20
v Nein
21
Stunden Zehner gleich '3' ? -----> zurueck
22
|
23
v
24
Stunden Zehner auf '0' setzen
25
|
26
v
27
zurueck: ->ausgabe
wenn du dir jetzt ein paar Uhrzeiten ausdenkst und annimmst dass soeben
die Minuten von 59 auf 00 umgeschlagen haben und daher die Stunden um 1
hochgezählt werden müssen und du fährst mit deinem Finger dieses
Diagramm ab und machst genau das was dort steht, dann muss in allen
Fällen die Erhöhung der Stunden richtig ablaufen. Wenn nicht: dann
korrigier das im Diagramm und probiers wieder durch. (Daher ist es eine
ziemlich gute Idee, wenn man solche Diagramme mit Bleistift zeichnet).
Ist bei deinen 'Finger-Langfahrtests' alles in Ordnung und du denkst,
dass das Verfahren jetzt stimmt, dann setzt du es in Code um. Alle
Befehle die du dazu brauchst, hast du im restlichen Code schon
verwendet, daher geh ich davon aus, dass du sie kennst.
Und mehr Hilfe geb ich jetzt nicht mehr. Denn das Behandeln der
Überträge bei getrennten Einer und Zehnerstellen um von 0 bis n (egal
welches n) ist selbst für eine normale Hausaufgabe eine lächerlich
simple Übung. Bei einer Abschlussarbeit, mit der man gelerntes
dokumentieren soll gilt das dann noch viel mehr.
Es ist einfacher, wenn Du nicht Zehner und Einer getrennt hältst,
sondern in einem Byte. Dann kann man bequem auf 60 oder 24 vergleichen.
Und erst zur Ausgabe berechnet man die beiden Stellen ("DIV AB"-Befehl).
Die Befehlsreferenz des 8051 mußt Du schon selber googlen. Da der 8051
sehr populär ist, gibts die oft sogar auf deutsch.
Für die Meckerer:
Es ist doch egal, wie das Entwicklungsboard aufgebaut ist, Hauptsache
der CPU-Kern ist der gewünschte.
Für die Produktion nimmt man dann natürlich einen Flash-Typ, z.B.
DS89C450
Dann braucht man nichtmal mehr ein Programmiergerät (eingebauter
Bootloader über UART).
Peter