Programación Específica > Microcontroladores

 Apagar Y Encender El Puerto B De Un 16f84

(1/3) > >>

eliza_marti:
Hola chicos!.  :hola: .estaba practicando un ejemplo de por ahí....y me quedaron ciertas dudas!..


--- Código: Text ---;---------------------------------------list            p=16f84Ainclude         "p16F84A.inc" org                 00h                   resetgoto             inicio org               10hinicio 
Porqué la etiqueta de inicio la pongo en la dirección 10h?  :huh: ...porque no puede ser la dirección 0D?..ya que los registros especificos van hasta el 0C….es una forma estandar de programar?  :huh: ..siempre debe ser asi?..eso lo más recomendable?....pregunto porque en la dirección 10 se están desperdiciando 2 registros..
O?...no importa eso?.. :huh:


--- Código: Text ---;-------------------------------------------;Configurar el puerto B como salida;--------------------------------------------;Registro TRISB=00h para salidas. bsf            STATUS,5;          pongo a uno el bit 5 del registro ;                                 STATUS para entrar en el banco1.movlw            00h;             cargo w con el dato 00h.        movwf            TRISB;           cargo el registro TRISB con el w para;                                 hacer el puerto B como salida.bcf           STATUS,5;           pongo a cero el bit 5 del registro;                             STATUS para entrar en el banco 0. 

Para configurar el puero B como salida ..puedo hacer un simple movwl 00h y un movwf PORTB?  :huh: ..como ´se hace dentro del programa? (inicio)...
mmmm…..sé que STATUS es un registro de estado…y se que hay 2 bancos de 128 registros cada uno…pero ..si el bit 5 es:

/PD: Power Down.
1 = Recién encendido o tras CLRWDT. 0 = Tras ejecutar una instrucción SLEEP

Porqué poniendo en 1 o en 0 el bit 5 de status se puede cambiar de banco?  :huh:

Para utilizar el TRIS siempre tengo que configurar el registro STATUS?..

Ahora!..

--- Código: Text ---movlw  00h;                  movwf  TRISB;         error aquí 
en esa señal..al compilarlo para hacer el hex…me da un error…que según yo es porque no se puede modificar el valor de es registro porque es uno específico y no de propósito general…entonces lo arreglé poniendo:


--- Código: Text ---movlw            00h;                                       movwf            PORTB; 
no se si estará bien…pero de esa forma no me dio ningun error..
y tampoco en esta:


--- Código: Text ---movlw            00h;                                   TRIS             PORTB; 
Bueno..Gracias por concederme de su valioso tiempo  :unsure: …y disculpen mis dudas de principiante..!.. :hola: ..Bye!.. :hola:  :comp:

Huguen_aus_Tirol:
Hola Eliza!
Al iniciarse el micro tras un reset, el contador de programa apunta a la direccion 0x00. Como primer instruccion se acostumbra un salto (goto xxxx) a la direccion donde empieza tu rutina principal de programa. Puede ser 10h o cualquier otra, pero cuidado que en la direccion 0x04 se encuentra el vector de interrupciones; es decir que al producirse una interrupcion (si esta habilitada) se salta a la direccion 0x04

Para acceder a TRISB tienes primero que seleccionar el banco 1 de RAM, tal como esta en la segunda ventana de codigo de tu mensaje. El bit /PD es el bit 3 de STATUS!

Posiblemente hayas tenido error porque no esta definido el registro TRISB; usando la instruccion TRIS PORTx funciona, pero es una instruccion de los viejos 15C5x y es aconsejable no usarla, seguramente te habra dado un mensaje al compilar.

Cuando escribas o leas en PORTB (o PORTA) estas accediendo directamente a los pines del micro. Para ello primero hay que configurarlos, escribiendo en el registro TRISx correspondiente.

Hablando de los bancos de memoria, es comun que seleccionemos un banco, el 1 por ejemplo, y despues nos olvidamos de volver al banco 0, lo que nos da algunos dolores de cabeza un rato... pero con el tiempo deja de pasar! :rolleyes:

Bueno, espero que te sea de ayuda

Saludos y suerte

eliza_marti:
Gracias Huguen_aus_Tirol por contestar!.. :hola: ..pero ...sigo con la duda.. :unsure: ..si siempre tengo que configurar el banco por medio del registro STATUS...entonces porque en muchos programas no lo hacen?... :huh: ..

Gracias de nuevo por tu tiempo!.. :hola: ..nos vemos..bye!..  :ph34r:  :hola:

© Jonathan ©:
- Holas, no siempre tienes que ir al banco 1 u otro, siempre va a ser dependiendo de los registros que debas utilizar para configurar.. por ejemplo el puerto A se encuentra en los 2 bancos, el banco 0 y el banco 1, en el banco 1 defines si los pines son entradas o salidas... siempre debes entrar al banco 1 para configurar el puerto y regresar al banco 0 para continuar con tu programa.. hay varias maneras de direccionarte hacia el banco 1, de forma directa e indirecta, te pasare una explicacion detallada de ese sistema, pero no deberias concentrarte en eso, mas bien deberias entender las instrucciones y jugar con los puertos y retardos.. Te dejo en el  FTP un manual basico donde explican como hacer parpadear un led, con entender eso ya tienes ventajas. Esperamos tus dudas ;) Suerte :)

http://www.solocodigo.com/vftp/Microcontro...%20de%20PIC.zip

eliza_marti:
Entendido..© Jonathan ©..seguiré tus consejos.. :) ...me bajé el zip..y se ve interesante ..lo practicaré  ;) ...y les avisaré...pero...otra duda..  :huh: .los retardos son verdaderamente exactos?...porque traté de comprobar un ejemplo y no lo era.. :( ..
Gracias por tu amable atención.. :hola: ..nos vemos.. :comp:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa