elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Dudas para crear temporizador en ensamblador
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas para crear temporizador en ensamblador  (Leído 24,030 veces)
Firos
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.410


Enseña lo que sepas... y oculta lo peor...


Ver Perfil
Re: Dudas para crear temporizador en ensamblador
« Respuesta #10 en: 30 Marzo 2013, 18:35 pm »

Estaba revisando el hilo un poco... y se me ha ocurrido otra cosa.

Veo que en tu código para cambiar de bancos tocas los registros RP0 y RP1.


Lo que voy a proponerte ahora es otra cosa para que no tengas que estar escribiendo eso también. Imagínate que cada vez que quieras cambiar de banco no tuvieras que pensar... mmm en cual había que poner un "1" en RP0 o en RP1?...


Pues bien. Puedes hacer lo siguiente:
Código:
Banco0		macro
bcf STATUS,RP0
bcf STATUS,RP1
endm

Banco1 macro
bsf STATUS,RP0
bcf STATUS,RP1
endm

Banco2 macro
bcf STATUS,RP0
bsf STATUS,RP1
endm

Banco3 macro
bsf STATUS,RP0
bsf STATUS,RP1
endm

padigital macro ;Para el correcto funcionamiento de esta macro es
movlw 06 ;necesario que antes se esté posicionado en el banco 1.
movwf ADCON1
endm


Con esto, estas creando unas macros y te servirán para no tener que escribir tanto en el código cada vez que quieras cambiar de banco. Será menos tedioso programar en ASM.


Estas macros lo que hacen es sustituir en el código donde pongas "Banco0" por lo que pone ahí. No es como una subrutina o función a la cual llamas y realizas un salto de PC para ejecutarla. Con esto directamente le mandas a el compilador que sustituya "Banco 0" por "bcf STATUS,RP0 / bcf STATUS,RP1".

Esto puedes guardarlo en la misma carpeta donde vayas a compilar tu programa y llámalo "macros.inc" por ejemplo. Luego, para incluirlo en tu programa, en vez de ponerlo abajo, ponlo arriba, encima de la declaración de variables, debajo de la configuración del PIC.

Código
  1. list p=16f876, f=INHX8M, r=hex
  2. include "p16f876.inc"
  3. include "macros.inc"
  4.  
  5. CONDIR equ 20
  6. CONCAR equ 21
  7.  
  8.  
  9. org 0

Pruébalo. Espero que te sirva.


Un saludo.


En línea

El final del camino no está determinado, lo determinamos nosotros mismos paso a paso, día a día, y se puede cambiar.
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Dudas para crear temporizador en ensamblador
« Respuesta #11 en: 1 Abril 2013, 22:55 pm »

Gracias Firos como siempre  me gusta mucho tus respuestas, despúes de las vacaciones me lo miraré con más detenimiento. Si veo que no entiendo algo ya lo diré  ;D Salu2


En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Dudas para crear temporizador en ensamblador
« Respuesta #12 en: 20 Abril 2013, 00:00 am »


Cuando comprobamos si un interruptor está a "1" o a "0" hay que eliminar rebotes.


Ejemplo de antirebores de un pulsador. Este antirebores es por software y funciona de maravilla, es para ahorrar más electrónica.

Código
  1. ; Cada vez que presiona el pulsador conectado a la línea RA4 conmutará el estado de
  2. ; un LED conectado a la línea RB1.
  3. ;
  4. ; ZONA DE DATOS **********************************************************************
  5.  
  6. LIST P=16F84A
  7. INCLUDE <P16F84A.INC>
  8. __CONFIG _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
  9.  
  10. CBLOCK 0x0C
  11. ENDC
  12.  
  13. #DEFINE Pulsador PORTA,4 ; Pulsador conectado a RA4.
  14. #DEFINE LED PORTB,1 ; Línea donde se conecta el diodo LED.
  15.  
  16. ; ZONA DE CÓDIGOS ********************************************************************
  17.  
  18. ORG 0 ; El programa comienza en la dirección 0.
  19. Inicio
  20. bsf STATUS,RP0 ; Acceso al Banco 1.
  21. bsf Pulsador ; La línea RA4 se configura como entrada.
  22. bcf LED ; Se configura como salida.
  23. bcf STATUS,RP0 ; Acceso al Banco 0.
  24. bcf LED ; En principio diodo LED apagado.
  25. Principal
  26. btfsc Pulsador ; ¿Pulsador presionado?, ¿(Pulsador)=0?
  27. goto Fin ; No. Vuelve a leerlo.
  28. call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
  29. btfsc Pulsador ; Comprueba si es un rebote.
  30. goto Fin ; Era un rebote y sale fuera.
  31. btfsc LED ; Testea el último estado del LED.
  32. goto EstabaEncendido
  33. EstabaApagado
  34. bsf LED ; Estaba apagado y lo enciende.
  35. goto EsperaDejePulsar
  36. EstabaEncendido
  37. bcf LED ; Estaba encendido y lo apaga.
  38. EsperaDejePulsar
  39. btfss Pulsador ; ¿Dejó de pulsar?. ¿(Pulsador)=1?
  40. goto EsperaDejePulsar ; No. Espera que deje de pulsar.
  41. Fin
  42. goto Principal
  43.  
  44. INCLUDE <RETARDOS.INC>
  45. END

Saludo.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Temporizador para archivo .Bat
Scripting
joaquinrekpo 2 8,862 Último mensaje 7 Noviembre 2014, 17:28 pm
por joaquinrekpo
Encender un led cada 0.5 segundos usando temporizador en ensamblador
Electrónica
EIVL14 1 4,020 Último mensaje 30 Diciembre 2016, 07:49 am
por Meta
Cómo crear un temporizador para apagar tu PC de forma automática
Noticias
wolfbcn 0 1,791 Último mensaje 31 Diciembre 2016, 22:04 pm
por wolfbcn
ensamblador dudas
ASM
snowspring 2 2,793 Último mensaje 18 Mayo 2018, 18:18 pm
por snowspring
Temporizador en menú para cerrar venta.
Scripting
MaX2 3 2,630 Último mensaje 10 Febrero 2022, 22:56 pm
por .xAk.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines