Estoy tratando de controlar una pantalla de 7 segmentos usando PIC16F877A. Estoy programando mi PIC con una réplica de PICKIT 3.
Estoy cargando mi código hexadecimal usando el software PICKIT 3 y MPLABX IDE. No tengo ningún problema mientras subo mi código, solo cuando configuro mi circuito.
Noté que solo el pin B1 está funcionando. Hice un circuito de LED de parpadeo y aún obtengo B1 pin alto cuando configuro D0 pin alto. Estoy usando condensadores de cristal de 4 MHz y 0.1 uF. También subí archivos hexadecimales de Internet, pero siempre me estoy drogando de B1.
Estoy usando 4MHZ Crystal con condensadores de 0.1 uF. ¿Debo cambiar los condensadores con 15 pF?
Mi código:
#include <16F887.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4m,oscillator)
#define Dig1 PIN_D0
#define Dig2 PIN_D1
#define rfid PIN_D2
#define reset PIN_A1
#use fast_io(b)
#use fast_io(d)
static const int digit[10]= { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110,
0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111 };
void display(unsigned char value)
{
static char tens = 0;
char dig = (tens) ? (value / 10) : (value % 10);
dig = digit[dig];
output_high((tens) ? Dig2 : Dig1);
output_b(dig);
output_low((tens) ? Dig1 : Dig2);
tens = !tens;
}
void main()
{
char sayi = 0;
output_b(1);
output_d(0b11111100);
output_b(0b11111100);
set_tris_b(0x00);
set_tris_d(0b11111100);
while(1)
{
display(sayi);
if(input(rfid) == 0)
{
sayi++;
if(sayi == 100)
{
sayi = 0;
}
}
delay_ms(30);
}
}
Mi esquema:
HojadedatosdePIC16F877A:
Circuito de la vida real: