Programación Específica > Microcontroladores
Apagar Y Encender El Puerto B De Un 16f84
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
[#] Página Siguiente
Ir a la versión completa