Autor Tema: Estado TRIS  (Leído 3072 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Estado TRIS
« en: 14 de Marzo de 2006, 16:29:00 »
Hola amigos

Estoy haciendo un programita en el que requiero cambiar el estado del tris c, es decir, cambiar las terminales e/s.

Digamos que hago esto:

set_tris_c(0x00); //todo salida

El dato 0x00 yo se lo doy, pero después digamos que cambia el tris por cualquier causa, ¿cómo sé que estado tiene el tris?

Busqué en la ayuda de ccs, pero no encontré algo como read_tris o algo parecido.

¿Se puede hacer eso?

Gracias

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Estado TRIS
« Respuesta #1 en: 14 de Marzo de 2006, 16:56:00 »
Pues que yo sepa CCS no trae de eso,pero se puede hacer de forma fácil.
Busca la dirección del tris en el mapa de memoria del pic...
Define una etiqueta...

#BYTE TRISC = 0x85  // por ejemplo

...y vuelcas el valor en una variable....

valor_tris = TRISC;

Creo que con eso te debería bastar

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Estado TRIS
« Respuesta #2 en: 14 de Marzo de 2006, 17:01:00 »
ohhh

pero, el 8 de 0x85, ¿hace el cambio automático de bancos?

es que había medio pensado eso, pero me quedó la duda de los bancos.

Sonrojado

Desconectado gfp

  • PIC18
  • ****
  • Mensajes: 274
RE: Estado TRIS
« Respuesta #3 en: 14 de Marzo de 2006, 17:52:00 »
Lo mejor es que se cambie de banco antes de hacer la lectura, con eso vas fijo al problema.

gfp Sonrisa

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Estado TRIS
« Respuesta #4 en: 14 de Marzo de 2006, 18:35:00 »
Por ahora usé lo que me dijo Modulay y está funcionando, pero ¿cómo hago un cambio de banco en C?

¿Sería como se hace en ensamblador?


Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Estado TRIS
« Respuesta #5 en: 14 de Marzo de 2006, 19:31:00 »
Escrito originalmente por migsantiago
Por ahora usé lo que me dijo Modulay y está funcionando, pero ¿cómo hago un cambio de banco en C?

¿Sería como se hace en ensamblador?




Claro, es que el que cambia de página sería el PIC no el lenguaje.
Con esto te quiero decir que si pones un inline assembly para cambiar de página, pues lo hará! y si lo haces seteando el STATUS desde el C, también lo hará!

Así de simple.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado gfp

  • PIC18
  • ****
  • Mensajes: 274
RE: Estado TRIS
« Respuesta #6 en: 14 de Marzo de 2006, 19:35:00 »
Bueno sería algo asi:

#byte STATUS = 0x03


Para el banco 0.
bit_clear(STATUS, 5);
bit_clear(STATUS, 6);

Para el banco 1.
bit_set(STATUS, 5);
bit_clear(STATUS, 6);

Para el banco 2.
bit_clear(STATUS, 5);
bit_set(STATUS, 6);

Para el banco 3.
bit_set(STATUS, 5);
bit_set(STATUS, 6);


gfp Sonrisa

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Estado TRIS
« Respuesta #7 en: 15 de Marzo de 2006, 13:40:00 »
Gracias amigos. Sonrisa Gigante

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Estado TRIS
« Respuesta #8 en: 15 de Marzo de 2006, 14:02:00 »
De los cambios de banco ya se encarga el compilador por tí.Tú solo te tienes que preocupar de acceder a la dirección de memoria que te interese

Codigo:


#BYTE TRISA = 0x85
#BYTE PORTA = 0x05
#BYTE OSCCON = 0x8F

void inicializa()
   {
   TRISA = 0x00;  // banco 1
   PORTA = 0x0F;  // banco 0
   OSCCON = 0x76; // banco 1
   }


ASM LIST:

.................... void inicializa()
....................    {
....................    TRISA = 0x00;  // banco 1
*
001F:  BSF    03.5  ; Modifica STATUS
0020:  CLRF   05
....................    PORTA = 0x0F;  // banco 0
0021:  MOVLW  0F
0022:  BCF    03.5  ; Modifica STATUS
0023:  MOVWF  05
....................    OSCCON = 0x76; // banco 1
0024:  MOVLW  76
0025:  BSF    03.5  ; Modifica STATUS
0026:  MOVWF  0F
....................    }
0027:  BCF    03.5  ; Modifica STATUS
0028:  BCF    0A.3
0029:  GOTO   31F (RETURN)
....................



Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Estado TRIS
« Respuesta #9 en: 15 de Marzo de 2006, 14:27:00 »
Gracias Modulay, ya se me hacía raro lo del 8 del 85. Sonrisa Gigante