analogue signal digitalisieren

Gast #586413
Lesenswert?

ich habe  gerade  eine  aufgabe:   einen analogue  signale ( 5....bis 0
v) mit  dem  mikrocontroller   SAB80537  von infinion   zu
digitaliseren  .. und ich  soll am ausgang   digitale  werte  als binaer
zahlen   über serielle  schnittstelle S 0  bekommen ..
ich  werde  mich  freuen  auf eure  hilfe
besten  danke
Angehängte Dateien:
Gast #586481
Lesenswert?

/*---------------------------------------------------------------------- 
----------------------------------
digitalierung on einem sinus signal mit dem mikrocontroller  80c51537
name :

datum  :  31.05.2007



------------------------------------------------------------------------ 
-----------------------------------
Header,deklarationen,Konstanten,Prototypen..............
------------------------------------------------------------------------ 
---------------------------------*/




#include<reg517.h>
#include<stdio.h>

sfr S0RELL=0xAA;
sfr S0RELH=0xBA;
sfr ausgang=0xE8;
bit flag =0;


#define  QUARZ  12e6
#define  BAUD  9600
#define  ABTAST  5000      // Abtastung alle 5000 µs


#define  RELOAD  (256.5-(QUARZ/32.0/BAUD))

void init_io(void);

void main (void)
{
  init_io();
  printf("Hallo\n");
        ADM=  0x00;
  ADEX = 0;
  ADCON0 &= 0x80;
  ADCON1 = 0x00;               // kanal AN0  das heisst  bei mir  p7.0

  CRCL=((65535-ABTAST) & 0xFF);  //reloadwert ist  65035 (= 0xFE0B) für 
5 millisekunden zählzeit
  CRCH=((65535-ABTAST) >> 8);

  TF2=0;                      // Überlauf-flag vorsichthalber  löschen
  T2CON=0x11;                 //  reloadbetrieb  durch überlauf ,timer 2 
EIN

  EAL=1;                       //Interrupt hauptschalter  EIN
  ET2=1;                       //timer 2 interrupt

  while (1) {
    if (flag==1)
    {
      printf("%bu\n", P4);
      flag=0;
    }
  }

}

void init_io(void)                 // initialiserung der serille 
schnitstelle S1

{
  S0RELL=0xee ;               // baudrate 19200
  S0RELH=3;
  S0CON= 0x52;               // Mode 1
  PCON |= 0x80;             //SMOD =1
  BD=1;                   // Internbaudrate generator

}

void timer2(void) interrupt 5 {  // Interruptserviceroutine
  DAPR = 0;          // A-D-Wandler starten
  while(BSY)
    ;            // warten auf Wandlung komplett
  P4 = ADDAT;          // Wert an Port P4 ausgeben
  TF2=0;               // TF2-Bit löschen
  flag=1;
}
Gast #586484
Lesenswert?

In deinem Quellcode steht

c printf("%bu\n", P4); /c

Ich kann mit dem "bu" nach dem Prozentzeichen nichts anfangen, aber ich 
befasse mich noch nicht so lange mit dem Programieren. Und zu was steht 
nach dem Komma eigentlich Port 4?

Gast #586486
Lesenswert?

danke  nett  von dir  ..
also  ich habe  auch   keine  grosse  erfahrung mit  c  aber  ich 
bemühe mich ..
also bu  :  das  heisst  ausgabe  als  binaer  zahlen ..
und p4  ist  für  ausgabe  in port   4.0  oder  p4.1 oder  p4.2..etc....
Gast #586499
Lesenswert?

ja  richtig  die  Daten  sollen über  S0  ausgegeben werden.
ich  weisse  es  nicht  ob ich  fehlern mache  bei  dieser  while 
schleife    oder  beim abtsatung  von timer  2  ..
ich  finde  den fehlern nicht  in dem  programm..
ich  will  dei  daten  über  S0  sehen .....

vieln  danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren