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
fein, nette Aufgabe und in wenigen Minuten erledigt. Da hast du noch genug Zeit dich in die Sonne zu legen!
doch hier siehst du mein c -programm aber e s funktionniert nichts ich sehe gar keine digitalewerte ... als anhang siehst du meine programm aber ich finde nichts den fehlern
danke trotzdem nett von dir .. hier siehst du mein programm aber ich sehe als ausgabe gar keine digitale werte .. findest du mein programm als anhang.. ich finde nicht den fehler danke
/*---------------------------------------------------------------------- ---------------------------------- 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; }
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?
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....
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.