Autor Tema: Contador con PIC16F84  (Leído 7188 veces)

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

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
Contador con PIC16F84
« en: 16 de Junio de 2004, 11:38:00 »
HOla a to2.

Necesito ayuda para realizar lo siguiente.

Tengo k hacer un circuito que cuente de 0 asta 8 con un 16F84

He pensado utilizar las ocho lineas el puerto B como entradas de la señal, el PIC deberia sumar el numero de "1" que hay en el puerto B, en el momento k alguna de las entradas pase de 1 a 0, hay que repetir la suma. Para representarlos se enviaria  al puerto A ( que debe estar configurado como salida) en codigo binario, luego con un BCD a siete segmentos se representara el numero resultante de la suma en un display de 7 segmentos de catodo comun.

Esto circuito lo quiero pk me cuente el numero de interruptores que tengo encendidos.

A ver si alguien me puede hachar una mano con el programa xk estoy mas perdido k un hijo puta en el dia del padre.

Salu2


Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Contador con PIC16F84
« Respuesta #1 en: 16 de Junio de 2004, 13:31:00 »
i        var byte
valor var byte
         trisb=0
loop: for i=0 to 8
         valor=i
         gosub   bin2seg
         pause   1000
         poke    portb,valor
         next i
         goto loop
bin2seg: Lookup valor,  [$40,$79,$24,$30,$19,$12,$02,$78,$00,$18],portb
         Return
Este programa cuenta de 0 a 8 y lo representa en un display 7 segmentos.
salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #2 en: 16 de Junio de 2004, 13:50:00 »
Muchas gracias x tu ayuda xo con este programa se conecta el display al PIC y si es asi no puedo usar el puerto B para introducir los "1" que haran k el PIC sume.

Si me equivoco correjeme.

Seria pedir mucho k el programa fuera en asm??

Salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #3 en: 17 de Junio de 2004, 11:25:00 »
El esquema seria este.
http://piries.webcindario.com/conta8pic.jpg

Se podria hacer con una tabla de verdad y una subrutina k sacara la informacion como indica la tabla?? saldria una tabla imensa.
Hay otra manera de hacerlo??

El valor de las resistencias de RB es correcto??

La he calculado teniendo en cuenta k como el puertoB esta a nivel bajo, entre todos les puede entrar un maximo de 150mA

Lo que hecho es 140/8 =17mA para saber la intensidad que puede entrar en cada patilla, he utilizado 140 para dejar un margen de seguridad.

Con la ley de ohm 12-5/0.017 = 411 ohm==> valor comercial=430 ohm.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Contador con PIC16F84
« Respuesta #4 en: 17 de Junio de 2004, 12:03:00 »
Agrégale las definiciones y demás cosas que le falten al programa:
-----------


resultado equ 0x10

; declara entradas y salidas y lo que falte

...

bucle clrf resultado
btfsc portb,0
incf resultado
btfsc portb,1
incf resultado
btfsc portb,2
incf resultado
btfsc portb,3
incf resultado
btfsc portb,4
incf resultado
btfsc portb,5
incf resultado
btfsc portb,6
incf resultado
btfsc portb,7
incf resultado
movf resultado,0
movwf porta
goto bucle

----------

Lo que hace es preguntar si se oprimió en botón en RB0; si sí se hizo incrementa resultado, si no, se va a preguntar RB1. Cuando termina las 8 entradas pasa el resultado al puerto A y vuelve a testear los botones.

No olvides poner resistencias pull-up en los botones, para que cuando cualquier botón esté abierto no haya estado de alta impedancia. Eso se hace así:


Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Contador con PIC16F84
« Respuesta #5 en: 17 de Junio de 2004, 12:32:00 »
bueno lo q dice el amigo migsantiago seria correcto, pero yo añadiria un condensador al pulsador para eliminar rebotes.
salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #6 en: 17 de Junio de 2004, 12:33:00 »
Muchas gracias!!!!! sois fantasticos, pues me pongo a definir entradas, salidas y esto y lo posteo, y si la e cagafo x ai me correjis.

X cierto es correcto es eskema que he puesto??

Es k no ay botones, a las distintas entradas del pic les llega una señal de 12voltios, provinente de otro circuito con interuptores de palanca y demas.

X cierto como se hace para postear fotos??

Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Contador con PIC16F84
« Respuesta #7 en: 17 de Junio de 2004, 13:23:00 »
Con 5v t vale pa lo q quieres hacer.
el esquema t lo ha puesto el amigo migsantiago.
Donde pone Vdd son 5v..ademas puedes añadirle un condensador para los rebotes q se puedan producir.
salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #8 en: 17 de Junio de 2004, 13:54:00 »
Se k con 5v hay bastante, pero utilizo 12 por la siguiente razon.

La señal que excita el PIC proviene de un circuito con 8 interruptores de palanca de 6 patillas y 3 posiciones.

En la parte superior del interruptor hay conectados +12 y massa, la salida son 12v.

