Autor Tema: ayuda con programa contador para simulacion proteus  (Leído 6180 veces)

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

Desconectado idroj

  • PIC10
  • *
  • Mensajes: 23
ayuda con programa contador para simulacion proteus
« en: 10 de Junio de 2009, 10:59:58 »
Hola buenas tardes,

Hoy he aprendido a usar mas o menos el programa de simulacion proteus. Por eso he montado un circuito contador de 4 digitos con el pic16f84a k tiene el programa proteus. Però a la hora de usar el mpasm del proteus se me an producido errores del codigo al pasarlo al hex.
Los errores me ponian:

Dos Error: File not found. (0000:0161)
Extracting debug data from programa contador ensamblador.LST...
porgrama contador ensamblador.LST not found.
Source code build FAILED with 1 error(S).

El pograma ensamblador del contador es este:

;Contador de 4 digitos


list p=16f84a, f=INHX8M, r=hex
include "p16f84A.inc"



indo    equ     00h             ;registro de indireccion
pc      equ     02h             ;contador de programa
status  equ     03h             ;registro de estado
fsr     equ     04h             ;registro de seleccion
ptoa    equ     05h             ;puerto a
ptob    equ     06h             ;puerto b
rota    equ     0fh             ;variable para desplazamiento de display
trisa   equ     85h             ;configuracion puerto a
trisb   equ     86h             ;configuracion puerto b
dig1    equ     10h             ;acumulador miles
dig2    equ     11h             ;acumulador centenas
dig3    equ     12h             ;acumulador decenas
dig4    equ     13h             ;acumulador unidades
loops   equ     1dh             ;variables usadas en retardos
loops2  equ     1eh
z       equ     02h             ;flag de cero
ram     equ     05h             ;bit de seleccion de pagina de memoria
c       equ     00h             ;flag de acarreo
w       equ     00h             ;bit de destino a variable de trabajo

reset   org     00
        goto    inicio
        org     05h

retardo                         ;subrutina de retardo
        movwf   loops           ;la variable de trabajo contiene la cant.
top2    movlw   d'110'          ;de ms a demorar
        movwf   loops2
top     nop
        nop
        nop
        nop
        nop
        nop
        decfsz  loops2          ;controla si termina 1mS
        goto    top
        decfsz  loops           ;controla si termina el retardo completo
        goto    top2
        retlw   0

s1000                           ;rutina de incremento x 1000
        clrf    dig2            ;pone a cero las centenas
        incf    dig1            ;incrementa el contador de miles   
        movf    dig1, w         ;carga en work el conteo de los miles   
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        clrf    dig1            ;inicializa los miles   
        return
s100                            ;rutina de incremento x 100
        clrf    dig3            ;pone a cero las decenas
        incf    dig2            ;incrementa el contador de centenas
        movf    dig2, w         ;carga en work el conteo de las centenas
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s1000           ;incrementa los miles   
        return

s10                             ;rutina de incremento x 10
        clrf    dig4            ;pone a cero las unidades
        incf    dig3            ;incrementa el contador de decenas
        movf    dig3, w         ;carga en work el conteo de las decenas
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s100            ;incrementa las centenas
        return

subir                           ;rutina de incremento
        incf    dig4            ;incrementa el contador de unidades
        movf    dig4, w         ;carga en work el conteo de las unidades
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s10             ;incrementa las decenas
        movlw   d'250'          ;retardo de 100ms
        call    retardo
        return

tabla                           ;genera los numeros sobre el display
        addwf   pc              ;agrega al cont. programa el valor de work
        retlw   b'00111111'     ;genera el 0
        retlw   b'00011000'     ;genera el 1
        retlw   b'01110110'     ;genera el 2
        retlw   b'01111100'     ;genera el 3
        retlw   b'01011001'     ;genera el 4
        retlw   b'01101101'     ;genera el 5
        retlw   b'01101111'     ;genera el 6
        retlw   b'00111000'     ;genera el 7
        retlw   b'01111111'     ;genera el 8
        retlw   b'01111101'     ;genera el 9

inicio                          ;programa principal
        bsf     status, ram     ;selecciona el banco de memoria alto
        movlw   b'00010000'     ;configura el puerto a
        movwf   trisa           ;bit 4 entrada, demas bits salidas.
        movlw   00h             ;configura el puerto b
        movwf   trisb           ;como salidas
        bcf     status, ram     ;selecciona el banco de memoria bajo
        clrf    dig1            ;inicializa acumuladores
        clrf    dig2
        clrf    dig3
        clrf    dig4
        movlw   00              ;envia ceros a los transistores para apagar
        movwf   ptoa            ;todos los displays

empe    btfss   ptoa, 4         ;chequea el pulsador
        call    subir           ;llama la rutina de incremento
        movlw   08h             ;iniciar un 1 en el registro de rotacion
        movwf   rota           
        movlw   dig1            ;con el registro selector (fsr) se apunta
        movwf   fsr             ;al primer dato que se va a mostrar
disp    movlw   00h             ;colocar en cero el dato del display
        movwf   ptob            ;para apagarlos
        movf    rota, w         ;pasa rotacion del 1 a la variable work
        movwf   ptoa            ;enciende el transistor (display)
        movf    indo, w         ;lee el dato del registro apuntado por fsr
        call    tabla           ;genera el digito de 7 segmentos
        movwf   ptob            ;envia el digito al puerto b
        movlw   03h             ;retardo de 3ms para visualizacion
        call    retardo
        btfsc   rota, 0         ;controla si terminaron las cuatro rotaciones
        goto    empe            ;si termino, vuelve desde el comienzo
        bcf     status, c       ;carry en cero para no afectar las rotaciones
        rrf     rota            ;desplaza el 1 que enciende los displays
        incf    fsr             ;incrementa el puntero. Apunta el proximo
        goto    disp            ;digito a mostrar

        end


Si alguien sabe a que es debido este error le agredeceria mucho.

Gracias

Desconectado idroj

  • PIC10
  • *
  • Mensajes: 23
Re: ayuda con programa contador para simulacion proteus
« Respuesta #1 en: 11 de Junio de 2009, 10:50:29 »
Alguien lo sabe o no??

Por favor es urgente

Desconectado marcelchevalier

  • PIC10
  • *
  • Mensajes: 6
Re: ayuda con programa contador para simulacion proteus
« Respuesta #2 en: 30 de Junio de 2009, 03:30:34 »
idroj:

Tu Proyecto en MPLAB se corrompió seguramente, porque yo lo hice correr sin problemas, crea de nuevo el proyecto y compilalo de nuevo. Si esto no Funciona descarga el MPLAB desde la pagina de Microchip: http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_33.zip
y vuelvelo intalar el MPLAB, pero antes desintala la version anterior desde el panel de control/agregar y quitar programas de Windows.

Desconectado monoconnavaja

  • PIC10
  • *
  • Mensajes: 1
Re: ayuda con programa contador para simulacion proteus
« Respuesta #3 en: 30 de Junio de 2009, 22:18:52 »


        TENES QUE CREAR UNA CARPETA NUEVA EN LOS SAMPLES DEL PROTEUS Y EN ESA CARPETA COLOCAS ESE UNICO PROYECTO Y DESDE AHI LO HACES ANDAR AMI ME LLEVO UN PAR DE DIAS DARME CUENTA JA :D


 

anything