Autor Tema: Ayuda para realizar un fichero .asm para un trabajo  (Leído 1618 veces)

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

Desconectado DUDU5220

  • PIC10
  • *
  • Mensajes: 3
Ayuda para realizar un fichero .asm para un trabajo
« en: 18 de Abril de 2012, 14:26:19 »
Buenas, soy nuevo en el foro y para empezar bien, me presento. Estoy estudiando un grado de electrónica y en clase nos han mandado un trabajo sobre la programación en maplab y implementación en proteus.

En clase no hemos dado gran cosa y ahora el profesor nos pide que hagamos un trabajo y que sino sabemos  que os busquemos la vida.

He visto un post donde hay varios programas para el PIC 16F84A y he cogido uno de ellos como base para realizar mi trabajo.
Si no es mucha molestia me podrías ayudar resolver los errores y terminarlo.
http://www.todopic.com.ar/foros/index.php?topic=24720.msg201403#msg201403
Control de varios Displays 7 Segmentos con multiplexión

Explico un poco lo que quiero que haga el ejercicio:
El ejercicio tiene que contar de 000sg a 600sg (10 minutos) y mostrarlo en los tres Displays.
El numero de segundos se incrementa cuando la interrupción TMR0 haya saltado 20 veces – interrupción de 50ms x 20 =1 sg.
Código: ASM
  1. List            p=16F84
  2.         include         "P16F84.INC"
  3.                        
  4.         Unidad          equ 0x0C ; Guardamos conteo unidad
  5.         Decena          equ 0x0D ;
  6.         Centena         equ 0x0E ;
  7.         Contador                         equ d'4'      
  8.         CONT            equ 0x13
  9.                                        
  10.         MuestroU        equ 2 ; Para control del 1º Display
  11.         MuestroD        equ 1 ; Para control del 2º Display
  12.         MuestroC        equ 0 ; Para control del 3º Display
  13.  
  14.                                                                                                        
  15.         org     0x00
  16.         goto    Init
  17.                                
  18.         org     0x04
  19.         goto    Rsi
  20.                
  21.         org     0x05
  22.                                        
  23. BCD7SEG         addwf           PCL,1 ; Se incrementa el contador del programa.-
  24.                 DT 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F
  25.                 return
  26.                                        
  27. Init            bsf     STATUS,RP0
  28.                 movlw   b'00000111'
  29.                 movwf   OPTION_REG
  30.                 movlw   .20
  31.                 movwf   CONT
  32.                 bcf     STATUS,RP0
  33.                 movlw   .61
  34.                 movwf   TMR0
  35.                 movlw   b'10100000'
  36.                 movwf   INTCON
  37.                                
  38.                 bsf     STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-
  39.                 clrf    TRISA ; PORTA como salida
  40.                 clrf    TRISB ; PORTB como salida.-
  41.                 bcf     STATUS,RP0 ; Paso del Banco 1 al Banco 0
  42.                 clrf    PORTA ; Desactivo todos los Displays
  43.                 clrf    Unidad ; Comienza en cero --> 0 0 0.-
  44.                 clrf    Decena
  45.                 clrf    Centena
  46.                                        
  47.                                
  48.                                                                
  49. Main            call    RetRsi_2
  50.                 goto    Visualizar
  51.  
  52. RetRsi_2                movlw   .61
  53.                 movwf   TMR0
  54.                          bcf    INTCON,T0IF
  55.                 return
  56.  
  57. Unidades                incf    Unidad,1 ; Incremeto Unidad.
  58.                 movlw   d'10' ; Si es 10 reseteo e incremento Decena
  59.                 subwf   Unidad,0 ;
  60.                 btfss   STATUS,Z ;
  61.                 goto    Main ; no es 10
  62.                 clrf    Unidad ; Si, reseteo.-
  63.                 incf    Decena,1 ; Incremento Decena.-
  64.                 movlw   d'10' ; Si Decena = 10, reseteo e incremento Centena
  65.                 subwf   Decena,0 ;
  66.                 btfss   STATUS,Z ;
  67.                 goto    Main ; No es 10.-
  68.                 clrf    Decena ; Si, reseteo.-
  69.                 incf    Centena,1 ; Incremento Centena.-
  70.                 movlw   d'6' ; Si es 6 Reseteo.-
  71.                 subwf   Centena,0
  72.                 btfss   STATUS,Z
  73.                 goto    Main ; No es 6.-
  74.                 clrf    Centena ; Si, reseto   
  75.                 end    
  76.  
  77. Visualizar              movfw   Unidad ; Obtengo codigo de 7 Segmentos para Unidad.-
  78.                 call    BCD7SEG ;
  79.                 bcf     PORTA,MuestroC ; Apago Display de Centena, Se entiende al mirar rutina.-
  80.                 movwf   PORTB ; Cargo unidad en PORTB.-
  81.                 bsf     PORTA,MuestroU ; Enciendo Display de Unidad.-
  82.                 movfw   Decena ; Obtengo codigo 7 Segmentos para Decena.-
  83.                 call    BCD7SEG
  84.                 bcf     PORTA,MuestroU ; Apago Display de Unidad.-
  85.                 movwf   PORTB ; Cargo PORTB con Decena.-
  86.                 bsf     PORTA,MuestroD ; Enciendo Display de Decena.-
  87.                 movfw   Centena ; Obtengo codigo de 7 Segmentos para Centena.-
  88.                 call    BCD7SEG
  89.                 bcf     PORTA,MuestroD ; Apago Display de Decena.-
  90.                 movwf   PORTB ; Cargo PORTB con Centena.-
  91.                 bsf     PORTA,MuestroC ; Enciendo Display Centena.-
  92.                 decfsz  Contador,1 ; Pregunto si ya se ha repetido 10 veces el ciclo?
  93.                 goto    Visualizar ; No, repito.-
  94.                                                                                                                
  95.                
  96. Rsi             decfsz          CONT
  97.                 goto            RetRsi
  98.                 goto            Unidades
  99.                 retfie
  100.                                
  101. RetRsi          movlw           .61
  102.                 movwf           TMR0
  103.                 bcf             INTCON,T0IF
  104.                 retfie