En la parte inferior hay conectados +12 y -5, con lo que la salida son 7v.

La linea de 12v esta conectada a la patilla del medio del interuptor, de esta forma, mandara señal al pic tanto si el interruptor esta arriba como abajo.

Me he explicado bien?.

El circuito tiene que ser como lo he puesto yo, xo con los errores corregidos, pk seguro k ay + de uno.

http://piries.webcindario.com/conta8pic.jpg

Lo del bcd a 7 segmentos no toy mu seguro, xo es la unica forma de poderlo representar en el display no?? pk utilizar un pic + grande, pues como k no pk ya andaria perdido del todo.

Salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #9 en: 17 de Junio de 2004, 13:57:00 »
Ahi va el programilla "terminado" y lo pongo entre comillas pk no se si tara ok lo k e echo.



;***************************contador0_8.asm**************************
;
;
;ZONA DE DATOS*************************************************

   LIST   P=16F84      ;El ucontuolador utilizado

;ETIQUETAS DE PROGRAMA*********************************************

RESULTADO    EQU   0x10

;zona de codigos*****************************************************

   ORG   0      ;El programa empieza en la direccion 0

INICIO   
   bsf           STATUS,RP0     ;Me situo en el banco 1
   clrf   TRISA      ;Las 5 lineas del Puerto A se configuran como salida
   movlw   b"11111111"   ;Las 8 lineas del Puerto B se configuran como entrada   
   movwf   TRISB
   bcf   STATUS,RP0   ;Acceso al Banco 0

PRINCIPAL    
   clrf    RESULTADO   ;Borra resultado
   btfsc    PORTB,0                    ;Testea RB0, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB0= 1 incrementa el resultado
   btfsc    PORTB,1                    ;Testea RB1, si =0 salta al siguiente      
   incf    RESULTADO    ;Si RB1= 1 incrementa el resultado
   btfsc    PORTB,2                    ;Testea RB2, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB2= 1 incrementa el resultado
   btfsc    PORTB,3                    ;Testea RB3, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB3= 1 incrementa el resultado
   btfsc    PORTB,4                    ;Testea RB4, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB4= 1 incrementa el resultado
   btfsc    PORTB,5                    ;Testea RB5, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB5= 1 incrementa el resultado
   btfsc    PORTB,6                    ;Testea RB6, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB6= 1 incrementa el resultado
   btfsc    PORTB,7                    ;Testea RB7, si =0 salta al siguiente
   incf    RESULTADO    ;Si RB7= 1 incrementa el resultado
   movf    RESULTADO,0    ;??????
   movwf    PORTA       ;envia el resultado al Puerto A
   goto    PRINCIPAL    ;crea un bucle cerrado

   END         ;fin de programa

Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Contador con PIC16F84
« Respuesta #10 en: 17 de Junio de 2004, 14:46:00 »
A simple vista está todo ok.
Simulalo a ver que tal y cuentas que tal.
salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #11 en: 17 de Junio de 2004, 14:53:00 »
Simularlo en mi caso es un gran problema, uso el simulador de mplab, xo no se si es pk es pc es mu rapodo o lo k sea k cuando simulo un programa no puedo ver nada. Solo veo numeros k se mueven a una velocidad de vertigo, imposible de saber k es lo k esta pasando. No se si desenpolvar mi viejo pc y hacerlo con ese. El pc k tengo ahora es un p4 3.2 ghz el viejo es un p2 a 350mhz.

Alguien k tenga un pc rapido le pasa lo mismo k a mi??

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Contador con PIC16F84
« Respuesta #12 en: 17 de Junio de 2004, 15:09:00 »
No puedo simularlo bien, xo me de muchos errores de ensamblado.


Error[108]  : Illegal character (*)
Error[113]  :Symbol not previously defined (STATUS)
Error[113]  : Symbol not previously defined (RP0)
Error[113]  : Symbol not previously defined (TRISA)
Error[113]  : Symbol not previously defined (TRISB)
Error[113]  : Symbol not previously defined (STATUS)
Error[113]  : Symbol not previously defined (RPO)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTB)
Error[113]  : Symbol not previously defined (PORTA)
Halting build on first failure as requested.
BUILD FAILED: Thu Jun 17 22:00:08 2004

Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Contador con PIC16F84
« Respuesta #13 en: 17 de Junio de 2004, 16:14:00 »
Claro se me habia pasao....tienes q definir los registros status y demas.
status equ 03
porta  equ 05
portb  equ 06
yo no utilizo a mplab pero supongo q podrás simularlo paso a paso, porque se supone q t lo simula a la misma frecuencia de reloj del pic.



Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Contador con PIC16F84
« Respuesta #14 en: 17 de Junio de 2004, 16:17:00 »
otra cosilla: date cuenta q t sale un error q t dice illegal caracter *.
eso es porque tienes q separar los comentarios con punto y coma.
por ejemplo...
;*************contador0_8.asm*************
y así con los demás.
suerte