TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ALSAMA en 26 de Septiembre de 2005, 17:09:00
-
HOLA A TODOS
EL PROBLEMA QUE TENGO ES UN POCO ENRREDADO PERO VEAMOS A VER SI ME LOGRO EXPLICAR:
DEBO ESCRIBIR EN LA MEMORIA EEPROM DEL PIC UNOS DATOS, LOS DATOS ESTAN EN POSICIONES CONSECUTIVAS, LUEGO DEBO LEER EL DATO UNO Y COMPARARLO CON REGISTRO1, SI EL DATO ES DIFERENTE AL REGISTRO1 DEBE LIMPIAR REGISTRO2
LA DIFICULTAD ESTA EN LO SIGUIENTE SI ALTERO EL DATO2 O DATO3 EL REGISTRO2 SE LIMPIA, Y NO SE PORQUE
;*******EEPROM DE DATOS***************************************************************
;*******LECTURA DE LA MEMORIA*********************************************************
PROGRA BSF STATUS,RP1 ;CAMBIA AL BANCO 2
BCF STATUS,RP0 ;
CLRF PCLATH
MOVWF PIR2 ;LEE W PARA LA POSICION DE MEMORIA DEL DATO
BSF STATUS,RP0 ;CAMBIA AL BANCO 3
BSF STATUS,RP1
BCF PIR1,EEPGD ;HABILITA ACCESO A MEMORIA DE DATOS
BSF PIR1,RD ;HABILITA LECTURA
BSF STATUS,RP1 ;CAMBIA AL BANCO 2
BCF STATUS,RP0
MOVF PIR1,W ;CARGA EL DATO A W
BCF STATUS,RP0 ;CAMBIA AL BANCO 0
BCF STATUS,RP1
RETURN
LECTU2 MOVWF SETPOINT ;CARGA DATO A REGISTRO AUXILIAR
MOVLW .140 ;CARGA CON 140 PARA REVISAR EL VALOR DEL
SUBWF SETPOINT,1 ;REGISTRO AUXILIAR POR MEDIO DE LA RESTA
BTFSS STATUS,0 ;REVISA EL RESULATADO DE LA RESTA
GOTO LECME1 ;SI ES MENOR DE 140
CLRF SETPOINT ;SI ES MAYOR DE 140 LIMPIA EL REGISTRO
GOTO TCONTE
LECME1 ADDWF SETPOINT,1 ;REGRESA EL VALOR INICIAL
TCONTE MOVLW .1 ;CARGA CON 1 PARA PCLATH
MOVWF PCLATH ;ESTE DIRECCIONA LA POSISCION DE LA TABLA CONTEM
MOVF SETPOINT,W ;CARGA CON SETPOINT PARA OBTENER EL VALOR DE LA MEMORIA
CALL CONTEM ;VA A LA TABLA CONTEM PARA CARGAR EL VALOR CORRESPONDIENTE
MOVWF SETP3 ;CARGA VALOR DE CONTROL EN REGISTRO PARA COMODIN
MOVLW .1 ;REVISA CONTADOR DE FUNCION PARA
XORWF CONMEM,W ;SABER SI ES SETPOINT O CONTROL DE ALARMA
BTFSS STATUS,2 ;REVISA EL RESULTADO
GOTO SETPP1 ;SI NO ES SETPOINT
MOVF SETP3,W ;SI ES SETPOINT RECUPERA VALOR PARA COMPARACION DESDE COMODIN
MOVWF SETP2 ;CARGA VALOR DE CONTROL EN REGISTRO PARA COMPARACION
GOTO PTODIS
SETPP1 MOVF SETP3,W ;RECUPERA VALOR DESDE COMODIN
PTODIS CALL SALPUER ;VA A RUTINA PARA LLEVAR DATO AL PUERTO
;*******ESCRITURA DE LA MEMORIA*******************************************************
PULSO BTFSC PORTC,4 ;LEE LOS PINES DE SUBIR Y BAJAR LA TEMPERATURA
GOTO ABAJO ;SI ES UNO MIRA EL OTRO PIN PARA DISMINUIR
CALL RETA3 ;SI ES CERO LLAMA RETARDO PARA REVISAR REBOTES
BTFSC PORTC,4 ;REVISA SI ERA REBOTE
GOTO PULSO ;SI ES REBOTE EMPIESA DE NUEVO
INCF SETPOINT,1 ;SI ES CERO INCREMENTA EL REGISTRO PARA PROGRAMAR LA TEMPERATURA
CALL VAL255 ;PRUEBA VALOR INFERIOR A 255
GOTO ESCRI ;VA A LA MEMORIA PARA ESCRIBIR EL DATO
ABAJO BTFSC PORTC,5 ;REVISA EL PIN DE DECREMENTO
GOTO PINES ;SI ES UNO INICIA DE NUEVO REVISION DE PINES
CALL RETA3 ;SI ES CERO LLAMA RETARDO PARA REVISAR REBOTES
BTFSC PORTC,5 ;REVISA SI ERA REBOTE
GOTO ABAJO ;SI ES REBOTE EMPIESA DE NUEVO
MOVLW .0 ;SI NO ES REBOTE PROBAR SI EL DATO ES CERO
XORWF SETPOINT,W ;PARA PROBAR SI EL NUMERO ES CERO
BTFSS STATUS,2 ;REVISA EL RESULTADO
GOTO DECR ;SI NO ES CERO
GOTO ZERO ;SI ES CERO
DECR DECF SETPOINT,1 ;SI ES CERO DECREMENTA EL REGISTRO PARA PROGRAMAR LA TEMPERATURA
CALL VAL255 ;PRUEBA VALOR INFERIOR A 255
GOTO ESCRI ;VA A LA MEMORIA PARA ESCRIBIR EL DATO
ZERO CLRF SETPOINT ;LIMPIA EL REGISTRO PARA MANDAR DATO AL PUERTO
GOTO ESCRI ;VA A LA MEMORIA PARA ESCRIBIR EL DATO
ESCRI MOVF ALARMA,W
BSF STATUS,RP1 ;CAMBIA AL BANCO 2
BCF STATUS,RP0
MOVWF PIR2 ;AL REGISTRO EEADR
MOVF SETPOINT,W ;EL DATO SE LLEVA A LA MEMORIA PARA SER ALMACENADO
MOVWF PIR1 ;AL REGISTRO EEDATA
BSF STATUS,RP1 ;CAMBIA AL BANCO 3 PARA CONFIGURAR EL EECON1
BSF STATUS,RP0
BCF PIR1,EEPGD ;HABILITA ACCESO A MEMORIA DE DATOS
BSF PIR1,WREN ;HABILITA LA ESCRITURA
MOVLW 55H ;CODIGO
MOVWF PIR2 ;NESESARIO
MOVLW .170 ;PARA EL
MOVWF PIR2 ;PROCESO DE ESCRITURA
BSF PIR1,WR ;EN LA MEMORIA DE DATOS
ESCRI1 BTFSC PIR1,1 ;REVISA LA BANDERA DE FIN DE ESCRITURA
GOTO ESCRI1 ;SI NO HA TERMINADO REVISA DE NUEVO
BCF PIR1,WREN ;DESHABILITA LA ESCRITURA DE MEMORIA
BCF STATUS,RP1 ;CAMBIA AL BANCO 0
BCF STATUS,RP0
MOVLW .0 ;CARGA LA DIRECCION DE LA MEMORIA
CALL PROGRA ;LEER MEMORIA PARA DATO DE COMPARACION
MOVWF SETP4 ;CARGA DATO A REGISTRO
MOVLW .1 ;CARGA CON 1 PARA PCLATH
MOVWF PCLATH ;ESTE DIRECCIONA LA POSISCION DE LA TABLA CONTEM
MOVF SETP4,W ;CARGA VALOR PARA TABLA
CALL CONTEM ;VA A LA TABLA
CLRF PCLATH ;LIMPIA PCLATH PARA NO SALTAR
XORWF SETP2,W ;REALIZA PRUEBA CON AUXILIAR DE SETP2 PARA MIRAR TIEMPO DE SETPOINT
BTFSS STATUS,2 ;REVISA RESULTADO DE LA COMPARACION
GOTO RESETB ;NO ES IGUAL, LIMPIA BANDERA Y REGISTRO DE TIEMPO
GOTO PINES ;SI ES IGUAL
RESETB CLRF MINCOMO ;LIMPIA COMODIN DE TIEMPO
BCF PORTC,1 ;LIMPIA PIN DE ALARMA
GOTO PINES
[[size=20]size=10]ESPERO QUE ME PUEDAN AYUDAR DE ANTEMANO GRACIAS[/size][/size]
-
Ummmm tendras que expecificar en que lenguaje de programacion estas trabajando y poner parte del codigo de comprobaciones y borrado para ver si hay fallos ya que muchos ojos ven mas que dos....