Autor Tema: necesito ayuda con este pekeño proyecto  (Leído 18312 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #15 en: 04 de Mayo de 2003, 13:16:00 »
Cita:
Hola Norberto

Entiendo el planteamiento que me dices pero lo me no se es como plasmarlo a asm, seguro k hay una forma mas sencilla de hacerlo ,por k mi planteamiento a asm es un poko pobre ya que estoy aprendiendo, yo estaria jugando solo con 4 entradas del pic 16f84a , y lo k me preguntaba hay alguna manera posible de decir en asm ,
si porta=0001 entonces rb0=on
si porta=0010 entonces rb0=off

Saludos espero respuesta

Jachy

Desconectado franda

  • PIC10
  • *
  • Mensajes: 32
RE: necesito ayuda con este pekeño proyecto
« Respuesta #16 en: 04 de Mayo de 2003, 14:07:00 »
Test_RA0   BTFSS   PORTA,0
                  GOTO    Test_RA1
                  BSF     PORTB,0

Test_RA1   BTFSS   PORTA,1
                  GOTO    Test_RA0
                  BCF     PORTB,0
                  GOTO    Test_RA0

Lo he hecho muy rápido espero que esté bien

Un saludo

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #17 en: 04 de Mayo de 2003, 14:21:00 »
pero Test_RA0  k seria un campo de memoria donde diriamos que seria 0001 , necesito mas pistas estoy un poco verde.

Salu2 Jachy

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #18 en: 06 de Mayo de 2003, 03:14:00 »
Ok Franda ya entiendo en realidad es mas o menos lo que hacia yo en el mio , una preguntita que no se si es posible se podria testear ra0,ra1,ra2,ra3 de una tirada me esplico

ejm. k seguro que no es asi ni queriendo.

If porta,0,1,2,3 = 0,0,0,1 then rb0 = 1
If porta,0,1,2,3 = 1,0,0,0 then rb0 = 0

esto es una suposicion k ya te digo no controlo mucho ,¿se podria hacer esto?

Saludos Jachy

Desconectado franda

  • PIC10
  • *
  • Mensajes: 32
RE: necesito ayuda con este pekeño proyecto
« Respuesta #19 en: 06 de Mayo de 2003, 09:02:00 »
Hola jachy. Sí que se puede, es así:

Test_1      MOVFW   PORTA

SUBLW       0x01          ; Si RA3=RA2=RA1=0 y RA0=1 entonces RB0=1

BTFSS         STATUS,Z

GOTO Test_2

BSF    PORTB,0            ; RB0=1

Test_2      MOVFW   PORTA

SUBLW       0x08          ; Si RA2=RA1=RA0=0 y RA3=1 entonces RB0=0

BTFSS         STATUS,Z

GOTO Test_3

BCF    PORTB,0            ; RB0=0

Test_3         etc

Puede haber más de un bit activo, lo único que hay que hacer es modificar el valor de los números que acompañan al SUBLW

Si tienes alguna duda del programa, pregunta

Un saludo










Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #20 en: 06 de Mayo de 2003, 10:48:00 »
Eres genial chiko, claro k te are mas preguntas,jejejeje lo que voy a aprender contigo franda,
lo único que hay que hacer es modificar el valor de los números que acompañan al SUBLW ,¿como se yo los valores?¿hay algun tipo de tabla? ¿como llegamos a k 0x08 es igual a esto RA2=RA1=RA0=0 RA3=1?

Gracias por tu tiempo

Un Saludo Jachy

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: necesito ayuda con este pekeño proyecto
« Respuesta #21 en: 06 de Mayo de 2003, 13:29:00 »
Todas las comparaciones son binarias.
Por lo tanto el bit 0 vale 1 si esta activo y 0 si esta desactivado, igual para todos los bits, pero multiplicado por su peso dentro del Byte.



Esto es: si el bit 3 esta activo vale 8, pero si tambien esta activo el bit 2 el valor sera de 8 + 4 (peso del bit 2), lo que da 12.

O sea que si buscas comparar, para mi es mejor siempre hacerlo con XORLW y no con resta o SUBLW, pues el anterior te activa el bit de cero solo y solo si las cifras son iguales..
Por otro lado y para tener mejor claridad en este caso es mejor utilizar la notacion binaria en la expresion, porque facilita la comprension de la comparacion y su resultado.
Por ejemplo:
XORLW B"00110101"

sera mas claro que

XORLW 0x35  o   XORLW  D"35"

Mucha suerte!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #22 en: 06 de Mayo de 2003, 17:21:00 »
 Ya lo pillo MGLSOFT,claro k si es mas sencillo porlomenos para mi k tengo un nivel bajo en ASM , pero me ha salido una duda,

XORLW B"00110101"
entonces con B"00110101" seria como si se dijese k:
ra0= 1,ra1=0, ra2=1, ra3=0, ra4=1, ra5=1, ra6=0 y ra7=0

seria de derecha a izq. y en mi caso que utilizaria ra0,ra1,ra2,ra3, ¿como seria?

0001 =  B"0001"
0010 =  B"0010"
0100 =  B"0100"
1000 =  B"1000"

saludos jachy

Desconectado franda

  • PIC10
  • *
  • Mensajes: 32
RE: necesito ayuda con este pekeño proyecto
« Respuesta #23 en: 07 de Mayo de 2003, 01:00:00 »
Los otros bits también hay que ponerlos:

0001 = b"00000001"    ,  o bien en hexadecimal (no escribes tanto) (se hacen grupos de 4 y se basa a decimal) 0x01
0010 = b"00000010"    , o bien en hexadecimal 0x02
0100 = b"00000100"    , o bien en hexadecimal 0x04
1000 = b"00001000"    , o bien en hexadecimal 0x08

Otras ejemplos de combinaciones :

0011 = b"00000011"    , o bien en hexadecimal 0x03
1100 = b"00001100"    , o bien en hexadecimal 0x0C
1010 = b"00001010"    , o bien en hexadecimal 0x0A

10000010 = b"10000010"    , o bien en hexadecimal 0x82
11110100 = b"11110100"    , o bien en hexadecimal 0xF4
10011001 = b"10011001"    , o bien en hexadecimal 0x99

Saludos

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #24 en: 07 de Mayo de 2003, 02:47:00 »
ok franda, ya lo pillo ,pues eso me pongo manos a la obra y ya os cuento a todos a ver si funciona en el entrenador y si rula a terminar el programa en visual ,ya mandare respuesta.

Saludos Jachy

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: necesito ayuda con este pekeño proyecto
« Respuesta #25 en: 07 de Mayo de 2003, 06:42:00 »
Este es el foro que me gusta!!!


Los felicito muchachos!!!



Si hubiera tenido la mitad de la ayuda que aqui se da en cualquiera de los temas, no estaria quedando pelado ni hubiera quemado tantos PICs.



De nuevo los felicito, y a seguir....
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #26 en: 08 de Mayo de 2003, 04:30:00 »
Funciona porfin ,peroooooooo encender los led ok! pero no los consigue apagarlos es como si RA4 no funcionase.
Tomar el asm. ¿Donde tengo el error?

List   p=16F84
   Include   "P16F84.INC"
   org   0x00

Inicio   bsf   STATUS,RP0
   clrf   TRISB
   movlw   b"00011111"
   movwf   TRISA
   bcf   STATUS,RP0

Caso1   movfw   PORTA
   XORLW   0x01
   BTFSS   STATUS,Z
   goto   Caso2
   BSF   PORTB,0

Caso2   movfw   PORTA
   XORLW   0x11
   BTFSS   STATUS,Z
   goto   Caso3
   BCF   PORTB,0

Caso3   movfw   PORTA
   XORLW   0x02
   BTFSS   STATUS,Z
   goto   Caso4
   BSF   PORTB,1

Caso4   movfw   PORTA
   XORLW   0x12
   BTFSS   STATUS,Z
   goto   Caso5
   BCF   PORTB,1

Caso5   movfw   PORTA
   XORLW   0x03
   BTFSS   STATUS,Z
   goto   Caso6
   BSF   PORTB,2

Caso6   movfw   PORTA
   XORLW   0x13
   BTFSS   STATUS,Z
   goto   Caso7
   BCF   PORTB,2

Caso7   movfw   PORTA
   XORLW   0x04
   BTFSS   STATUS,Z
   goto   Caso8
   BSF   PORTB,3

Caso8   movfw   PORTA
   XORLW   0x14
   BTFSS   STATUS,Z
   goto   Caso9
   BCF   PORTB,3

Caso9   movfw   PORTA
   XORLW   0x05
   BTFSS   STATUS,Z
   goto   Caso10
   BSF   PORTB,4

Caso10   movfw   PORTA
   XORLW   0x15
   BTFSS   STATUS,Z
   goto   Caso11
   BCF   PORTB,4

Caso11   movfw   PORTA
   XORLW   0x06
   BTFSS   STATUS,Z
   goto   Caso12
   BSF   PORTB,5

Caso12   movfw   PORTA
   XORLW   0x16
   BTFSS   STATUS,Z
   goto   Caso13
   BCF   PORTB,5

Caso13   movfw   PORTA
   XORLW   0x07
   BTFSS   STATUS,Z
   goto   Caso14
   BSF   PORTB,6

Caso14   movfw   PORTA
   XORLW   0x17
   BTFSS   STATUS,Z
   goto   Caso15
   BCF   PORTB,6

Caso15   movfw   PORTA
   XORLW   0x08
   BTFSS   STATUS,Z
   goto   Caso16
   BSF   PORTB,7

Caso16   movfw   PORTA
   XORLW   0x18
   BTFSS   STATUS,Z
   goto   Caso1
   BCF   PORTB,7

end


Tabla hex bin
   hexadecimal   BINARIO      
   1   1   ON   RB0
   11   10001   OFF   
   2   10   ON   RB1
   12   10010   OFF   
   3   11   ON   RB2
   13   10011   OFF   
   4   100   ON   RB3
   14   10100   OFF   
   5   101   ON   RB4
   15   10101   OFF   
   6   110   ON   RB5
   16   10110   OFF   
   7   111   ON   RB6
   17   10111   OFF   
   8   1000   ON   RB7
   18   11000   OFF   
   9   1001   ON   RB8
   19   11001   OFF   


P.D.: El entrenador lo he tenido que modificar y tirar a masa las 5 entradas con 5 resistencias de 10k de tal manera k no me coja ruido y esten siempre a cero menos cuando pulse el pulsador que pasa a 5v. Hay os dejo el board en eagle, ha quedado muy chulo y funciona de miedo para probar nuestros proyectos.

Saludos Jachy

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: necesito ayuda con este pekeño proyecto
« Respuesta #27 en: 08 de Mayo de 2003, 06:25:00 »
Todo muy lindo pero si lees la hoja de datos del pic, RA4 deberas ponerle una resistencia de Pull-Up, es decir directamente conectada a +5V y a la patilla RA4, una resistencia de 10K aproximadamente, pues cuando la declaras como salida no funciona igual que las demas.



En mi caso prefiero utilizarla como entrada, antes de renegar con ella....

Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: necesito ayuda con este pekeño proyecto
« Respuesta #28 en: 08 de Mayo de 2003, 09:41:00 »
Tienes definido el PORTA como entradas por lo tanto RA4 no va a actuar como salida a colector abierto. Debes en el circuito utilizar RA4 como entrada

Revisándo el programa deprisa no veo porqué no se te apagan los leds. ¿No se te apaga nunca ningún LED o solo cuando interviene RA4?

En el caso que se cumpla el Caso16 apagará RB7 y el programa dejará de funcionar (ya no testeará más). Faltaría después del BCF PORTB,7 un GOTO Caso1

No uso el eagle, no puedo ver las conexiones.

Un saludo

Desconectado jachy

  • PIC10
  • *
  • Mensajes: 26
RE: necesito ayuda con este pekeño proyecto
« Respuesta #29 en: 08 de Mayo de 2003, 11:59:00 »
Entonces ya se porque no apaga por que para apagar si os dais cuenta lo unico que hago es a ese binario ponerle un 1 delante para ponerle en off y ese uno me lo tiene k dar RA4 ,pero RA4 lo quiero utilizarar como entrada ,estoy utilizanado como entradas con pulsadores (el entrenador de mas arriba) RA0, RA1, RA2, RA3 Y RA4 ó eso es lo que quiero ra como entradas y rb como salidas.

Pero como hago que funcione RA4??????


Saludos Jachy