Puedes encontrar la respuesta por aquí.
http://www.pic16f84a.org/index.php?...gina-de-256-bytes&catid=38:pic16f84&Itemid=60
Saludo.
http://www.pic16f84a.org/index.php?...gina-de-256-bytes&catid=38:pic16f84&Itemid=60
Saludo.
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
El CP incrementará en 1 el registro CONTADOR y evalúa el valor, si no es cero, ejecuta línea siguiente que es GOTO VOLVER, el cual se dirige de nuevo a la línea VOLVER INCFSZ CONTADOR el cual volverá a incrementar en 1 y evalua el valor, si es cero salta la línea GOTO VOLVER y ejecuta la instrucción INCF PORTA. Esta última línea, el programador pondrá la instrucción que necesite ejecutar...
No.Hola a todos, excelente el tuto... una consulta, la instrucción movf registro,w al mover el valor desde registro a w, borra lo que hay en registro?
Hola a todos, excelente el tuto... una consulta, la instrucción movf registro,w al mover el valor desde registro a w, borra lo que hay en registro?
Lord Chango dijo:MOVF VF,W ;CENTENA
SUBLW .100
BTFSS STATUS,C
GOTO $+4 ;-->DECENA
MOVWF VF
INCF FC,F ;INCREMENTA DIGITO CENTENA
GOTO $-6 ;-->CENTENA
MOVF VF,W ;DECENA
SUBLW .10
BTFSS STATUS,C
GOTO $+4 ;-->UNIDAD
MOVWF VF
INCF FX,F ;INCREMENTA DIGITO DECENA
GOTO $-6 ;-->DECENA
MOVF VF,W ;UNIDAD
SUBLW .1
BTFSS STATUS,C
GOTO $+4 ;-->LCD
MOVWF VF
INCF FI,F ;INCREMENTA DIGITO UNIDAD
GOTO $-6 ;-->UNIDAD
-->LCD
Hola a todos! Aprovecho este tema para postear una duda, estoy haciendo un conversor de binario a decimal separados por digitos, es decir, de un numero binario obtengo unidades, decenas y centenas, pero no puedo hacerla funcionar.
Esto es lo que tengo ahora:
VF es el valor a convertir; FI, FX y FC son las unidades, decenas y centenas respectivamente.
Esta mal el planteamiento? Porque no hay forma de hacerlo funcionar en el MPLAB.
Desde ya gracias!
Nunca pedi el codigo, por eso publique el mio... Todavia tengo ganas de renegar por mi cuenta... Por ahora...NO VOY A DARTE EL CODIGO... pero aquí va algo para tener en cuenta
Hola a todos, ando un poco perdido con este temita, hice una rutina para contar cada vez que pulso un boton y funciona de maravillas solo que llega a 255 y luego pasa a cero, no doy con la idea para hacer que cuente indefinidamente.
Pongo el tramo de programa que me esta maltratando a ver si entre tantas mentes hay alguna que me tire una idea.
btfss porta,5 ;;controlo si el porta se puso alto
goto $-1 ;;si es no vuelvo atras hasta que pulse
btfsc porta,5 ;;si pulso vino aqui y controlo que se ponga bajo
goto $-1 ;;si es no vuelvo atras hasta que suelte
incf CONTADOR1 ;"si solto incremento el contador
call conversion1 ;;llamo a "conversion1"
call lectura ;;y llamo a lectura hasta que termine de leer
goto $-4 ;"vuelvo a ver si se pone en alto otra vez para aumentar
;"el contador
Con la rutina lectura logro ver el conteo en un display.
Gracias
Hola a todos, ando un poco perdido con este temita, hice una rutina para contar cada vez que pulso un boton y funciona de maravillas solo que llega a 255 y luego pasa a cero
incf contador_l,f;
btfsc status,z;
incf contador_h_f;
Hola, bueno me parece raro que te funcione por ese ultimo goto, porque cuando termine con la funcion lectura retrocedera 4 direcciones de memoria y queda en un goto $-1 (donde verificas que soltaron la tecla).
Disculpas, puse una de las tantas pruebas, la real lo hace volver 6 direcciones y funciona bien
La funcion conversion supongo que es para convertir a BCD o 7seg, si es asi,
No, salgo a un LCD, con los BCD ya tengo idea de como llegar
Por cierto, que hace la funcion lectura?
no... pues no puedes resolver tu problema... nunca vas a poder hacer que el PIC cuente mas de 255 ya que es un procesador de 8 bits... y el numero mas grande que puedes representar en 8 bits es 255, para poder guardar valores mas grandes necesitas hacerlo en varios registros, con 2 tienes 16 bits y [LATEX]2^1^6[/LATEX]=65535, usa esta rutina como ejemplo:
Código:incf contador_l,f; btfsc status,z; incf contador_h_f;
contador_h_f seria el segundo contador?
deberia ampliar la rutina de conversion1 para las unidades de mil y las decenas de mil?
no me doy cuenta de como implementar ambos contadores, deberia leer 16 bits y no se como, ya me supera
error de dedo.... en vez de ser contador_h_f debe ser contador_h,f y si... contiene la parte alta del conteo
Recuerda que con 16 bits vas a poder contar hasta 65535, si necesitas un numero mas alto hay que seguir añadiendo variables y las rutinas van a ser cada vez mas complejas.... es el precio a pagar por usar 8 bits..
movlw H'05'
xorfw reg1,w
btfss status,z
goto false
goto true
clrf reg1 ;reg1=0
ciclo: ....
....
....
incf reg1 ;reg1++
movlw H'10' ;reg1<10?
subwf reg1,w ;
btfss status,z ;
goto ciclo
movlw low ~.12500
movwf TMR1L
movlw high ~.12500
movwf TMR1H