TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: natalia_mouse en 30 de Abril de 2004, 17:59:00
-
Hola...
Estoy haciendo un proggramita para 16f84a pero no he obtenido respuesta...

Por eso decidi hacer un programita elemental en el cual pongo el puerto a en 1... no es mas y no funciona

Aqui va el codigo por si alguien ve algun error:
LIST P=PIC16F84a
w equ 00h
status equ 0x03
porta equ 0x05
trisa equ 0x85
rp0 equ 5 ;registrer banck select bit
reset org 0
goto inicio
inicio
movlw b"00000000" ; puerto a como salida
bsf status,rp0 ;bank 1
movwf trisa
;escribir en el puerto a
movlw b"11111111"
bcf status,rp0 ;bank 0
movwf porta
nada
nop
nop
goto nada ;cierra el ciclo
End
Gracias y acepto cualquier tipo de sugerencia y observaciòn
Natalia
-
Hola, entiendo que quieres poner todos los pines del puerto A a 1 (valor del puerto = 32, recuerda que el puerto a tiene 5 pines), no mandar el valor 1 al puerto a, que en ese caso seria el pin/bit menos significativo (RA0) a "1" y el resto de pines/bits a cero.
Pues para eso tienes que modificar un poco tu codigo, mas que nada el cambiar de orden algunas lineas:
LIST P=PIC16F84a
w equ 00h
status equ 0x03
porta equ 0x05
trisa equ 0x85
rp0 equ 5 ;registrer banck select bit
reset org 0
goto inicio
inicio bsf status,rp0 ;bank 1
movlw b"00000000" ; puerto a como salida
movwf trisa
bcf status,rp0 ;bank 0
movlw b"11111111" ;linea cambiada de sitio
movwf porta ;escribir en el puerto a
nada
nop
nop
goto nada ;cierra el ciclo
End
Este es tu codigo rectificado, ahora te deberia funcionar, te recomiendo que cuando cargues un literal en el w seguidamente lo lleves al registro donde lo quieres llevar como puedes ver arriba en las lineas cambiadas,
----------------------------------------------------
movlw b"00000000" ; puerto a como salida (linea cambiada de sitio)
movwf trisa
------------------------------------------------------
movlw b"11111111" ;linea cambiada de sitio
movwf porta
---------------------------------------------------------
primero cargas el literal y seguidamente lo llevas al registro deseado, tu error era ese basicamente.
Otro consejo pero esto no quiere decir que este mal lo que haces es que en lugar de definir las direcciones y asignarles una etiqueta como tu haces, como por ejemplo:
-----------------------------------------------------
status equ 0x03
--------------------------------------------------------
Puedes incluir en tu codigo la siguiente linea, siempre despues de indicar el procesador con list:
include <p16f84a.inc>
Este fichero que incluyes ya tiene definidas todas las etiquetas con su direccion correctamente asignada para el procesador 16f84a, asi no hace falta que las definas tu.
Saludos.
-
Hola amor como estas... mira esta bien q empices con cosas asi de sencillas para aprender... pero tienes q aprender a optimizar y depurar tus codigos desde el principo.... voy a poner tu codigo y luego voy a ponerlo como deberia ser...
tu codigo:
LIST P=PIC16F84a
w equ 00h
status equ 0x03
porta equ 0x05
trisa equ 0x85
rp0 equ 5 ;registrer banck select bit
reset org 0
goto inicio
inicio
movlw b"00000000" ; puerto a como salida
bsf status,rp0 ;bank 1
movwf trisa
;escribir en el puerto a
movlw b"11111111"
bcf status,rp0 ;bank 0
movwf porta
nada
nop
nop
goto nada ;cierra el ciclo
End
FORMA CORRECTA:
LIST P=PIC16F84a
#Include<p16f84a.inc>
org 0000
GOTO INICIO
INICIO movlw b"00000000" ; puerto a como salida
TRIS PORTA;ESCRIBE LA CONFIGURACION AL PUERTO
movlw FFH
movwf PORTA
GOTO $
End
-
lodo depois de de list e #include !
#define bank0 bcf status,rp0
#define bank1 bsf status,rp0
;quando escrever bank1 = bsf status,rp0/ banco 2 de memória
; bank0 = bcf status,rp0
;não é preciso usar equs para endereços de memória, comece desta forma
cblock ( inicio de banco ) ex : 0x0c
coloca-se
nombres
de
memória
endc ;- fin de banco
inicio
daqui para baixo coloca-se as configurações de funcionamento
clrf porta
clrf portb
bank1
movlw b"00000001" ;define
movwf trisb ; = pino ,0 entrada
;= demais pinos saída
bank0
main
o programa propriamente dito
movlw b"11111110"
movwf portb
nop
goto $
END