TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: arrhenius en 05 de Agosto de 2009, 05:45:53

Título: Codigo en Ensamblador
Publicado por: arrhenius en 05 de Agosto de 2009, 05:45:53
Hola tengo 17 años y estoy haciendo el trabajo de investigacion de bachillerato. Tengo que programar un pic 16f84A en ensamblador. las caracteristicas son las siguientes.
1)  Tiene que tener 4 ENTRADAS i las 4 tienen ke estar encendidas [sino se produce un bucle asta k se reuna la condicion] para
2) poder activar una SALIDA ( que enciende unos cuantos leds ) y al cabo de 3 segundos
3) se activa otra SALIDA (que enciende otros cuantos leds) y al cabo de 6 segundos se apagan las DOS salidas y vuelve al inicio.

agradeceria muchisimo que me facilitarais el codigo en Ensamblador porque la programacion no es mi fuerte y me esta costando bastante.

Muchas gracias por adelantado
Título: Re: Codigo en Ensamblador
Publicado por: Leon Pic en 05 de Agosto de 2009, 06:23:55
Hola arrhenius.
No entiendo nada de lo que necesitas.
Primero, las entradas de un PIC no pueden encender nada. Supongo que estas 4 entradas son en realidad 4 pulsadores con sus respectivas salidas conectadas a LED (4 en total)

Sería bueno que te espliques mejor. Y te doy un concejo, lees las reglas del foro (http://www.todopic.com.ar/foros/index.php?action=globalAnnouncements;id=1) por favor y verás que lo que pides está mal.
Título: Re: Codigo en Ensamblador
Publicado por: tapi8 en 05 de Agosto de 2009, 06:43:23
Arrhenius, 17 años es una edad excelente para aprender a programar; no se trata de que te demos el programa hecho, te ayudaremos si tu empiezas a hacerlo, haz primero el esquema con los pulsadores y los LEDs e intenta empezar, hay un hilo de Leon_pic asembler desde 0 donde te explica todas las instrucciones y a continuacion otro de Suki mis primeros programas en asembler, si los miras un poco aprenderas a hacer eso que te mandan, y si tienes dudas te las intentaremos solucionar

tapi8
Título: Re: Codigo en Ensamblador
Publicado por: fabianjsm en 05 de Agosto de 2009, 07:03:38
Hola Arrhenius,
Tanto Leon PIC , como tapi8 tienen muchisima razon, porque no aprendes a programar!
Se entiende muy bien lo que decís, pero... "NOS GUSTA AYUDAR, NO HACER TODO EL TRABAJO!"
Te paso un esqueleto para tu codigo, espero que te sirva.

---
inicio:
   bsf STATUS, 5   ; seteando el bit 5 de STATUS pasamos al banco 1
   clrf PORTB      ; portb es salida (todos sus bits a cero)
   movlw b'11111111'
   movwf PORTA      ; porta es entrada (todo sus bits a uno)
   bcf STATUS, 5   ; limpiando el bit 5 de STATUS pasamos al banco 0

bucle: ; Este es el bucle prinsipal del programa
   clrf PORTA ; Ponemos inicialmente las salidas a cero
esperar:; esperamos que las cuatro entradas sean uno
   movf PORTB, W   ; movemos PORTB...
   movwf temp      ; ...a la variable temp
   movlw 0x0F      ; movemos a W la mascara 0x0F
   andwf temp, F   ; aplicamos la mascara sobre temp
   movf temp, W   ; comparamos temp...
   xorlw 0x0F      ; ...con 0x0F
   btfss STATUS, Z   ; si almenos una entrada vale 0 continuamos esperando...
   goto esperar
   ; listo, las 4 entradas estan activas. activamos la primer salida
   movlw 1 ; w = segundos a esperar
   movwf PORTA
   movlw 3 ; w = segundos a esperar
   call esperar_segundos
   ; activamos la segunda salida (sin desactivar la primera)
   movlw 3
   movwf PORTA
   movlw 6
   call esperar_segundos
   ; continuamos en el bulce prinsipal.
   goto bucle
esperar_segundos:
   ; aca te falta codigo :)
   return
---