/**************************************************************
   Schemat podłączeń programowanego układu

                 +----v----+
           MCLR [| 1     40|] RB7 <- S1
                [| 2     39|] 
                [| 3     38|] 
                [| 4     37|] 
                [| 5     36|] 
                [| 6     35|] 
      D1 <- RA5 [| 7     34|] 
                [| 8     33|] 
                [| 9     32|] VDD
                [|10     31|] VSS
            VDD [|11     30|] 
            VSS [|12     29|] 
(20 MHz) / OSC1 [|13     28|]
         \ OSC2 [|14     27|]
                [|15     26|] 
                [|16     25|] 
                [|17     24|]
                [|18     23|] 
                [|19     22|] 
                [|20     21|] 
                 +---------+
                 PIC16F877A
***************************************************************/

#include <htc.h>

//oscylator 20 MHz (FOSC_HS)
//watchdog wyłączony (WDTE_OFF)
//wyłączone LVP (Low-Voltage ICSP Programming) (LVP_OFF)
__CONFIG(FOSC_HS & WDTE_OFF & LVP_OFF);

void main()
{
	ADCON1 = 0x06;				//wyłączenie linii analogowych 
                    			//(wszystkie linie cyfrowe)
	TRISAbits.TRISA5 = 0;		//linia RA5 wyjściowa
	TRISBbits.TRISB7 = 1;		//linia RB7 wejściowa	
	OPTION_REGbits.nRBPU = 0;	//włączenie wewnętrznego pull-up dla linii portu B

	for(;;)						//pętla nieskończona
	{
		if(PORTBbits.RB7 == 1)	//jeśli przycisk nie jest zwarty
			PORTAbits.RA5 = 0;	//dioda ma być zgaszona
		else					//w przeciwnym przypadku
			PORTAbits.RA5 = 1;	//diodę należy zaświecić
	}
}
