Autor Tema: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos  (Leído 2715 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
hola para pedirles un favor
me encontré este código en la web  maneja un display 7 segmentos  con un pulsador en el puerto rb7 que al presionarlo cuenta de 0 a 9  
la ayuda que les pido  si me pueden hacer el favor de ayudar a modificar el código para que quede el pulsador en el puerto rao

les adjunto el código y el esquema en proteus y el hex
gracias por la colaboración
« Última modificación: 22 de Enero de 2010, 16:04:25 por underwol2 »

Desconectado juan47

  • PIC10
  • *
  • Mensajes: 27
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #1 en: 23 de Enero de 2010, 13:56:06 »
Hola underwol2
Para efectuar los cambios que deseas hacer deves tener presente que el pulsador
estara en porta y en el bit 0 con lo cual lo primero sera seguir el listado del codigo y
efectuar los cambios donde procedan
Primero camviar donde se definen las variables , pulsador que que tiene un valor de 7 por 0
Pulsador  equ  0
Segundo sera configurar la puerta A en su bit 0 como entrada dentro de la etiqueta inicio despues de trisb poner
movlw  b'00000001'
movwf  trisa
tercero sera cambiar portb por porta
donde te dice btfss portb,pulsador deveras cambiarlo por btfss porta,pulsador
endefinitiva donde te encuentras

instruccion    portb,pusador
cambiarlo por
instruccion    porta,pulsador
el resto de instrucciones debes dejarlos tal cual
Espero haberte ayudado
Recomendarte des un paseo por el foro donde muchos compañeros han efectuado
verdaderas maravillas en este mundo de los microcontroladores y podras encontrar
codigo en asm para efectuar numerosas practicas
Un saludo

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #2 en: 24 de Enero de 2010, 13:57:36 »
gracias por responder mi inquietud haré las pruebas correspondiente y te comento
soy nuevo en esto de los pic i comprende ras que no tengo profesor solo autoaprendizaje y me toca luchar  para aprender sobre pic y solo cuento con la ayudas de personas que colaboran con los novatos sin burlarse
gracias  por las respuestas es muy importante para un novato en el tema

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #3 en: 24 de Enero de 2010, 15:47:41 »
me funciono como yo quería ahora ya lo puedo controlar desde el puerto ra0 

podría pedirte otro favor  como me estoy entrenando con los pic especialmente 16f84a y 16f628
 e estado por poner todos los puertos rbo hasta rb7 como salidas o sea que me alumbren todos los led

me intereso también en poner dos led  intermitentes

para no confundirme mucho
tendrás algun código que me puedas dar sobre estos temas
gracias por la ayuda

Desconectado juan47

  • PIC10
  • *
  • Mensajes: 27
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #4 en: 24 de Enero de 2010, 16:51:09 »
Hola
Yo tambien soy autodidacta y como tu tambien he agradecido mucho una mano
Podras encontrar ejemplos de suky en este foro en el apartado

Microcontroladores PIC/Primeros pasos-Iniciacion a los microcontroladores/Mis primeros programas en ASM.PIC16F84A y16F628

Un Saludo

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #5 en: 25 de Enero de 2010, 00:02:43 »
gracias por  la respuesta ya localice el link e estado asiendo unas practicas con ejemplos de la web y me tiene dando vueltas las rutinas de retardo sobre el ejemplo

;-----------Rutina de Retardo-----------
retardo movlw 1 ; Aquí se cargan los registros
movwf reg1 ; reg1, reg2 y reg3 con los valores 10, 20 y 30
tres movlw 2 ; respectivamente
movwf reg2 ; Decrementos
dos movlw 3 ; Decrementos
movwf reg3 ; Decrementos
uno decfsz reg3,1 ; Aquí se comienza a decrementar
goto uno ; Cuando reg3 llegue a 0
decfsz reg2,1 ; le quitare 1 a reg2
goto dos ; cuando reg2 llegue a 0
decfsz reg1,1 ; le quitare 1 a reg1
goto tres ; cuando reg1 llegue a 0
retlw 00 ; regresare al lugar de donde se hizo la llamada
END
;-----------Final----------------

en este ejemplo rota automaticamente las secuencia de led  el primer fallo que tuve fue que los tiempo de retardo eran muy bajos o algo así y tenia que desactivar el cristal de frecuencia y acercarle la mano y funcionaba y lo solucione  solo lo incremente  20,40,60
y con eso ya me funciono con el cristal de frecuencia sin necesidad de acercarle la mano el asunto es son tres registros y los nombraron reg1,reg2,reg3 con valores  10,20,30
el tema lo centro en los reg  que hacen los tres registro con los valores y el prescaler estoy estudiando y algo e comprendido necesito practica y saber para que colocaron  los valores

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #6 en: 25 de Enero de 2010, 01:51:54 »

Saludos

Citar
uno decfsz reg3,1 ; Aquí se comienza a decrementar
goto uno ; Cuando reg3 llegue a 0

Está parte del código hace lo siguiente por ejemplo si reg3 = 20 que pasa la función decfsz reg3,1 decrementa dicho registro y  salta si es cero entonce la instrucción se efectua 20 veces, ahora como la función decfsz se ejecuta en un ciclo de reloj y la función goto, return, y retfie se ejecutan en 2 ciclos del reloj por ejemplo si tenemos un cristal de 4Mhz la frecuencia del oscilador sera de 1Mhz por lo tanto, un ciclo de reloj equivale a 1us por lo tanto, el tiempo que demora esté pequeño código es de (3*20)us = 60us muy poquito

Ahora cuando ya se ha decrementado hasta llegar hasta cero decrementa reg2 y si reg2 = 50 ahora el código se demora en ejecutarce (60 + 5)us * 50 = 3250us y lo mismo pasa con el otro registro siguele el seguimiento al código y podrás llegar a una fórmula o un modelo matemático que te puede ayudar a cuadrar el tiempo que tu quieres obtener, si lo que quieres es exactitud los timer son la mejor opción.

Espero que te halla servido la explicación.
Un saludo desde Pereira - Colombia

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #7 en: 25 de Enero de 2010, 22:28:29 »
muchas gracias  por responder tenia esa duda y estaba un poco confundido con los ciclos del reloj y los cálculos de los retardos 
te refieres a que  decrementa  el  reg hasta llegar acero y salta y toma el segundo registro uno auno asta terminar los tres reg y  salta  al terminar de decrementar un registro , por que se utilizaban los tres registros y como los localizo en el pic   

ahora tengo mejor claridad en el tema  de interrupciones  y supongo que es para ayudar a controlar la velocidad de procesamiento de una orden
decrementando el registró  hasta llegar acero y seguir

podría utilizar un solo reg para hacer encender el led y mantenerlo encendido por 2 y apagarlo  por dos segundos 
o  tendre que utilizar dos o tres  registros

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #8 en: 25 de Enero de 2010, 23:19:53 »
Hola, aqui tienes un programita muy util para generar o configurar demoras  :mrgreen:
generador de demoras en assembler

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #9 en: 26 de Enero de 2010, 00:42:48 »

Pues lo primero debes tener en cuenta que el micro tiene una memoria en la cual el usuario la maneja que el desee,

Si te fijas al principio puedes encontrar lo siguiente por ejemplo:

reg          equ        0x20
reg2        equ        0x21
reg3        equ        0x22

lo que quiere decir el código es que el micro ha nombrado 3 de sus registro de proposito general con los nombre reg, reg2, reg3 debes tener en cuenta que son registros de 8 bit es decir, el valor máximo que puedes manejar en ellos es de 255.

Con respecto a lo de la interrupciones el código que hace la demora no es una interrupción es una rutina que tiene como característica que cuando se encuentra con la instrucción return retorna al PCL + 1, si deseas aprender de las interrupciones de recomiendo que consultes mi hilo sobre manejo de interrupciones ahy podras encontrar teoría y alguno ejemplo.

con respecto a tu tercera pregunta Si se puede pero resulta algo engorroso debido a que deberias poner muchos no opere (Nop) y se vuelve antioperativo el código.

Saludos.
Un saludo desde Pereira - Colombia

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #10 en: 26 de Enero de 2010, 19:23:51 »
gracias por la colaboración me pondré analizar con los datos que e podido reunir gracias ala colaboración me dedicaste el tiempo requerido estaré consultando mas adelante algotra duda 
te podre localizar con algun correo personal donde podamos  chatear :-/

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: cambiar el pulsador de puerto rb7 y pasarlo al ra0 contador 7segmentos
« Respuesta #11 en: 27 de Enero de 2010, 00:47:24 »

Saludos

Fue con mucho gusto, te recomiendo que antes de poner un hilo o hacer una consulta (MP) primero busca en foro ya que hay bastante información en e,l si la duda perciste y definitivamente no encuentras la respuesta abre un hilo para compartir con los demás compañeros del foro la posible soluciones, con respecto al MP no hay problema si puedo respondo.
Un saludo desde Pereira - Colombia