uControl
Agosto 30, 2014, 01:10:45 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  

La gente de Niple nos ofrece un descuento especial para usuarios de uControl.
Entérate de como puedes aprovechar esta oferta haciendo click aqui.

Súmate, y ayuda a uControl con tu participación en esta interesante oportunidad que nos oferece Niple.

Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: adaptar asm de un 16f84 a 16f628a  (Leído 1014 veces)
0 Usuarios y 1 Visitante están viendo este tema.
mandragora21
PIC12F
**
Desconectado Desconectado

Mensajes: 174



« : Enero 11, 2014, 05:42:04 »

Hola  necesito que alguien pueda echarme una manita y pueda aclararme algunas dudas que tengo ya que nunca programe en este leguaje y estoy algo perdido.
El caso es que esta semana pedí por eBay unos detectores de movimiento pir .
Y monte e la protoboard un circuito que tiene como procesador un 16f84 y el caso es que no tengo este PIC pero si varios 16f628a.
Estuve mirando por los foros y alguien dice que el código echo para el 84 puedo meterlo sin problemas para el 628 sin tocar nada tal cual esta pero yo creo que no funcionara.
También leí por aquí algo que publico el amigo HJ de cómo migrar de un PIC a otro pero no entiendo mucho la explicación.
Intente cambiar el include nombre del pic y la palabra configuración pero no consigo copilarlo.
Pongo el código para que lo vean  solo quiero pasarlo de uno al otro PIC.
Que me orienten de cómo hacerlo.
Muchas gracias-
Código:
;¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬Senpir.asm¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
;
; PROGRAMA: "Senpir". Luz por detector de movimiento y crepuscular.
; AUTOR: Ángel Acaymo Martín González
; E-MAIL; metaconta@gmail.com
; PROCESADOR: PIC16F84A
; FRECUENCIA: 4 MHz
; VERSIÓN: 1.0
; DESCRIPCIÓN:
;
; Programa de un interruptor con sensor movimiento y de luz solar: Si es de noche,
; mientras el sensor de movimiento (PIR) detecta la presencia de alguien
; entorno a 6 metros, activa o se pone a 1 la entrada RA3 y la lámpara
; se enciende. En caso de que sea de día detectado por la LDR, nunca se enciende
; la lámpara. En la otra opción, cuando la LDR detecta la noche o falta de Sol,
; la lámpara se enciende, cuando sea de día, la lámpara se apaga.
; En los microinterruptores puedes activar el tiempo que tarda en apagarse la
; lámpara después de ser detectado por el sensor Pir y de noche de un máximo
; una hora y treinta y cinco minutos.
;
;¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

; DATOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG 3FF1
__idlocs 0001 ; ID, versión del programa.

CBLOCK  0x0C
ENDC

#DEFINE Led_verde PORTA,0 ; Led verde indica opción LDR seleccionada.
#DEFINE Led_rojo PORTA,1 ; Led rojo indica opción PIR seleccionada.
#DEFINE Led_azul PORTA,2 ; Led azul indica que el Relé está activado.
#DEFINE lámpara PORTA,3 ; lámpara.
#DEFINE PIR PORTB,1 ; Sensor PIR.
#DEFINE LDR PORTB,3 ; Sensor LDR.
#DEFINE Int_RB4 PORTB,4 ; Interruptor RB4.
#DEFINE Int_RB5 PORTB,5 ; Interruptor RB5.
#DEFINE Int_RB6 PORTB,6 ; Interruptor RB6.
#DEFINE Int_RB7 PORTB,7 ; Interruptor RB7.

; EEPROM ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0x2100     ; Comienza en la direccoón 0 de la memoria EERPOM.
; Datos nombre del archivo, versión del programa
; y dirección del correo electrónico.
DE "Senpir.asm. v1.0. 25-03-2009. metaconta@gmail.com", 0x00

; CÓDIGOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0
Inicio
bsf STATUS,RP0 ; Accede al Banco 1.
clrf PORTA ; Puerto A como salidas.
movlw b'11111111' ; Las 8 líneas del puerto B se configura como entradas.
movwf PORTB
bcf STATUS,RP0 ; Accede al Banco 0.
clrf PORTA ; Supuestamente la lámpara y Led apagadas.

Opcion_principal
btfss Int_RB4 ; ¿Bit 4 del PORTB es "1"? ¿Int_RB4 activado?
goto Opcion_LDR ; No, activa modo LDR.
goto Opcion_PIR ; Sí, activa modo PIR.

; INTERRUPTOR CREPUSCULAR LDR ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

