Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - CIBERIK

#1
hola amigos

quiero preguntarles, hace tiempo llevo tiempo analizando un circuito...y quiero hacer un enlace  pero lo tengo que hacer de la siguiente manera ..

bueno para que sea mas simple , quiero hacer:
en este caso solo estoy recibiendo datos del computador,no lo quiero hacer con un conversor , quiero hacer una placa que contenga toda la comunicacion.

PC--->MAX232----> MAX 485 -----> ! MAX 485 ---> MAX 232 ------> PIC16F628A

#2
hola amigos tengo una duda referente a un programa de lectura de datos que proviene del computador , este ocupando el protocolo serial, usando el PIC16f628a

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


    #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)
{
   trama_serial[indice]= getc();
   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);
         
   }
}