www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einfaches addieren mit 10?


Autor: Jens343 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,
ich wollte mal die Genies fragen ob sie eine Antwort auf mein Problem 
haben.

Die frage ist dämlich aber gibts es nicht soetwas wie subi für add?
Ich muss nämlich die Konstante 10 zu einem Register addieren, bis jetzt 
mach ich das relativ umständlich indem ich ein Register vorlade, und 
dann 2 Register addiere.

Nach sbic kann ja nur ein Befehl  stehen so wies aussieht.
Gibt es irgendeine möglichkeit Temp so zu bearbeiten dass in einem 
Befehl 10 addiert werden?Wenn nicht, was wäre auf jeden fall schneller 
als meine Lösung?

Aber schaut selbst, dies ist das Unterprogramm zur Heizungsregelung.

T1 ist das was gemessen wird, der Messbereich ist 10°C bis 35,5°C,
damit alles in ein Byte passt wird z.B. 23,2°C als 132 interpretiert , 
für Aquarienverhältnisse ist der Messbereich angemessen.
Die Routinen zur Messwerterstellung existieren noch nicht, aber das hier 
ist schonmal die Regelroutine.

Tsoll ist die gewollte Temperatur (+-1°C jeweils)


eHeizung:
       
       ldi tsoll, 155 ;Testing only

       mov temp, tsoll

       Sbis portb, PB0 ;skip if PB0=1(Heizung an)
       sbci temp, 10
     

       sbic portb, PB0 ;skip if PB0=0
       rcall addieren     ;An diesem Rcall reg ich mich so auf
       


     cp t1, temp
     brsh aus  ;same or higher
     brlo an   ;lower

     
addieren:

     ldi temp2, 10   ;unschön
     add temp, temp2 ;1°C addieren ;unschön
       ret  
       
aus:
     cbi Portb, PB0 ;clear bit
     ret


an:
     sbi Portb, PB0 ;set bit (Heizung an)
     ret

;*************eHeizung_Ende***************


Gruß Jens

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probiers mal mit

subi temp, -10

funktioniert einwandfrei ;-)

Gruß
Fabian

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>gibts es nicht soetwas wie subi für add?

Nein. Die schlauen Entwickler der AVR-Controller haben gecheckt, dass es 
verschwenderisch wäre, sowohl eine "addi"- als auch eine 
"subi"-Instruktion zu realisieren.  Man braucht ja nur eine davon: "addi 
10" = "subi -10".  Beides bewirkt exakt das gleiche (insbesondere auch 
bzgl. der gesetzten Flags im SREG).  Deshalb hat man auf das "addi" 
verzichtet und den Platz auf der Chipfläche für was anderes, 
sinnvolleres genutzt.

Autor: Jens343 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe gedacht -10 wäre nicht so valid, ist auch schon ne weile her 
als ich mich letztes mal mit AVR's beschäftigt habe ohne den Durchbruch.

Danke für die Info klasse, die AVR Entwickler hatten viel Verstand...
BTW Chipfläche :
In welcher Strukturgröße gibt es denn unsre Dinos?
120nm? Oder 240nM?

Gruß Jens

Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Danke für die Info klasse, die AVR Entwickler hatten viel Verstand...


Naja, ich bin nicht so ganz zufrieden, ich denke, es sollte zumindestens 
ein Pseudoinstruction "ADDI" geben um Programme besser lesbar zu halten. 
Der Assembler würde das dann natürlich zu "SUBI" codieren. Beim ST6 
gibt's sowas dauernd, u.a. die NOP Instruction.

Der Befehl "JMP irgendwohin" könnte auch heissen "LD  PCR,irgendwohin"

Autor: Jens343 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist klar =)

Kanns sein dass der AVR Simulator nicht viel von den EEProm 
Codebesipielen hält oder warum liest er immer 0xFF aus (wie als wär der 
EEPROM an der Sprungmarke leer)?

Hab die Files genauso kopiert und dem simulator gesagt atmega 8.... 
komisch

Gruß Jens

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Naja, ich bin nicht so ganz zufrieden, ich denke, es sollte zumindestens
>ein Pseudoinstruction "ADDI" geben um Programme besser lesbar zu halten.

Dann mach dir doch den Befehl mit einem Macro.

Gruss Helmi

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein ADDI Rd,K als Pseudoinstruktion für SUBI Rd,-K wäre verwirrend, da
das Carry-Flag andersherum gesetzt würde als man es bei den anderen
Addierbefehlen (bspw. ADD Rd,Rr) gewohnt ist. Vermutlich deswegen
haben ihn die Atmel-Entwickler weggelassen, obwohl sie sonst mit
Pseudoinstruktionen nicht gegeizt haben.

Ein Makro könnte aus diesem Grund ebenfalls für Verwirrung sorgen.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahjo, habt recht...

aber geht bei euch im Simulator auch EEPromsachen ned?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens wrote:
> Ahjo, habt recht...
>
> aber geht bei euch im Simulator auch EEPromsachen ned?

Doch, geht, musst nur vorher die aktuellen Werte von der Platte laden, 
das macht der Sim nicht von alleine, das hat sein Schöpfer vergessen.

...

Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:

> Doch, geht, musst nur vorher die aktuellen Werte von der Platte laden,
> das macht der Sim nicht von alleine, das hat sein Schöpfer vergessen.
>
> ...

Wie macht man denn das? Mit Stimulus datei und dann eine Simu-Eigene 
Port-EEProm Schreiberoutine oder gibts was eingebautes_

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Menu  Debug  Upload Memories
oder so ähnlich, ich habe es jetzt nicht vor mir.

Ist es denn soooo schlimm, mal etwas in den Menüs herumzukramen und zu 
schauen, was die Software so alles anbietet?

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.