¿Necesita ayuda con el tablero de demostración 16F887 y Microchips de 44 pines?

1

Necesito ayuda con un PIC16F887 y la placa de demostración de 44 pines de Microchip. Está siendo programado con un PicKit2.

En esta placa de demostración, hay un botón pulsador conectado a RB0 de tal manera que el nivel en el pin está alto todo el tiempo, y al presionar el botón el nivel baja. El propósito del botón es simular una señal de interrupción externa. Estoy intentando experimentar con interrupciones en este chip, pero no puedo leer ningún cambio de estado en este pin.

Tengo un simple fragmento de código que prueba el estado de RB0 y establece RD0 en consecuencia. Sin embargo, no pasa nada si se presiona o no el botón.

¿Alguien puede ver algo mal aquí? Sé que el IC en sí está bien ya que puedo ejecutar otros programas que no usan este pin de entrada.

Aquí hay un PDF en la pizarra de demostración si alguien está interesado. enlace

#include <pic16f887.h>
#include <htc.h>

__CONFIG (0x20E4);
__CONFIG (0x2EFF);

void main(void){

 int i;
 int k;
     TRISB = 0xff; //set PORTB as inputs
     TRISD = 0x00;        // Set PORTD as an Output
     while(1)
 {
    RD0=RB0;
 }

Hice los siguientes cambios según la solución de Dave a continuación, sin cambios.

void main(void){

 int i;
 TRISB = 0xff; //set PORTB as inputs
 TRISD = 0x00;        // Set PORTD as an Output
 while(1)
 {
     i=PORTB;
     PORTD=i;
 }

}

    
pregunta Michael

2 respuestas

3

He encontrado mi respuesta a esta pregunta. Tuve que configurar ANSEL y ANSELH en 0 para permitir la E / S digital

Gracias por las sugerencias de todos.

    
respondido por el Michael
0

En lugar de escribir el bit 0 en el puerto B al bit 0 en el puerto D, escriba todo el puerto B en una variable y luego escriba la variable en el puerto D. Si esto funciona, entonces es probable que, el problema de "leer modificar escribir". Tuve un problema similar y me ayudó esta respuesta: enlace

    
respondido por el Dave.Mech.Eng

Lea otras preguntas en las etiquetas