// PIC18 in C - Versione 0.2 - Febbraio 2016 // Copyright (c) 2014, Vincenzo Villa // Creative Commons | Attribuzione-Condividi allo stesso modo 3.0 Unported. // Creative Commons | Attribution-Share Alike 3.0 Unported // https://www.vincenzov.net/tutorial/PIC18/hello-2.htm // Reference: PIC18F14K50 data sheet (note: page as DS41350C printed edition) // [1] REGISTER 9-7: TRISB: PORTB TRI-STATE REGISTER - Page 86 // [2] REGISTER 9-8: WPUB: WEAK PULL-UP PORTB REGISTER - Page 86 // [3] REGISTER 7-2: INTCON2: INTERRUPT CONTROL 2 REGISTER - Page 66 // [4] REGISTER 9-16: ANSELH: ANALOG SELECT REGISTER 2 - Page 95 // [5] REGISTER 9-12: TRISC: PORTC TRI-STATE REGISTER - Page 90 // [6] REGISTER 9-6: PORTB: PORTB REGISTER - Page 86 // [7] REGISTER 9-11: PORTC: PORTC REGISTER - Page 90 #include "configurationsbits.h" void main(void) { TRISBbits.RB4 = 1; // Set RB4 pin as input [1] WPUBbits.WPUB4 = 1; // Enable RB4 pull-up [2] INTCON2bits.RABPU = 0; // Enable global PORTB pullup [3] ANSELHbits.ANS10 = 0; // Enable digital input buffer of RB4 [4] TRISCbits.RC0 = 0; // Set RC0 pin as Output [5] while (1) { if (PORTBbits.RB4 == 0)// Test if pin RB4 is low [6] LATCbits.LATC0 = 1; // Turn on RC0 pin [7] else LATCbits.LATC0 = 0; // Turn off RC0 pin [7] } }