He intentado compilarlo  y me da varios errores Warning[207], Warning[302] y Warning[305]. Me podríais ayudar a solucionarlos.

Saludos y gracias.
« Última modificación: 18 de Abril de 2012, 16:06:20 por DUDU5220 »

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: Ayuda para realizar un fichero .asm para un trabajo
« Respuesta #1 en: 18 de Abril de 2012, 14:37:26 »
Hola .

Warnings no son errores son avisos que da el ensamblador, además al lado del warning o error en el caso de que lo hubiera te indica la linea del fichero donde se produce  esta situación.
Si miras la ayuda del MPLAB , MPLAB help topics --> Language tools --> MPASM assembler  i miras el apartado  Errors,warnings etc encontrarás la explicación.

Saludos

Desconectado DUDU5220

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda para realizar un fichero .asm para un trabajo
« Respuesta #2 en: 18 de Abril de 2012, 14:55:57 »
Tambien me da el error [113] en "goto Rsi" y "goto Visualizar" pero esta bien escrito. Por que puede ser.

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: Ayuda para realizar un fichero .asm para un trabajo
« Respuesta #3 en: 18 de Abril de 2012, 15:48:37 »
Ese error no me lo da a mi en cambio si me da error porque,en lo que has puesto de código, al final le falta el END

Desconectado DUDU5220

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda para realizar un fichero .asm para un trabajo
« Respuesta #4 en: 18 de Abril de 2012, 16:07:56 »
Me faltaba de poner el final (end) ya lo  he puesto al final de visualizar.

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: Ayuda para realizar un fichero .asm para un trabajo
« Respuesta #5 en: 18 de Abril de 2012, 17:49:40 »
Al final de visualizar no, al final es al final,o sea la última instrucción del programa

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda para realizar un fichero .asm para un trabajo
« Respuesta #6 en: 18 de Abril de 2012, 18:03:59 »
No contesto mensajes privados, las consultas en el foro