Nicht simulierbares Assemberfile?

Gast #75296
Hallo!

Ich beschäftige mich erst seit kurzem mit Microcontrollern und meine
erste Bekanntschaft ist die mit einem Atmel AVR ATMega128, allerdings
wurden wir angewiesen, beim compilieren ATMega103 anzugeben, aus mir
bisher unverständlichen Gründen. Aber wie auch immer, prinzipiell
funktioniert alles wie es sollte.
Ich wollte allerdings auch AVR Studio 4 zu Simulationen einsetzen und
geniere mir daher ein .s-File, das allerdings Kommandos zu enthalten
scheint, die das Studio nicht kennt. Wie ist das möglich? Das Studio
kennt doch sowohl den ATMega128 als auch 103, und kompiliert habe ich
immer mit avr-gcc.

mfg
Christian

Der Vollständigkeit halber hier noch der Quellcode, das .s-File ist im
Anhang. Im Endeffekt gibt es einen Kitt-artigen Effekt auf einem
Bargraphen per simuliertem PWM.

#include<io.h>
#include<sig-avr.h>
#include<stdlib.h>
#include"DisplayExample.h"
#include<interrupt.h>

#include<inttypes.h>

/*======================================*/
/* VARIABLES placed within SRAM memory  */
/*======================================*/

uint8_t    i = 0;
uint8_t   intcount = 0;
uint8_t   output   = 0XFF;
uint8_t   values[] = {0, 0, 0, 0, 0, 0, 0, 0};
uint8_t   temp[]   = {0, 0, 0, 0, 0, 0, 0, 0};

void arraycount(k)
{
  for(i = 0; i < 8; i++)
  {
      values[i] = 8-(abs(k-i));
  }
}

void resettemp()
{
  for(i = 0; i < 8; i++)
  {
      temp[i] = 0;
  }
}



void DisplayDigitAndPrepareNext()
{
  if ((intcount & 0x0007)==0)
  {
    resettemp();
  }
  for(i = 0; i < 8; i++)
  {
    if (temp[i] < values[i])
    {
      temp[i]++;
      output=~output;
      output |= (1<<i);
      output=~output;
    }
    else
    {
      output |= (1<<i);
    }
  }
}


INTERRUPT(SIG_OUTPUT_COMPARE1A)
{
  intcount++;
  outp(output,DISPL_DAT_OPORT);
  DisplayDigitAndPrepareNext();
}




int main(void){

  uint8_t count = 0;
  uint8_t k = 0;

  outp(0xFF,DISPL_DAT_OPORT);
  outp(0xFF,DISPL_DAT_DDR);

  sbi(TIMSK,OCIE1A); //enable output compare interrupts

  outp(0x20,OCR1AH); //time between writing out to LEDs
  outp(0x00,OCR1AL); //8192 = 555,76 us at 14,47 MHz
  count=0;

  sbi(TCCR1B,CS10);  //counter reset after match with A (only
timer/counter1)
  sbi(TCCR1B,CTC1);  //starts counter

  sei();   // enable global interrupts

  count=1; //1 means count up, 0 means count down

  k=STARTVALUE;
  arraycount(k);
  DisplayDigitAndPrepareNext();


  while(1)
  {
    if (intcount==225)
    {
      if (k==7)
      {
        count=0;
      }
      if (k==1)
      {
        count=1;
      }
      if (count==1)
      {
        k++;
      }
      else
      {
        k--;
      }

      intcount=0;
      arraycount(k);
    }
  }
  return 0;
}
Angehängte Dateien:
Gast #75297
Wiso *.s-Files ? Ich arbeite zwar nicht mit dem Simulator, aber soweit
ich weiss, simuliert man damit die *.hex-Dateien.
In den Hex Dingern steht ja im Grunde nur der Asm-Code in Form von
Zahlen, der Simulator kann das lesen und tut genau das, was der
Controller machen würde. Die *.hex-Files kann man sogar durch
Doppelklick direkt im Studio öffnen. Habe das gerade mal probiert. Mit
dem Menü "Debug" kannst du den Simulator laufen lassen. Musst nur
noch die Fenster, die die Register und so anzeigen hinzufügen.

Henrik

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.