Opcion_LDR
bcf Led_rojo ; Se apaga el Led rojo.
bsf Led_verde ; Enciende Led verde indicando modo LDR activado.
btfss LDR ; ¿La entrada LDR es igual a 1?, ¿LDR en oscuridad?
goto Apaga_la_lámpara ; No, la LDR está iluminada por el Sol. La lámpara se apaga.
Enciende_la_lámpara
call Retardo_20_seg ; Espera 20 segundos para confirmar la oscuridad.
btfss LDR ; ¿Entrada es igual a 1?, ¿LDR aún en oscuridad?
goto Opcion_principal ; No, sale fuera.
bsf lámpara ; Sí, enciende la lámpara.
bsf Led_azul ; Led_azul activo.
goto Opcion_principal
Apaga_la_lámpara
call Retardo_20_seg ; Espera 20 segundos para confirmar la oscuridad.
btfsc LDR ; ¿Entrada es = 0?, ¿LDR sigue iluminada por luz del sol?
goto Opcion_principal ; No, sale fuera.
bcf lámpara ; Sí, apaga lámpara.
bcf Led_azul ; Led_azul indica que la lámpara está apagada.
goto Opcion_principal

; DETECTOR DE MOVIMIENTO ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

Opcion_PIR
bcf Led_verde ; Apaga el Led verde de aviso.
bsf Led_rojo ; Enciende Led rojo avisando que está activado el modo PIR.
btfss LDR ; ¿La entrada LDR es igual a 1?, ¿LDR en oscuridad?
goto lámpara_OFF ; No.
btfss PIR ; ¿La entrada PIR es igual a 1?, ¿PIR ha detectado presencia?
goto lámpara_OFF ; No, no ha detectado presencia o movimiento.
lámpara_ON
bsf lámpara ; Sí, enciende la lámpara.
bsf Led_azul ; Led_azul activo.
btfss Int_RB5 ; ¿Bit 5 del PORTB es igual a 1?, ¿Activado el interruptor RB5?
goto RB6 ; No, salta a la línea siguiente.
call Retardo_5_min ; Tiempo lámpara encendida 5 minutos.
RB6
btfss Int_RB6 ; ¿Bit 6 del PORTB es igual a 1?, ¿Activado el interruptor RB6?
goto RB7
call Retardo_30_min ; Tiempo lámpara encendida 30 minutos.
RB7
btfss Int_RB7 ; ¿Bit 7 del PORTB es igual a 1?, ¿Activado el interruptor RB7?
goto Opcion_principal
call Retardo_1_hora ; Tiempo lámpara encendida 1 hora.
goto Opcion_principal
lámpara_OFF
bcf lámpara ; Apaga lámpara.
bcf Led_azul ; Apaga Led_azul.
goto Opcion_principal

; SUBRUTINAS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

; Retardo de 20 segundos ................................................................
cblock
ret_00
ret_01
ret_02
Nulo
endc

Retardo_20_seg
;19999992 ciclos
movlw 0xB5
movwf ret_00
movlw 0x99
movwf ret_01
movlw 0x2C
movwf ret_02
Retardo_20_seg_0
decfsz ret_00, f
goto $+2
decfsz ret_01, f
goto $+2
decfsz ret_02, f
goto Retardo_20_seg_0

;4 ciclos
goto $+1
goto $+1

;4 ciclos (incluyendo call)
return

; Retardo de 5 minutos ..................................................................
cblock
ret_05
ret_06
ret_07
ret_08
endc

Retardo_5_min
;299999995 ciclos
movlw 0x54
movwf ret_05
movlw 0xA1
movwf ret_06
movlw 0xFD
movwf ret_07
movlw 0x02
movwf ret_08
Retardo_5_min_0
decfsz ret_05, f
goto $+2
decfsz ret_06, f
goto $+2
decfsz ret_07, f
goto $+2
decfsz ret_08, f
goto Retardo_5_min_0

;1 ciclo
nop

;4 ciclos (incluyendo call)
return

; Retardo de 30 minutos .................................................................
cblock
ret_09
ret_10
ret_11
ret_12
endc

Retardo_30_min
;1799999989 ciclos
movlw 0xFE
movwf ret_09
movlw 0xC2
movwf ret_10
movlw 0xEC
movwf ret_11
movlw 0x0C
movwf ret_12
Retardo_30_min_0
decfsz ret_09, f
goto $+2
decfsz ret_10, f
goto $+2
decfsz ret_11, f
goto $+2
decfsz ret_12, f
goto Retardo_30_min_0

;7 ciclos
goto $+1
goto $+1
goto $+1
nop

;4 ciclos (incluyendo call)
return

; Retardo de 1 hora .....................................................................
cblock
ret_13
ret_14
ret_15
ret_16
endc

