Autor Tema: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A  (Leído 17414 veces)

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

Desconectado sergioneri

  • PIC10
  • *
  • Mensajes: 31
saludos eee espera a ver si me ayudaban es ke miren tengo ke hacer un programa en el ke sume 4 bits + 4 bits dentro de el puerto b pero las operaciones se guardaran en variables  y el resultado en el puerto a pero no lleov casi nada aunke si tengo idea pero la cosa es ke no se guardar las operaciones en el puerto c espero ke me puedan ayudar se los agredeceria las operaciones son sumar y restar saludos y gracias

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #1 en: 08 de Febrero de 2008, 05:13:22 »
Bienvenido Sergioneri al Foro Todopic!!!!!
Por favor ante de publicar una pregunta usa el Buscador y si no encuentra lo que busca entonce Publicalas,
por favor usa el Buscador


Desconectado sergioneri

  • PIC10
  • *
  • Mensajes: 31
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #2 en: 08 de Febrero de 2008, 05:18:30 »
 :shock: :shock: :shock: eeee saludos eee si pero ya trate y no logro encontrar lo ke necesito intente con el numero del pic omplab pero no encontre pero gracias por avisarme

Desconectado wATAw

  • PIC12
  • **
  • Mensajes: 52
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #3 en: 08 de Febrero de 2008, 08:40:01 »
No se si podría ayudarte....porq soy nuevillo...pero no acabo de entender lo que necesitas.
De donde lees los valores???puertaB uno o los dos???donde quieres reflejarlo en la A o C???

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #4 en: 08 de Febrero de 2008, 10:04:17 »
Hola Sergio. Lo primero sería pedirte que escribas más prolijo, usa las "," (coma) y "." (punto) para separar las frases y oraciones. Recuerda que los que estamos del otro lado, tenemos que entender lo que escribiste y luego entender tu problema para darte la solución.

Lo segundo, no puedes guardar nada en ningún puerto, solo lo puedes reflejar o enviarlo. Pero no lo puedes usar como memoria.

Tercero, esto es lo que entendí del problema: sumar dos números de 4 bit cada uno. Las operaciones se guardan en variables (o sea en la RAM) y el resultado mostrarlo por el puerto a. Lo que no logro entender es que haces con el puerto b y c. Si no me equivoco, de aquí obtenes los valores a sumar. O sea,el valor que hay en el puerto b se lo sumo al valor que hay en el puerto c. ¿Esto es correcto?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #5 en: 08 de Febrero de 2008, 12:17:33 »
Parece que los 4 bits con los otros 4 bits a sumar estan en el mismo puerto B (o algo asi) si este es el caso podrias hace algo como esto:

clrf      Reg_Resultado
clrf      MS_PORTB
clrf      LS_PORTB
;
movf    PORTB,w
andlw   H'0F'
movwf  LS_PORTB     ;coges 4 bits parte baja
;
movf    PORTB,w
andlw   H'F0'
movwf  MS_PORTB    ;coges 4 bits parte alta
;
swapf   MS_PORTB,w
addwf   LS_PORTB     ;sumas ambos nibles
movwf  Reg_Resultado  ;el resultado si deseas lo llevas al puertoC o usalo como desees

Otra forma tal vez podria ser:

clrf      Reg_Resultado
clrf      LS_PORTB
;
movf    PORTB,w
andlw   H'0F'
movwf  LS_PORTB     ;coges 4 bits parte baja
;
swapf   PORTB,w
andlw   H'0F'
addwf   LS_PORTB
movwf  Reg_Resultado  ;en este registro "Reg_Resultado" está el resultado

eee espero haberte ayudado en algo ;)

Javicho.

Desconectado sergioneri

  • PIC10
  • *
  • Mensajes: 31
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #6 en: 08 de Febrero de 2008, 16:11:45 »
aaaaaa si perdon y gracias por ayudarme se los greadesco en serio miren la cosa es asi que en el puerto b tengo 8 bits pero quiero que se sumen o resten 4 bits del mismo puerto b  (-menos o +mas) como sea el caso entre los otros 4 bits ke kedaron denttro del puerto b pero las operaciones sumar o restar se tienen ke guardar en variables dentro del puerto c y el resulatado de la suma o resta ke se hayya realizado en el puerto b se reflejara en el puerto a o guardara no se komo decirlo


espero ke me hayan entendido y de nuevo gracias a todos

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #7 en: 08 de Febrero de 2008, 18:51:52 »
Bueno. Te vuelvo a repetir. No se puede guardar datos en los puertos sea el puerto a, b o c.

Para hacer lo que quieres debes modificar el programa que te envió Javicho para tus propósitos. Pero ahora logro entenderte.

