/*-------------------------------------------------------------------------------------------------------- digitalierung on einem sinus signal mit dem mikrocontroller 80c51537 name : datum : 31.05.2007 ----------------------------------------------------------------------------------------------------------- Header,deklarationen,Konstanten,Prototypen.............. ---------------------------------------------------------------------------------------------------------*/ #include #include 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; }