/*----------------------------------------------------------------------
----------------------------------
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;
}