#include #include #include #define F_CPU 12000000 //CPU-Takt #include #define BAUD 9600 //Bautrate #define UART_BAUD_RATE ((F_CPU/16/BAUD)-1) //Werte für Baudregister berechnen #define BAUD_REAL (F_CPU/(16*(UART_BAUD_RATE+1))) //Reale Baudrate #define BAUD_ERROR ( (BAUD_REAL*1000)/BAUD) //Fehler in Promille //Falls Baudrate falsch berechnet oder ähnliches->Fehler ausgeben #if ((BAUD_ERROR < 990) || (BAUD_ERROR > 1010)) #error Fehler Baudrate größer 1% ! #endif #define K_Port PORTC //Nachkommastelle entweder 0 oder 5 #define Komma0 PC4 #define Komma5 PC5 #define LED_Port PORTD //Leds #define LED_rot PD4 #define LED_gruen PD3 #define T_Port PIND //Taster #define Taster_h PD7 //Spannung hoch #define Taster_r PD6 //Spannung runter #define Taster_b PD5 //bestätigen #define Z1_Port PORTB //erste Zahl an PortB #define Z2_Port PORTC //zweite Zahl an PortC /************************************************ * Funktionsprototypen *************************************************/ //AVR initialisieren void Init_AVR(void); //*********************************************** //USART initialisieren void USART_Init(void); //*********************************************** //Daten über USART senden void USART_Transmit(unsigned char data); //*********************************************** //Taster abfragen uint8_t Taster_Check(void); //*********************************************** //Spannung auf 7-Segment ausgeben void Display_V(uint16_t Voltage); //*********************************************** //Taster entprellen inline uint8_t debounce(volatile uint8_t *port, uint8_t pin) { if (!(*port & (1< 80) { V_set -= 5; } } break; //Spannung über RS232 senden case 3: //rote LED ausschalten LED_Port &= ~(1<>8); UBRR0L = (unsigned char) (UART_BAUD_RATE); //Enable Receiver und Transmitter und Receive-Complete-Interrupt UCSR0B |= (1<