Autor Tema: Ya he realizado mi primer programa!!!!  (Leído 2549 veces)

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

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Ya he realizado mi primer programa!!!!
« en: 09 de Mayo de 2007, 19:48:37 »
Buenas  de nuevo, como el post indica he realizado mi primer programa, pero no ha resultado como esperaba. El objetivo de este programita es algo sencillo, simplemente realizar una subida y bajada de los leds del puerto B con la peculiaridad de que dependiendo de lo que se seleccione por el PORTA el retardo varia en la secuenci.
 Me estoy volviendo loco simulando con proteus(gracias a las ayudas del foro) pero mi programita no me toma el valor del PORTA , ¿me podeis dar una pista?
;Programa para la simulacion de una serie de leds

                       list      P=16F877
                  radix      hex   
                   #include <p16f877.inc> ;incluimos la libreria del PIC 16F877
;********************Zona de Etiquetas**************
                  temp      equ       0x20   ;registro temporal
                  tempi      equ      0x21
                  aux         equ      0x23
                  aux1      equ      0x24
                  port      equ      0x25
;****************************************************************

;*************************************************************************************+
            ORG         0x00
            goto      inicio
            ORG         0x05
;*********************************CARGO VALOR DE REFERENCIA************
         
;****************COnfiguracion del controlador******************************************
inicio
            bsf         STATUS,RP0    ;acceso al banco 1
            bcf         STATUS,RP1
;*******PUERTOS******************************************
            clrf      TRISB       ;puerta B como salida, aqui estaran los leds que vamos a usar
            movlw      b'00000011'   
            movwf       TRISA      ;puerta A0 y A1 entrada digital para seleccionar tiempo
            bsf       TRISC,5      ;Lo usaremos como boton de START
            
;*******CONFIGURACION DEL TMR0****************************
            movlw       b'00000111'
            movwf      OPTION_REG  ;configuracion del timer0 con un preescalado de 256
            clrf        INTCON
            bcf         STATUS,RP0
            bcf         STATUS,RP1 ;acceso al banco 0
            movlw      b'00000110'
            movwf      ADCON1      ;CONFIGURO LAS PATILLAS COMO DIGITALS
;**************FIN DE LA CONFIGURACION DEL CONTROLADOR**********************************
;****************************************************************************************
;**************COMIENZO DEL PROGRAMA**************************************************
main      
                clrf      PORTB
            movlw      b'00000001'
            movwf      aux
            movlw      b'00000010'   
            movwf      aux1
            btfss      PORTC,5
            goto      main
            call      tiempo
            bsf         PORTB,0
            call      retardo     ;encendemos la primera bombilla y esperamos el mismo retardo
            call      ida
            call      vuelta
            goto      inicio

;****************************rutina Programa ***********************************

ida            rlf         PORTB,1
            call      retardo
            btfss      PORTB,7
            goto      ida
            return
vuelta         rrf         PORTB,1
            call      retardo
            btfss      PORTB,0
            goto      vuelta
            return            ;volvemos al principio

;****************************************CALCULO DEL RETARDO
retardo      
         
            movf      temp,W
            movwf      tempi
         
            clrf      TMR0
            bcf         INTCON,T0IF
   retardo_2   btfss      INTCON,T0IF
            goto      retardo_2
            decfsz      tempi,f
             goto      retardo_3
            return
   retardo_3   bcf         INTCON,T0IF
            goto      retardo_2

;***************************COMPARACION PARA SELECICONAR RETARDO********************************
tiempo
            movf      PORTA,W
            movwf      port
            subwf      aux,W
            bz         _1_seg        ;Igual rtetardo 1seg
            bc         comparo2   ;mayor
            bnc         _0_5_seg         ;menor
comparo2      movf      port,W
            subwf      aux1,W
            bz          _1_5_seg
            bc         _2_seg

_0_5_seg       movlw      D'8'; Retardo de 0.5 segundo
            movwf      temp
            return
_1_seg         movlw      D'15' ;   Retardo de 1 Segundo
            movwf      temp
            return

_1_5_seg      movlw      D'23' ; Retardo de 1.5 segundos
            movwf      temp
            return

_2_seg         movlw      D'30' ;RETARDO de 2 SEG
            movwf      temp
            return
   
