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ú

Mensajes - ijfa

#1
Electrónica / Re: Una minita de circuitos
6 Enero 2006, 15:58 PM
wena ...vamos a buskar....thx ;D
#2
Electrónica / Necesito delay....
6 Enero 2006, 15:57 PM
Hola les eskribo para pedir ayuda ...necesito hacer un retardo (delay) para el pic 16f874....uso un cristal de 20MHz ....necesito un delay de 10 ms.....porfa ... :shocked:
#3
OLA si alguien se raja kon una revisá de este kodigo por fa.....es que lo arregle pal compilador cc5x .....que es el que toy usando....

char Tecla, Temp,Temp1,Temp2, Pulsada;


void main()
{
  while (1)
  {

   Lee_Tecla();
   delay_ms(10);
  }
}


void Lee_Tecla(void)
{
  TRISB = 0b11110000;
  OPTION.7 = 0; // habilita pull-ups
  PORTB = 0;
#asm
comf PORTB,W;   // Lee y complementa
movwf _Temp1;   // Lee y complementa (Columna)
swapf _Temp1,f; // Cambia alta por baja
#endasm
Temp=0;

   while (!(Temp1 & 0x01))  // cuenta hasta que llegue a un bit set
   {
    Temp1>>= 1;
    Temp++;
   }

if (Temp<4)  // se ha pulsado
   
   {
     Temp2=Temp;                        // Guardo columna
     TRISB = 0b00001111;            // ahora la fila
     OPTION.7 = 0; // habilita pull-ups
  PORTB = 0;
  #asm
comf PORTB,W;            // Lee y complementa
     movwf _Temp1;            // Lee y complementa (Fila)
  #endasm
    Temp=0;
   
    while (!(Temp1 & 0x01))      // cuenta hasta que llegue a un bit set

    { Temp1>>=1;
      Temp++;
    }


    if (Temp<4)    // Fila correcta
       
       { Temp1=Temp;
       Tecla=(Temp2<<2)+Temp1;
       }
   
     else Tecla=0xFF;
     }
     
     else Tecla=0xFF;
     }
#4
Hola aki va mi konsulta....estoy empezando kon el teklado matricial........si alguien me puede ayudar plis....el teklado va konektado al puerto B....y tengo que enviar esos datos por rs232....si algiuen me puede ayudar a modifikar este porfa....



//programa de lectura de un teclado matricial conectado al puerto B.
//se realiza una lectura cada 10ms.

char ADCON0@0x1F; // Registro ADCON0
char ADCON1@0x9F; // Direccion del registro ADCON1
char ADRESL@0x9E;
char ADRESH@0x1E;
char TXSTA@0x98;
char RCSTA@0x18;
char SPBRG@0x99;
char TXREG@0x19;
char RCREG@0x1A;
char Tecla, Temp,Temp1,Temp2, Pulsada;


main()
{
  while (1)
  {

   Lee_Tecla();
   delay_ms(10);
  }
}


void Lee_Tecla(void)
{
set_tris_b(11110000b);
clear_bit(OPTION_REG,NOT_RBPU); // habilita pull-ups
output_port_b(0);
asm comf PORTB,W;   // Lee y complementa
asm movwf _Temp1;   // Lee y complementa (Columna)
asm swapf _Temp1,f; // Cambia alta por baja
Temp=0;

   while (!(Temp1 & 0x01))  // cuenta hasta que llegue a un bit set
   {
    Temp1>>=1;
    Temp++;
   }

if (Temp<4)  // se ha pulsado
   
   {
     Temp2=Temp;                        // Guardo columna
     set_tris_b(00001111b);             // ahora la fila
     clear_bit(OPTION_REG,NOT_RBPU);    // habilita pull-ups

     output_port_b(0);
     asm comf PORTB,W;            // Lee y complementa
     asm movwf _Temp1;            // Lee y complementa (Fila)

    Temp=0;
   
    while (!(Temp1 & 0x01))      // cuenta hasta que llegue a un bit set

    { Temp1>>=1;
      Temp++;
    }


    if (Temp<4)    // Fila correcta
       
       { Temp1=Temp;
       Tecla=(Temp2<<2)+Temp1;
       }
   
     else Tecla=0xFF;
     }
     
     else Tecla=0xFF;
     }




so nomas...
#5
que wena toy arreglando un programa pa un teklado matricial y me sirve el que toma algo en el puerto A y kontrola el B....wenoweno...thx
#6
Electrónica / Re: AYUDA CON MICROS MUY IMPORTANTE
28 Noviembre 2005, 19:38 PM
Mira...no se si te sirva...toy recien kachando komo anda esto...pero aki va:

;  - TECLADO.LIB -        \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 
;                                          www.x-robotics.com
; Descipcion:             \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
; Esta libreria realiza un escaneo en un teclado matricial de 4x4 teclas, 
; el escaneo lo realiza poniendo un cero logico en las filas correspondientes
; y verificando las columnas para encontrar la interseccion provocada por   
; el accionamiento de una tecla y asi saber la fila y columna de la tecla. 
; ESTA SUBRUTINA CONVIERTE LA TECLA PULSADA EN SU EQUIVALENTE ASCII
;       para ser usada con el display LCD.
;                                         
; Se tienen que inicializar las siguientes variables en el programa que
; use esta libreria:
;                       - ( Tecla )  ;Devuelve la tecla pulsada
;****************************************** http://www.x-robotics.com *******
                 
KB_Port                        ;Inicializa la puerta B para las entradas del
                               ;teclado. Programa RB0-3 como salidas y RB4-7
                               ;entradas con las resistencias de polarizacion
                               ;habilitadas.           
                BSF     STATUS,RP0      ;Selecciona P gina 1             
                MOVLW   0F0h            ;PB4-7 como entradas 
                MOVWF   TRISB           ;y PB0-3 como salidas
                BSF     OPCION,RBPU     ;Habilita R de polarizacion en entradas
                BCF     STATUS,RP0      ;Vuelve a la p gina 0.
                RETURN                  ;Retorna.
                                       
KB_Scan                                 ;Escanea el teclado
                CLRF    Tecla           ;Borra Tecla y
                INCF    Tecla,f         ;prepara Tecla para primer c¢digo.
                MOVLW   0Eh             ;Saca 0 a la primera fila
                MOVWF   PORTB           ;de la Puerta B
                NOP                     ;Nada para estabilizaci¢n de señal. 
Cheq_Col        BTFSS   PORTB,4         ;Primera columna = 0       
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,5         ;Segunda columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,6         ;Tercera columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,7         ;Cuarta columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada,incrementa Tecla.
                                       
Ultima_Tecla    MOVLW   d'17'           ;Carga W con el n£mero de Teclas + 1.
                SUBWF   Tecla,w         ;y lo compara con el valor actual de Tecla.
                BTFSC   STATUS,Z        ;Si Tecla + 1 = valor actual.
                GOTO    NTeclas         ;No ha sido pulsada ninguna tecla.
                BSF     STATUS,C        ;Pone a 1 Bit C.   
                RLF     PORTB,f     ;as¡ la Fila 1 pasa a 1 con la rotaci¢n a izqda.
                GOTO    Cheq_Col                                             
                                                           
NTeclas         CLRF    Tecla           ;Coloca variable Tecla a 0
                RETURN                  ;y regresa.         
                                                           
antirebotes   ;ahora se espera a que la tecla sea soltada para evitar rebotes
      ;y reactivaciones de tecla
      ;esta parte puede ser eliminada si para nuestro proyecto no es necesaria
            ;o es un inconveniente.

Espera1         BTFSS   PORTB,4         ;Si no se suelta la tecla FILA 1
                GOTO    Espera1         ;vuelve a esperar.
Espera2         BTFSS   PORTB,5         ;Si no se suelta la tecla FILA 2
                GOTO    Espera2         ;vuelve a esperar.
Espera3         BTFSS   PORTB,6         ;Si no se suelta la tecla FILA 3
                GOTO    Espera3         ;vuelve a esperar.             
Espera4         BTFSS   PORTB,7         ;Si no se suelta la tecla FILA 4
                GOTO    Espera4         ;vuelve a esperar.         
               
                MOVF    Tecla,w      ;pone en w el numero contenido en la variable
                CALL    T_Conv          ;llama a la tabla de conversion y retorna
                MOVWF   Tecla        ;con el valor en hexadecimal y lo pone en la variable.
                RETURN             ;vuelve al programa principal que hizo la llamada.
                 
                             
T_Conv          ADDWF   PCL,1
                RETLW   '0'             ;Tecla nº0 = 0
                RETLW   '1'             ;Tecla nº1 = 1
                RETLW   '4'             ;Tecla nº2 = 4
                RETLW   '7'             ;Tecla nº3 = 7
                RETLW   'A'             ;Tecla nº4 = A                       
                RETLW   '2'             ;Tecla nº5 = 2
                RETLW   '5'             ;Tecla nº6 = 5
                RETLW   '8'             ;Tecla nº7 = 8
                RETLW   '0'             ;Tecla nº8 = 0
                RETLW   '3'             ;Tecla nº9 = 3
                RETLW   '6'             ;Tecla nº10 = 6
                RETLW   '9'             ;Tecla nº11 = 9
                RETLW   'B'             ;Tecla nº12 = B
                RETLW   'F'             ;Tecla nº13 = F
                RETLW   'E'             ;Tecla nº14 = E
                RETLW   'D'             ;Tecla nº15 = D
                RETLW   'C'             ;Tecla nº16 = C
                                 


es la kopia feliz de lo que enkontre iop...tb toy trabajando kon un teklado de 4x4...weno ojala te sirva..chau