Autor Tema: ayuda con programacion, no me simula en proteus  (Leído 1697 veces)

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

Desconectado Correia

  • PIC10
  • *
  • Mensajes: 39
ayuda con programacion, no me simula en proteus
« en: 07 de Julio de 2011, 20:42:55 »
buenas a todos me inicie en la programacion de los pic o microcontroladores y quize empezar por assembler, hice una programacion para prender un led con un interruptor y que cuando este encendido venga  un retardo de un segundo se apague y vuelva a prender y asi indefinidamente hasta que se pulse de nuevo el interruptor, la cosa es cabelleros que no me arranca y me tiene frustado aqui dejo la programacion aver quien me ayuda

Citar
;practica usando el tmr0 como retardo de tiempo
;----------------------------------------------
;pic=16f84
;osc=XT
;WDT= off
;oscilador; 4MHz
;Correia   "programas de practica"
; pulsador ingresando por porta,0 con salida de varios led por el portb con retardo
;**la programacion no tiene el retardo para los antirebotes**

;------ variables-------------
   list p=16F84
   radix hex

porta equ 0x05
portb equ 0x06
intcon equ 0x0B
tmr0 equ 0x01
regopt equ 0x01
trisa equ 0x05
trisb equ 0x06
contador equ 0x0d
status equ 0x03
;------configuracion de puertos----------
reset   org 0x00
       goto inicio
      org 0x05
inicio bsf      status,5
      movlw  b'11111' ;porta sera entrada
      movwf  trisa
      clrf   trisb
      movlw  b'11000111' ;asignado maximo valor del prescaler, y el temporizador se incrementara con el flanco ascendente
      movwf  regopt ;registro option de registros especificos
      bcf    status,5
      clrf tmr0
      clrf portb
      
;--------------bucle--------------------

bucle   btfsc porta,0      ; el interruptor se pulso es ¿0?
      goto  apagar   ;el interruptor no se pulso
prender   movlw b'11111111'   ;cargo los valores
      movwf portb   ;muevo w con el valor cargado a portb que esta como salida y algunos led prenderan y otros no
      call  retardo   ;llamo a la subrutina de retardo
      clrf  portb   ;al terminar la subrutina, apago todo los led
      call  retardo   ;llamo al retardo de nuevo
      goto  bucle   
      
;---------------retardo------------------

retardo    movlw 16         
          movwf   contador   ;cargo contador con el 16 cargado en w por que quiero que se decremente despues 16 veces
retardo1   movlw  b'00000000'    ; la carga maxima para el timer0 es 255, lo cargo con .0 por que quiero que haga 255 ciclos ;de conteo.
          movwf  tmr0
          bcf    intcon,2      ;pongo 0 el bit toif que me notifica cuando el timer0 se desborda
repetir     btfss  intcon,2      ;compruebo si el flag toif esta en 1(significa que el tmr0 se desbordo) , si es asi salto a "goto  ;repetir
          goto   repetir      
         decfsz  contador,1   ;comienza a restar contador-1 y lo guarda en el mismo registro contador, cuando llegue a "0" saltara a "return"
          goto    retardo1      ; inicio todo el ciclo de nuevo hasta que contador llegue a 0
       return      ;el retardo calculado es de 1 segundo
;---------apagar-------------
apagar   clrf portb   ;apaga todos los led conectados a la salida del portb
   goto bucle
;----------------------------

   end



-Tsuki no Tamashi
-Microcontroladores
-Robotica
-Evangelion
-Einstein

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: ayuda con programacion, no me simula en proteus
« Respuesta #1 en: 08 de Julio de 2011, 04:28:16 »
Que es realmente lo que sucede ? no te funciona la simulación ? o no hace lo que tu quieres ?
Porque  viendo el archivo el parpadeo solo se produce una vez y hasta que no vuelvas a pulsar
el switch no comenzará otra vez y así sucesivamente.
Saludos

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: ayuda con programacion, no me simula en proteus
« Respuesta #2 en: 08 de Julio de 2011, 04:37:47 »
Hola Correia, siento no poder revisar mas a fondo el programa en este momento ya que estoy en el curro, pero por lo que veo muy por encima es que tienes una mal configuracion del micro.
Lo primero que veo es el regopt y el TMR0 la forma correcta seria quitar los dos y poner TMR0_OPT   EQU   0x01.
Lo segundo es que tienes trisa   equ   0x05  y deberia de ser 0x85 ya que esta en el banco 1 y lo mismo con trisb deberia de ser 0x86.
Otra cosa es que debes tener en cuenta que no es lo mismo temporizar un segundo con simulacion que en la vida real, deberias bajar el tiempo de la temporizacion para la simulacion para saber si te funciona  y simular el segundo en la vida real.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado tannke

  • PIC16
  • ***
  • Mensajes: 176
Re: ayuda con programacion, no me simula en proteus
« Respuesta #3 en: 08 de Julio de 2011, 13:49:41 »
Muy buenas, ya se que es una tontería pero en proteus has conectado el pin4 (MCRL) a vpp?

Por cierto que compilador usas?

Saludos
« Última modificación: 08 de Julio de 2011, 13:51:45 por tannke »


 

anything