elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Ensamblador en Microcontrolaores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ensamblador en Microcontrolaores  (Leído 9,244 veces)
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Ensamblador en Microcontrolaores
« en: 14 Abril 2011, 12:44 pm »

Hola que tal,veran,recien empezemos en clase con Ensamblador para Micros (concretamente el PIC16f84),por ahora aprendimos bastantes cosas,como pasra del banco 0 al 1 poniendo el bit 5 el registro STATUS a 1,configurar los puertos como entrada/salida,prender leds etc etc,pero ami me surge una pequeña duda qe aun no cabao de entender,es una tonteria pero necesito alguin que me asesore bien con esto,el caso es que en los bancos de la memoria que son dos el 0 y el 1) inicialmente el PIC se inica en el Banco 0,entonces en el banco 0 esta PORTA y PORTB,lo que no entiendo lo e TRISA y TRISB,que significa eso exactamente,lo digo por que en visto codigos del profesor para configurar puetos del tipo asin:
Código
  1. TRISB equ 0x06 ;Direccion de todos los puertosb ?¿?¿?¿
  2. PORT_B equ 0x06 ;Direccion de puertos B d enuevo ?¿ :S
  3. Estado equ 0x03 ;Direccion del registro Estatus
  4. ...
  5. bsf Estado,5
  6. ..
  7. movwl b'00000000'
  8. movfw TRISB
  9. bcf Estado,5
  10.  
  11.  
  12. ..
  13. bsf PORT_B,0 ;Pone 1 a RB0
  14.  


ami lo que me confunde es lo e TRISB,TRISB se refiere a todos los registros del puerto b?¿para enviar datos al PIN RB0 (por ejemplo) hay que cambiar al banco 1 obligatoriamente ?¿ Y LO MA SIMPORTANTE,SI PORTB Y PORTA ESTAN EN EL BANCO 0 (Segun el PDF que nos DIO)POR QUE HAY QE CAMBIAR AL BANCO 1 PARA HACER TODO ESO ?¿  Esa e smi gran duda principal :(

gracias :)



« Última modificación: 14 Abril 2011, 13:19 pm por Riki_89D » En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Ensamblador en Microcontrolaores
« Respuesta #1 en: 14 Abril 2011, 15:49 pm »

TrisX se utiliza para configurar el puerto X como entrada o como salida según si le das el valor 00000000 o 11111111.

En los microcontroladores de Atmel por ejemplo, la instrucción TRIS no existe ni tiene una equivalente, simplemente declaras los puertos al inicio como entradas o salidas dándoles el valor 0 o 1 como los PIC.

De hecho, en la universidad yo aprendí Atmel, posteriormente he programado PIC's y siempre he utilizado TRIS, y esa es mi conclusión, quizá la razón sea otra pero segun el fragmento de código que has puesto tanto TRISB como PORT_B apúntan a la misma dirección de memória.


En línea

Killtrojan Syslog v1.44: ENTRAR
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Ensamblador en Microcontrolaores
« Respuesta #2 en: 14 Abril 2011, 16:05 pm »

Hola amigo,pues eso es,por que la misma direccion?¿  por que hay que cambiar de banco para configurar los puertos?¿ :S

no pueo hacer directamente:
Código
  1. movlw b'00000000'
  2. movwf PORT_B
  3.  

y ya esta?¿,por que PORTB esta en el banco 0 que es en el que inicia el PIC

o en vez de PORT_B poner TRISB ?¿

pero sin tner que ir al banco 1 ?¿

saludos
En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Ensamblador en Microcontrolaores
« Respuesta #3 en: 14 Abril 2011, 16:10 pm »

Con los Atmel, para configurar los puertos como entradas o salidas puedes hacerlo de forma directa:

Ej.

EQU P1 {la que sea}
EQU P2 {la que sea}

MOV   P1,#00H      ; salida   
MOV   P2,#FFH             ; entrada
En línea

Killtrojan Syslog v1.44: ENTRAR
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Ensamblador en Microcontrolaores
« Respuesta #4 en: 14 Abril 2011, 16:39 pm »

Vale,y no sabes si con el PIC16F84 se puede hacer de forma directa tambien?¿




saludos y gracias
En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Ensamblador en Microcontrolaores
« Respuesta #5 en: 14 Abril 2011, 17:57 pm »

Ni idea, yo siempre he utilizado lo de TrisX (sin saber porqué), todo es probarlo. Si tu codigo donde las direcciónes de memória coinciden funcionan las entradas o salidas, entonces TrisX no sirve para nada.

Espera, voy a ver un libro de PIC's que tengopor aquí i si saco algo en claro lo pongo.



nada, se debe utilizar TRISx, imagino que debe ser cosas de diseó del IC, atmel no lo requiere, MicroChip se vé que si.

Por cierto dos cosas:

1º En el libro que tengo pone que TRIS solo se usa en pics de gama baja, no es cierto del todo ya que yo usé de gama alta (18F) y utilizé TRIS. Otra cosa es que no haga falta hacerlo, ya lo comprobaré.

2º El trozo de código es erróneo, PORTB y TRISB no pueden contener la misma dirección.

La del puerto B si debe ser 0x06 ya que tiene sentido pero la de TRISB debería ser mucho mayor (según el pic que utilizes).
« Última modificación: 14 Abril 2011, 18:14 pm por skapunky » En línea

Killtrojan Syslog v1.44: ENTRAR
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Ensamblador en Microcontrolaores
« Respuesta #6 en: 14 Abril 2011, 18:23 pm »

Hola,acabo e hacer una prueba i efectivamente,hay que pasar al otro banco,no s epuede hacer dierctamene,uso el 16F84,ya decia yo,es imposible ocmo TRISB va a tener la misma direccion que PORTB,lo que PORTB esta en el banco 0 y trisb esta en el BANCO1,Segun el DataSheet TRISB se enceuntra en la ireccion 86h del banco 1,i PORTB se encuentra en 6h del banco 0,entonces,en el codigo debo cambiar el TRISB equ 0x06 por TRISB equ 0x86 no?¿



saludos
En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Ensamblador en Microcontrolaores
« Respuesta #7 en: 14 Abril 2011, 18:31 pm »

Si exacto, debe quedarte:

PORTB equ 0x06 ( O como quieras llamarle al puerto B)
TRISB equ 0x86
En línea

Killtrojan Syslog v1.44: ENTRAR
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Ensamblador en Microcontrolaores
« Respuesta #8 en: 14 Abril 2011, 18:47 pm »

Okey,lo acabo de probra y funciona perfectamene,mil gracias por tu ayuda,me ha sayuado mucho,ojala tuviera a gente asin en mi messenger...:)



saludos y gracias  de nuevo amigo ^^
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Ensamblador en Microcontrolaores
« Respuesta #9 en: 14 Abril 2011, 23:05 pm »

Me a surjido otra duda,necesito usar el registro TMR0 para crear un timer,necesito que cada 1 segundo se prenda un led e mirado como configurar dicho registor pero no lo entiendo muy bien,podrias darme un pequeñop ejemplo explicativo porfavor?¿



racias
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ensamblador
Electrónica
marcela 0 2,804 Último mensaje 30 Mayo 2005, 19:23 pm
por marcela
ensamblador
Ingeniería Inversa
CYPRESSKILL 2 3,296 Último mensaje 21 Noviembre 2005, 00:09 am
por CYPRESSKILL
Ensamblador en .NET
.NET (C#, VB.NET, ASP)
DragonFire 6 6,595 Último mensaje 19 Agosto 2006, 05:51 am
por JuanK_Solocodigo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines