Migrar el asm de un 16F84 a un 16F877.

Hola amigos tengo un tema con los firewire asm tengo algunos que hice o descargue de Internet para el 16f84 pero ahora algunos de esos quiero pasarlos al 16f877 o 18f2550 me pueden ayudar con alguna info por no se por donde empezar. gracias y no se enojen si mi pregunta estaba en el foro por que busque y no encontre respuesta.
 
pues no es nada del otro mundo solo debes cambiar algunas cositas pues es casi lo mismo

cambia esto:

"LIST P=PIC16F84A" ==> LIST P=PIC16F877 ; Pic a usar

"INCLUDE <P16F84A.INC>" ==> INCLUDE <P16F877.INC> ; Lista de etiquetas
de microchip

y agrega : CBLOCK 0X20

y fijate en el datasheet de ese pic para que configures el "CMCON" como digitales y lo escribes antes del :
"ORG 0x00"

y con eso deberia funcionar.... cualquier cosa avisas.. SALU2!
 
buenos días hace tiempo hice un pequeño programa con pic 16f84a funciona a la perfección pero a la hora de pasarlo al pic 16f877a no lo hace de buena manera si alguien me pudiera auxiliar es el siguiente:
este es el programa en el pic 16f84a


Código:
LIST P=16F84A
__CONFIG    _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
#include "p16F84A.inc"

#DEFINE  Banco0 bcf STATUS,RP0
#DEFINE  Banco1 bsf STATUS,RP0
#DEFINE  Salida        PORTB,1
#DEFINE  Salida1        PORTB,0

cblock 0x25
Contador
Contador1
Contador2
Contador3
Contador4
Contador5
Contador6
Contador7
Dato
Dato1
Dato2



endc
org 0

goto inicio

Retardo
        movwf   Dato
       
Brinca      
        decfsz  Dato,f
        goto    Brinca1
        return

Brinca1      
        call    Retardo1
        goto    Brinca
        

Retardo1 
        movlw    .2
        movwf    Dato1
        
        
ciclo4 
        movlw    .28
        movwf    Dato2
        decfsz   Dato1,f
        goto     ciclo3
        nop 
        nop
        return
ciclo3
        
        decfsz   Dato2,f
        goto     ciclo3
        goto     ciclo4
     


inicio 

       Banco1
       clrf      TRISB
       movlw     b'00001111'
       movwf     TRISA
       Banco0
       movlw     .25
       movwf     Contador
       movlw     .20
       movwf     Contador2
       movwf     Dato
       movwf     Dato1
       movwf     Dato2
       movlw     .160
       movwf     Contador3
       movwf     Contador1
       movlw     .0
     
Servo0
      btfss      PORTA,1
      goto       Servo0.1
      call       Retardo_500ms
      incf       Contador
      decf       Contador1    
      goto       Servo0.2
Servo0.1
      btfss      PORTA,0
      goto       Servo0.2
      call       Retardo_500ms
      decf       Contador
      incf       Contador1
      goto       Servo0.2
Servo0.2 
      movfw      Contador     
      bsf        Salida
      call       Retardo
      movfw      Contador1
      bcf        Salida
      call       Retardo
      goto       Servo1
Servo1
      btfss      PORTA,2
      goto       Servo1.1
      call       Retardo_500ms
      incf       Contador2
      decf       Contador3
      goto       Servo1.2
Servo1.1
      btfss      PORTA,3
      goto       Servo1.2
      call       Retardo_500ms
      decf       Contador2
      incf       Contador3
      goto       Servo1.2
Servo1.2 
      movfw      Contador2     
      bsf        Salida1
      call       Retardo
      movfw      Contador3
      bcf        Salida1
      call       Retardo
      goto       Servo0


    

INCLUDE <RETARDOS.INC>
end
si alguien pudiera apoyarme se lo agradecería bastante
 
Última edición por un moderador:
Básicamente para migrar ese código del 16F84A al 16F877A tienes que hacer lo siguiente...
La cabecera cámbiala por esta.
Código:
    list p=16f877a
    __config    _XT_OSC & _WDTE_OFF & _PWRTE_ON & _LVP_OFF & _BOREN_OFF
    include <p16f877a.inc>
    errorlevel    -302
El inicio del bloque de variables por 0x20
Y en la rutina de inicio dentro del banco 1, añade esto para hacer el puerto A Digital I/O...
movlw 0x06
movwf ADCON1

Suerte.
 
Atrás
Arriba