end

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Ya he realizado mi primer programa!!!!
« Respuesta #1 en: 09 de Mayo de 2007, 22:00:59 »
en primer lugar te pregunto algo, porq vuelves a inicializar todo el programa cuando:
Citar
call      retardo     ;encendemos la primera bombilla y esperamos el mismo retardo
call      ida
call      vuelta
goto      inicio ; ME REFIERO A ESTA PARTE
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Ya he realizado mi primer programa!!!!
« Respuesta #2 en: 10 de Mayo de 2007, 03:05:33 »
pq sino lo hacia asi, a proteus se le iba la pinza. Lo acabo de cambiar y he vuelto a simular y nada....todo sigue igual. Ahora marcho al curro que llego tarde, luego seguire luchando

 Muchas Gracias

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Ya he realizado mi primer programa!!!!
« Respuesta #3 en: 10 de Mayo de 2007, 03:18:13 »
pues no veo porq dices que el proteus le daba la pinza, no es necesario en verdad, sugiero que cambies esa parte y en vez de poner GOTO INICIO coloques simplemente GOTO MAIN.

veamos otro punto mas... m.... podriamos cambiar esta parte:
 
Citar
tiempo
            movf      PORTA,W
            movwf      port
            subwf      aux,W
            bz         _1_seg        ;Igual rtetardo 1seg
            bc         comparo2   ;mayor
            bnc         _0_5_seg         ;menor
comparo2      movf      port,W
            subwf      aux1,W
            bz          _1_5_seg
            bc         _2_seg

por esto
Código: [Seleccionar]
tiempo  movfw      PORTA
            andlw       0x03 ; solo me interesa los 2 primeros pines del portA
            addwf       PCL,F
            goto         _0_5_seg
            goto         _1_seg
            goto         _1_5_seg
            goto         _2_seg

me cuentas que tal te fue sino ya aplicamos el metodo agresivo  :twisted:
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Ya he realizado mi primer programa!!!!
« Respuesta #4 en: 10 de Mayo de 2007, 16:49:57 »
muchisimas gracias micro_cadaver por tu ayuda, pero sigo sin poder conseguir algo tan sencillo como capturar el valor de PORTA, simulando en proteus aunque varie el valor de las entradas PORTA siempre es '0'


Muchisimas gracias por vuestra ayuda

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Ya he realizado mi primer programa!!!!
« Respuesta #5 en: 10 de Mayo de 2007, 17:58:18 »
bueno entonces apliquemos el metodo agresivo , sube tus archivos todos dentro de un rar tanto el ASM del pic como el archivo DSN del proteus y veamos que sucedeeeeeee  :-/ toy seguro q debe ser un minimo detalle lo que te falte
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Ya he realizado mi primer programa!!!!
« Respuesta #6 en: 10 de Mayo de 2007, 20:11:06 »
aqui esta mi pequeño....da calentamientos de cabeza pero espero poder dominarlo algun dia

GRACIAS

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Ya he realizado mi primer programa!!!!
« Respuesta #7 en: 11 de Mayo de 2007, 00:00:42 »
hola ernesto, (supongo que asi te llamas), te tengo 2 noticias, una mala y la otra buena, supongo que querras saber primero la mala, jejeje, pues es la siguiente: el ADCON1 no esta en el banco 0 sino en el 1, revisar el datasheet porfavor. :mrgreen:. y la buena es que todo el resto del programa como lo mandastes esta ok  :-/ :-/ :-/ :-/ :-/ y lo carge al proteus sin mover nada y arranco, cuando mueves las entradas del porta se modifica la velocidad de la rotacion del led, antes no te hacia caso la rutina de leer el portA porque simplemente no estaba configurada adecuadamente como digital, como te escribi mas arriba, el ADCON1 esta en el BANCO 1.  :-) informame de tus avances.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Ya he realizado mi primer programa!!!!
« Respuesta #8 en: 11 de Mayo de 2007, 03:01:56 »
Buenos dias desde la peninsula!!!!muchisimas gracias micro_cadaver, ha sido modificar lo que me has comentado y mi programa tiene vida jejejejejeje, Ahora me marcho al trabajo (voy a llegar tarde,pero tenia que probar si eso funcionaba).
 Luego cuando vuelva me pondre con otro programita


   MUCHISIMAS GRACIAS

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Ya he realizado mi primer programa!!!!
« Respuesta #9 en: 11 de Mayo de 2007, 13:57:41 »
Hola ErnestAl

pues te felicito por hacer andar tu primer programa   :-/

¿sabias que esta es la parte mas dura para un picmaníaco?

ya veras que con el tiempo y las practicas las cosas iran mejorando  8)

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


 

anything