TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Meta en 07 de Febrero de 2008, 00:24:05

Título: Lógica a 16F84A
Publicado por: Meta en 07 de Febrero de 2008, 00:24:05
¿Es muy difícil hacer el funcionamiento de la lógica al 16F84A en ASM?

(http://usuarios.lycos.es/reparaplaystation/cs/logica_1.jpg)
Título: Re: Lógica a 16F84A
Publicado por: todopic en 07 de Febrero de 2008, 00:42:30
Hola, no es dificil, solo que la salida es de un solo bit, y la logica tambien es de un solo bit
pero las entradas estan en un puerto (de 8 bit) de los cuales solo empleas 4, y cada uno de esos bit, estan en "posiciones" diferentes, que tendras que leer, luego "alinear" con rotaciones  :mrgreen:
Esto lo pienso hablando o interpretando la "logica" del circuito

Mas simple seria emplear btfss o  btfsc e ir marcando flags, para luego implementar la and final

Suerte!

Norberto
Título: Re: Lógica a 16F84A
Publicado por: Cryn en 07 de Febrero de 2008, 00:51:02
he escuchado las famosas "listas" creo

ahi testeas la entrada y saltas a una posición del codigo de programa correspondiente (y sacas el resultado), sumando al PC el numero leído, hay creo varios ejemplos por el foro
Título: Re: Lógica a 16F84A
Publicado por: Meta en 07 de Febrero de 2008, 10:45:46
Muchas gracias a todos.

En autómatas si se hacerlo ya que en un cilco superior me enseñaron, y en unos casi 10 autómatas de diferentes fabricantes. Aunque no lo creas, el PIC es más difícil de manejar que un PLC. Eso si, el automata es de 16 Bits y 32.

PD:Creo que algunos me conocen muy bien.


EDIT:

Código: ASM
  1. TABLA DE LA VERDAD                             
  2. RB3     RB2     RB1     RB0     RA0
  3. 0       0       0       0       0
  4. 0       0       0       1       0
  5. 0       0       1       0       0
  6. 0       0       1       1       0
  7. 0       1       0       0       0
  8. 0       1       0       1       1
  9. 0       1       1       0       1
  10. 0       1       1       1       1
  11. 1       0       0       0       0
  12. 1       0       0       1       1
  13. 1       0       1       0       1
  14. 1       0       1       1       1
  15. 1       1       0       0       0
  16. 1       1       0       1       1
  17. 1       1       1       0       1
  18. 1       1       1       1       1
Título: Re: Lógica a 16F84A
Publicado por: BrunoF en 17 de Febrero de 2008, 22:35:26
Bueno, sin tener que meterte con operadores logicos y a nivel de bit...podrías fácilmente hacer:

Código: ASM
  1. Loop
  2.    call      Ejecuta
  3.    addlw  0                    ;afectar flag Z
  4.    btfsc   STATUS,Z       ;setear RA0 segun corresponda...
  5.    bcf     PORTA,0              
  6.    btfss  STATUS,Z
  7.    bsf     PORTA,0
  8.    goto   Loop
  9.  
  10. Ejecuta
  11.      movf PORTB,w
  12.      andlw 0x0F
  13.      addwf PCL,F
  14.      retlw 0  ;0
  15.      retlw 0  ;1
  16.      retlw 0  ;2
  17.      retlw 0  ;3
  18.      retlw 0  ;4
  19.      retlw 1  ;5
  20.      retlw 1  ;6
  21.      retlw 1  ;7
  22.      retlw 0  ;8
  23.      retlw 1  ;9
  24.      retlw 1  ;10
  25.      retlw 1  ;11
  26.      retlw 0  ;12
  27.      retlw 1  ;13
  28.      retlw 1  ;14
  29.      retlw 1  ;15