/** I N C L U D E S **********************************************************/
#include <p18cxxx.h>
#include "delays.h"                        // für die Warteschleife
#include "usart.h"

/** Configuration ********************************************************/

#pragma config OSC  = IRCIO67
#pragma config PWRT = ON
#pragma config WDT = OFF  //Watchdog Timer
#pragma config LVP = OFF  //Low Voltage ICSP
 
#define Power	LATAbits.LATA6
#define Daten 	LATCbits.LATC0
#define Test 	LATCbits.LATC1
#define Fehler1	LATCbits.LATC2
#define Fehler2	LATCbits.LATC3
#define Taster1 PORTCbits.RC4
#define Taster2 PORTBbits.RB4

unsigned char  	Wert;

/** D E C L A R A T I O N S **************************************************/



 

/************************************************
Interrupt mit niedriger Priorität
************************************************/
 

 
#pragma code
#pragma interruptlow low_isr
void low_isr(void)
{

	if (PIR1bits.RCIF == 1)
			{
			Test = 1;
			Daten = !Daten;
			Wert = RCREG;
			RCREG = 0;
			PIR1bits.RCIF = 0;
			}


}
/* Hierhin springt der PIC beim Auslösen eines
   eines Interrupts mit niedriger Priorität*/
 
#pragma code _LOW_INTERRUPT_VECTOR=0x18
void interrupt_at_low_vector(void)
{
  _asm GOTO low_isr _endasm
}


void main(void) 
{

	IPR1bits.RCIP = 0;      // LOW priority für USART RECEIVE
	RCONbits.IPEN 	= 0;		// keine Prioriät bei Interrupts
	INTCONbits.PEIE = 1; 	// Peripheral Interrupt erlaubt
	PIE1bits.RCIE 	= 1;	// EUSART receive interrupt enable bit
	OSCCONbits.IRCF2 = 1;  	//8MHZ einstellung
  	OSCCONbits.IRCF1 = 1;	//8MHZ einstellung
  	OSCCONbits.IRCF0 = 1;	//8MHZ einstellung 
  	OSCCONbits.SCS1 = 1;
  	OSCCONbits.SCS0 = 1;
 
	TRISA = 0xBF;
	TRISB = 0xF7;
	TRISC = 0xB0;

	TXSTA = 0x64;  // EUSART senden konfigurieren
      // asysnchron
      // 9-bit
      // high-speed
  	RCSTA = 0xF0;  // EUSART empfangen konfigurieren
      // Empfang aktiv
      // Port aktiv
      // 9-bit
  	BAUDCON = 0x0A;  // 16-bit Baud-Rate Generator

  	SPBRGH = 1;  // 19200bps
  	SPBRG = 3;  // 19200bps, 3


  	PIE1bits.RCIE=1;    //RX Interrupt enable
	
	
		Fehler1 = 0;
		Fehler2 = 0;
		Daten   = 0;
		Test    = 0;
	
	
	


	while(1)
		{
		INTCONbits.GIE = 1;
		Delay10KTCYx(1);
		Power = !Power;
		if(Wert==0x01)
			{
			Fehler1 = 1;
			}
		else
			{
			Fehler1 = 0;
			}
		if (Taster1 == 1)
			{
			Fehler2 = 1;
			}
		else
			{
			Fehler2 = 0;
			}
		
		
		

		}
	
}



 

 


