Autor Tema: Salida en Binario/ Mostrar en 2 Display de 7 Segmentos  (Leído 3843 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado expertmex

  • PIC10
  • *
  • Mensajes: 1
Salida en Binario/ Mostrar en 2 Display de 7 Segmentos
« en: 08 de Diciembre de 2004, 18:45:00 »
Estoy programando mis primeros Pic. 16f877

Tengo la multiplicacion de 2 puertos de  (B y C), la salida es el el puerto D.

Mi problema es cuando EL RESULTADO DE la multiplicacion sale mayor a 9 , por  el display de 7 segmentos.

Cual es la programación para poder mostral la salida en  display de 7segmentos.

ANEXO ES PROGRAMA DE MULTIPLICACION DE 2 PUERTOS B Y C

*************************************************
   title "PIC16F877 counting program"  
   LIST   P=16F877                           
   INCLUDE   "P16F877.INC"

   ORG   0X00   ;reset vector
   Goto   Start
      ORG   0X06      
ENTB   equ    0x22   ;Variable ocupada dirección 22   
ENTC   equ    0x23   ;Variable ocupada dirección 23   
CONTA1    equ  0x24   ;Variable ocupada dirección 24
RESULD   equ    0x26   ;Variable ocupada dirección 26
SUMA   equ    0x27   ;Variable ocupada dirección 27
               
Start
   clrw          ;clear W register  
    clrf    PORTB  ;clear PORTB  
    clrf   PORTC  ;clear PORTB
    clrf   PORTD  ;clear PORTD
    clrf   ENTB
    clrf     ENTC
   clrf   CONTA1    ;clr count
   clrf   SUMA    ;clr count
   clrf   RESULD

   CALL ENTRADAPORTB
   CALL ENTRADAPORTC
   CALL MULTIPLICADOR
   CALL SALIDAPORTD
   
   GOTO FIN

ENTRADAPORTB      
 
   BSF STATUS,RP0
   BCF STATUS,RP1     ;configure PORTB as  
   MOVLW B"11111111"  ;bit7-0 input,
    MOVWF   TRISB      ;       
   BCF   STATUS,RP0
   BCF STATUS,RP1
   MOVF PORTB,0      ;captura puerto  B   a registro W
   MOVWF ENTB         ;Envia los datos del registro W a ENTB   
           
   RETURN

ENTRADAPORTC        
 
   BSF STATUS,RP0
   BCF STATUS,RP1     ;configure PORTC as  
   MOVLW B"11111111"  ;bit7-0 input,  
    MOVWF   TRISC      ;
   BCF   STATUS,RP0
   BCF STATUS,RP1
   MOVF PORTC,0      ;captura puerto  C   a registro W
   MOVWF ENTC         ;Envia los datos del registro W a ENTC
   
   RETURN

MULTIPLICADOR

   Movf ENTC,0      ;Envia ENTC   a registro W
   movwf CONTA1   ;Envia los datos del registro W a CONTA1

   
CONTADOR

   
   MOVF   ENTB,0      ; captura los datos de ENTB al registro W
   MOVWF   SUMA
   ADDWF   SUMA,1      ; suma los datos de w y ENTB  almacena W
   movwf  RESULD       ; Mueve los datos del registro W a RESULD
   Decfsz   CONTA1,f ;Resta 1 al contenido de CONTA1
                ;Si el CONTA1 llega a cero: salta
                ;La instruccion de GOTO Contador
                ;Si CONTA1 no llega a cero; ejecuta
                ;La instruccion GOTO contadfor
   goto   CONTADOR ;loop

return


SALIDAPORTD


   BSF      STATUS,RP0
   BCF      STATUS,RP1     ;configure PORTD as  
   MOVLW   B"00000000"  ;bit7-0 output,  
    MOVWF   TRISD      ;
   BCF      STATUS,RP0
   BCF      STATUS,RP1
   MOVF   RESULD,0      ; captura los datos de Var1 al registro W
   movwf   PORTD       ; display on Port D datos de W   

   RETURN

FIN   
   end  

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Salida en Binario/ Mostrar en 2 Display de 7 Segmentos
« Respuesta #1 en: 08 de Diciembre de 2004, 20:05:00 »
OK, debes crearte un convertidor binario BCD para extraer los numeros individuales del resultado, en este mismo foro existen varios convertidores y links a codigo para ese proposito, luego de convertir el numero en datos BCD puedes:

a) sacar los datos usando un 4511 o un 7447, en este caso el multiplexaje te queda mejor que estar usando dos puertos

b) crear tablas de salida (que no son las mismas que el binario) en base al tipo de display que estes usando, si es de anodo comun, entonces un "0" a la salida lo prendera, si es catodo comun un "1" lo hara.

Solo recuerda que depende del lenguaje q estes usando.