// Ejemplo que muestra el funcionamiento de las entradas digitales del puerto A // Fernando Pardo 2005 // MPLAB C18 #include #include #pragma romdata CONFIG const rom unsigned char _configuration[14] = {0x00,0x22,0x0F,0x0E,0x00,0x01,0x81,0x00,0x0F,0xC0,0x0F,0xE0,0x0F,0x40}; #pragma romdata #define RETARDO 75 // 1=6.6666 ms (6 MHz) // dígitos BCD decodificados a 7 segmentos char tabla[]={ 0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111, 0b01110111, 0b01111100, 0b00111001, 0b01011110, 0b01111001, 0b01110001 }; char i; //char ADCON1@0x9F; // Direccion del registro ADCON1 void main(void) { PORTB=0; PORTA=0; ADCON1=0x07; // Todos los bits de A son digitales TRISA=0b00011111; // RA0-RA4 de entrada, resto de salida TRISB=0; // Puerto B de Salida while (1) { if (PORTAbits.RA4) { PORTB=PORTA; Delay10KTCYx(1); } else { PORTB=0; Delay10KTCYx(RETARDO); for (i=0;i<8;i++) { if (PORTAbits.RA4) break; PORTB=1<