Retardo_1_hora
;3599999989 ciclos
movlw 0xFE
movwf ret_13
movlw 0x84
movwf ret_14
movlw 0xD8
movwf ret_15
movlw 0x18
movwf ret_16
Retardo_1_hora_0
decfsz ret_13, f
goto $+2
decfsz ret_14, f
goto $+2
decfsz ret_15, f
goto $+2
decfsz ret_16, f
goto Retardo_1_hora_0

;7 ciclos
goto $+1
goto $+1
goto $+1
nop

;4 ciclos (incluyendo call)
return

END

En línea
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10615



WWW
« Respuesta #1 : Enero 11, 2014, 08:04:57 »

Hola mandragora21!
¿Ya viste este hilo?

 Es posible que allí esté la respuesta a tu problema. Yo tampoco manejo nada en ASM, asi que poco puedo ayudarte con esto Tongue

Suerte!
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
HJ
Moderador
dsPIC
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5401



« Respuesta #2 : Enero 11, 2014, 02:46:24 »

Hola, en este momento estoy de viaje y contesto desde el celular. En cuanto tenga el acceso a una PC intento indicarte las modificaciones a relizar. Pero básicamente son las que indique en el hilo que mencionas.

Saludos
HJ

Edito: te dejo un enlace donde hice la misma explicación, despues amplio... Cuando tenga una
PC.
http://www.servisystem.com.ar/foro/viewtopic.php?f=24&t=333
« Última modificación: Enero 11, 2014, 03:44:01 por HJ » En línea

"si te lo dicen se te olvida, si lo lees lo aprendes; pero si lo haces realmente lo entiendes"
"Cuando llegue la inspiración, que me encuentre trabajando" [Pablo Picasso]
mandragora21
PIC12F
**
Desconectado Desconectado

Mensajes: 174



« Respuesta #3 : Enero 11, 2014, 05:10:28 »

Hola HJ muchas gracias por la contestación como no Ariel también.
El caso es que realizando cambios y no se como  pude copilarlo el caso es que parece que funciona de todas maneras cuando estés en tu ubicación y puedas te cuelgo lo que modifique y le echas una mirada por si vieras algo mal.
Cambie del programa estas líneas no toque nada mas lo que me extraña que funcione ya que e leído que la dirección de datos no es la misma y hay ja me pierdo je je je lo máximo que e echo es esto tendré que estudiar mas pero bueno para ser lo primero que modifico y funcione.
Agradecería lo miraras.

 
Código:
; DATOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
list      p=16f628A           ; list directive to define processor
#include <p16F628A.inc>       ; processor specific variable definitions
__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
__idlocs 0001 ; ID, versión del programa.

CBLOCK  0x20
          TMP ; temporal register
  TMP2 ; temporal register

ENDC

#DEFINE Led_verde PORTA,0 ; Led verde indica opción LDR seleccionada.
#DEFINE Led_rojo PORTA,1 ; Led rojo indica opción PIR seleccionada.
#DEFINE Led_azul PORTA,2 ; Led azul indica que el Relé está activado.
#DEFINE lámpara PORTA,3 ; lámpara.
#DEFINE PIR PORTB,1 ; Sensor PIR.
#DEFINE LDR PORTB,3 ; Sensor LDR.
#DEFINE Int_RB4 PORTB,4 ; Interruptor RB4.
#DEFINE Int_RB5 PORTB,5 ; Interruptor RB5.
#DEFINE Int_RB6 PORTB,6 ; Interruptor RB6.
#DEFINE Int_RB7 PORTB,7 ; Interruptor RB7.

; EEPROM ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0x2100     ; Comienza en la direccoón 0 de la memoria EERPOM.
; Datos nombre del archivo, versión del programa
; y dirección del correo electrónico.
DE "Senpir.asm. v1.0. 25-03-2009. metaconta@gmail.com", 0x00

; CÓDIGOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG     0
Inicio
        movlw   0x7
        movwf CMCON  
En línea
HJ
Moderador
dsPIC
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5401



« Respuesta #4 : Enero 21, 2014, 09:03:02 »

Hola mandragora21, veo que las modificaciones que hiciste son correctas.
Me alegra que te haya funcionado sin mas complicaciones.

Saludos
HJ
En línea

"si te lo dicen se te olvida, si lo lees lo aprendes; pero si lo haces realmente lo entiendes"
"Cuando llegue la inspiración, que me encuentre trabajando" [Pablo Picasso]

La gente de Niple nos ofrece un descuento especial para usuarios de uControl.
Entérate de como puedes aprovechar esta oferta haciendo click aqui.

Súmate, y ayuda a uControl con tu participación en esta interesante oportunidad que nos oferece Niple.

Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.143 segundos con 29 consultas. (Pretty URLs adds 0.037s, 3q)
loggkey