quiero recibir 5 datos y mostrarlos en 4 display de 7 segmentos, hastaahora tengo un programa que lee los datos, pero cunado hago la segunda lectura el programa se bloquea...estoy buscando el error para correguir el problema
dejo el codigo, para que puedan orientar con el programa,a porfavor
Código
#include <16f628A.H> #fuses NOMCLR #fuses INTRC_IO #FUSES NOWDT //No Watch Dog Timer //#FUSES XT //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #FUSES RESERVED //Used to set the reserved FUSE bits #use delay (clock=4000000) #use rs232(baud=9600, xmit=pin_B2, rcv=pin_B1) #define display_1 PIN_B4 #define display_2 PIN_B5 #define display_3 PIN_B6 #define display_4 PIN_B7 #use fast_io(b) // Para usar el puerto b como I/O Estándar (Con TRISB) // NUMEROS [0-9] = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] int Numeros[10] = {0X00,0X01,0X02,0x03,0x04,0x05,0X06,0x07,0X08,0x09}; int8 Unidad_1=0; int8 Decena_1=0; int8 Unidad_2=0; int8 Decena_2=0; int tiempo=1; ///////////////////////////////////////////////////////////////////////// /// DECLARACIONES QUE NO ESTOY SEGURO///////////////////// char trama_serial[5]; int1 flag_rx = 0; volatile int indice=0; #INT_RDA void RECEPCION_RS232(void) { indice++; flag_rx = 1; } void main(void) { set_tris_b(0b00001011); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); while (true){ //// SEPARO LA TRAMA 12&34 Decena_1 = ((trama_serial[0])-48); Unidad_1 = ((trama_serial[1])-48); Decena_2 = ((trama_serial[3])-48); Unidad_2 = ((trama_serial[4])-48); // Muestro el display 1 - DIGITO [1] 2 & 3 4 output_b(0x10); output_a(Numeros[Decena_1]); delay_ms(tiempo); // Muestro el display 2 - DIGITO 1 [2] & 3 4 output_b(0x20); output_a(Numeros[Unidad_1]); delay_ms(tiempo); // Muestro el display 3 - DIGITO 1 2 & [3] 4 output_b(0x40); output_a(Numeros[Decena_2]); delay_ms(tiempo); // Muestro el display 4 - DIGITO 1 2 & 3 [4] output_b(0x80); output_a(Numeros[Unidad_2]); delay_ms(tiempo); } }