Tu quieres que la suma o resta del puerto b entre los bit más significaivos y los 4 bit menos significativos del mismo puerto b, se refleje o muestre en el puerto a, ahora el mismo valor va hacer reflejado o mostrado en el puerto c.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #8 en: 08 de Febrero de 2008, 19:58:20 »
denle una mirada a: ¿Sabías que...

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado sergioneri

  • PIC10
  • *
  • Mensajes: 31
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #9 en: 08 de Febrero de 2008, 21:32:23 »
aaa si pero no se como decirlo no guardar sino solo representtarlo y si no me etendieron en b se agarran 4 bits + 4 bits del mismo puerto y las operacion de suma y resta se guardan en variables y se representan en el puerto c y el resultado se guarda en el puerto a se llama miren tengo este ejemplo pero tiene ke realizar los mismo solo ke lo ocupo con otras instrucciones

   ;iNSTRUCCIONES:
   ;CONFIGURAR PUERTOB COMO ENTRADA   
   ;CONFIGURAR PUERTOC COMO ENTRADA:
   ;RC0=ADD
   ;RC1=SUB
   ;RC2=XOR
   ;RC3=OR
   ;RC4=AND
   ;RC5=COMPLEMENTO <0:3>
   ;RC6=EJECUTAR OP.
   ;PORTA = PUERTOB<0:3> OPERACION PUERTOB<4:7>
      

      LIST      p=16F877A      ; Tipo de procesador PIC16F877A
   #include   "P16F877A.inc"  ; Archivo de definicion de registros del micro

   ; Palabra de configuracion
   __config _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_ON & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

    org 0x00
    goto main

    org 0x04
   

   
main


;***************CONFIGURACION DE PUERTOS*****************
   
   ;CAMBIAMOS AL BANCO 1 DONDE SE ENCUENTRA TRISB
   BSF     STATUS,RP0                                 ; base de datos es 0   
   BCF      STATUS,RP1                                 ; base de datos es 1       
   ;CONFIGURA EL PUERTOB COMO ENTRADA
    MOVLW 0XFF                                   
   MOVWF TRISB
   ;CONFIGURA EL PUERTOC COMO ENTRADA
   MOVWF TRISC
   CLRW
   ;CONFIGURAMOS EL PUERTOA COMO DIGITAL
   MOVLW B'00000110'
   MOVWF ADCON1
   ;CONFIGURA EL PUERTOA COMO SALIDA
   CLRF TRISA
   ;CAMBIAMOS DE NUEVO AL BANCO 0
   BCF   STATUS,RP0
   BCF      STATUS,RP1

   


;****************BUSCANDO OPERACION A REALIZAR****************
   

   
@1   BTFSS PORTC,6                       ; BTFSS  checa f en el bit 6 x un 1   
   GOTO @1                             ; si  es 1   se brinca una instrucion y se va al siguiente
   

@2   BTFSS PORTC,0                       ;  checa si hay un 1 y si lo hay  ejecuta ADD
   GOTO @3
   CALL ADD
   
@3   BTFSS PORTC,1
   GOTO @4
   CALL SUB
   
@4   BTFSS PORTC,2
   GOTO @5
   CALL XOR
   
@5   BTFSS PORTC,3
   GOTO @6
   CALL OR
   
@6   BTFSS PORTC,4
   GOTO @7
   CALL AND
   
@7   BTFSS PORTC,5
   GOTO @1
   CALL COMP
   GOTO @1

   
   
   
;*******************DEFINIENDO SUBRUTINAS********************   

ADD
   CALL   NUMX2                ;llama a la divicion del num de 8 bits           
   MOVF   0X20,0               ; el registro 0x20 lo mueve a w
   ADDWF   0X21,0               ; el registro  suma w con f 0x21
   MOVWF   PORTA                ; el registro w mueve a la salida al PORTA
   CLRW                         ; limpiamos w
   RETURN                       ; regresa al main   

SUB
   CALL   NUMX2
   MOVF   0X21,0
   SUBWF   0X21,0
   MOVWF   PORTA
   CLRW   
   RETURN

XOR
   CALL   NUMX2
   MOVF   0X21,0
   XORWF   0X21,0
   MOVWF   PORTA
   CLRW   
   RETURN

OR
   CALL   NUMX2
   MOVF   0X21,0
   IORWF   0X21,0
   MOVWF   PORTA
   CLRW   
   RETURN

AND
   CALL   NUMX2
   MOVF   0X21,0
   ANDWF   0X21,0
   MOVWF   PORTA
   CLRW   
   RETURN

COMP
   CALL   NUMX2              ;llama a la divicion del num de 8 bits       
   COMF   0X21,0             ;complemento de f 0x21 a w
   MOVWF   PORTA              ; movemos de w al puerto f
   BCF      PORTA,4            ; limpiamos  PORTA  el bit 4
   BCF      PORTA,5            ; limpiamos  PORTA  el bit 5
   
   CLRW                      ;limpiamos w   
   CLRF   0X21               ;limpiamos f el registro 0x21
   RETURN                     ; regreso al main

   ;****************SEPARANDO NIBBLES DEL PORTB*******************

NUMX2                          ; divicion del num de 8 bits
      ;PRIMER NUMERO
   MOVF    PORTB,0            ;movemos a PORTB             
   MOVWF   0X20                ; mov w a f 0x20
   BCF      0X20,7
   BCF      0X20,6
   BCF      0X20,5
   BCF      0X20,4
   ;SEGUNDO NUMERO
   MOVWF   0X21            ;mov w  a f al 0x21
   SWAPF   0X21,1          ; aqui  cambia los 4 primeros bit por los 4 ultimos bits
   BCF      0X21,7
   BCF      0X21,6
   BCF      0X21,5
   BCF      0X21,4
   CLRW
   RETURN

   
  END

Desconectado sergioneri

  • PIC10
  • *
  • Mensajes: 31
Re: ayuda como realizo sumas o otro tipo de operaciones en mplab!!pic16F877A
« Respuesta #10 en: 09 de Febrero de 2008, 06:52:57 »
eeee palitrocquez vi lo ke me mandaste pero o le entiendo espero ke me puedan seguir ayudadndo ocupo ayuda gracias!!