Control de Lavarropas Automático Rev 1

Download Control de Lavarropas Automático Rev 1

Post on 19-Nov-2015

214 views

Category:

Documents

2 download

DESCRIPTION

electronica

TRANSCRIPT

; Control de lavarropas automtico; Rev. 01 // 04-OCT-2003 //

cprogequ0x02;contador de programa (parte baja)estadoequ0x03;Registro de estados del microptoaequ0x05;Puertos de E/Sptobequ0x06ptocequ0x07tiempo1equ0x20;Usados para temporizartiempo2equ0x21tiempo3equ0x22vecesequ0x23displayequ0x24;Resguarda el numero mostrado en el displaygeneralequ0x25

#defineRP0estado, 5;Bits de seleccin de pgina de memoria#defineSELECTptoa, 0;Entrada de seleccin de programa#defineSTARTptoa, 1;Entrada de inicio del proceso#defineMEDIAptoa, 2;Entrada de la llave de media carga#defineNOCENTptoa, 3;Entrada de la llave de exclusin de centrifugado#definePRES50ptoa, 4;Entrada del presostato a media carga#definePRES100ptoa, 5;Entrada del presostato a carga completa#defineBUZZERptob, 7;Control del parlante piezo#defineMOTFASTptob, 6;Motor a alta velocidad#defineMOTSLOWptob, 5;Motor a baja velocidad#defineCALEFptob, 4;Control del sistema de calentamiento del agua#defineVALVULAptob, 3;Entrada de agua (electrovlvula)#defineBOMBAptob, 2;Salida de agua (desagote)#defineSERVONptob, 1;Alimentacin del servo selector de producto#defineSERVPULptob, 0;Pulsos de control del servo selector de producto#definePAUSAgeneral, 0;Indica que entre programa y programa haga una pausa

gotoINICIO;Saltea la tabla del displayTABLAaddwfcprog, 1;Genera los nmeros y caracteres en el displayretlwb'00111111'; 0retlwb'00000110'; 1retlwb'01011011'; 2retlwb'01001111'; 3retlwb'01100110'; 4retlwb'01101101'; 5retlwb'01111101'; 6retlwb'00000111'; 7retlwb'01111111'; 8retlwb'01101111'; 9retlwb'01000000'; - (10)retlwb'01111001'; E (11)retlwb'01110001'; F (12)retlwb'01110011'; P (13)INICIOclrfptoa;Arranca con todo apagadoclrfptobclrfptocclrfgeneral;Flags en cerobsfRP0;configura los pines de E/Smovlwb'00000110'movwf0x1Fmovlwb'00111111'movwfptoaclrfptobclrfptocbcfRP0

movlwd'10';Coloca el '-' en el display durante 5 segundoscallTABLAmovwfptocmovlwd'10'movwftiempo3bsfptoc, 7;Hace destellar el punto del displaycallDEL250bcfptoc, 7;Hace destellar el punto del displaycallDEL250btfssSTART;Entra en modo pausa al presionar cualquier pulsador durante el -gotoSETPAP;Acciona el mecanismo paso a pasobtfssSELECTgotoSETPAP;Acciona el mecanismo paso a pasodecfsztiempo3, 1goto$ -9gotoAUTOM;Saltea la seccin donde coloca la 'P'SETPAPmovlwd'13';Coloca la P en el displaycallTABLAmovwfptocbsfPAUSA;Acciona el flag de Paso a PasocallBEEPcallDEL250btfssSELECT;Espera que suelte ambos pulsadoresgoto$ -2btfssSTARTgoto$ -4AUTOMbtfscPRES50;Si hay agua en el tanque desagota totalmentegotoSEL1Cmovlwd'11';Coloca el 'E' en el displaycallTABLAmovwfptoccallBEEPcallDEL250callBEEPcallDEL250callBEEPbsfBOMBA;Enciende la bomba de desagotebtfssPRES50;Espera que el presostato indique tanque vacogoto$ -1callDIEZSEGcallDIEZSEGbcfBOMBA;Desconecta la bombaSEL1Cmovlwd'1';Arranca en programa corto 1callTABLAmovwfptoccallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL2CbtfssSTART;Controla el pulsador para iniciar el programagotoSTART1Cgoto$ -4SEL2Cmovlwd'2';Programa corto 2callTABLAmovwfptoccallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL3CbtfssSTART;Controla el pulsador para iniciar el programagotoSTART2Cgoto$ -4SEL3Cmovlwd'3';Programa corto 3callTABLAmovwfptoccallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL4CbtfssSTART;Controla el pulsador para iniciar el programagotoSTART3Cgoto$ -4SEL4Cmovlwd'4';Programa corto 4callTABLAmovwfptoccallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL5CbtfssSTART;Controla el pulsador para iniciar el programagotoSTART4Cgoto$ -4SEL5Cmovlwd'5';Programa corto 5callTABLAmovwfptoccallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL6CbtfssSTART;Controla el pulsador para iniciar el programagotoSTART5Cgoto$ -4SEL6Cmovlwd'6';Programa corto 6callTABLAmovwfptoccallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL1LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART6Cgoto$ -4

SEL1Lmovlwd'1';Programa largo 1callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL2LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART1Lgoto$ -4SEL2Lmovlwd'2';Programa largo 2callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL3LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART2Lgoto$ -4SEL3Lmovlwd'3';Programa largo 3callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL4LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART3Lgoto$ -4SEL4Lmovlwd'4';Programa largo 4callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL5LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART4Lgoto$ -4SEL5Lmovlwd'5';Programa largo 5callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL6LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART5Lgoto$ -4SEL6Lmovlwd'6';Programa largo 6callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL7LbtfssSTART;Controla el pulsador para iniciar el programagotoSTART6Lgoto$ -4SEL7Lmovlwd'7';Programa largo 7callTABLAmovwfptocbsfptoc, 7;Enciende el punto decimal del displaycallBEEPcallDEL250;Evita repeticiones por pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2btfssSELECT;Controla el pulsador para cambiar de programagotoSEL1CbtfssSTART;Controla el pulsador para iniciar el programagotoSTART7Lgoto$ -4

START1CcallBEEPcallBOX1;Selecciona la carga de agua por el box 1 (prelavado)callCARGAR;Carga agua en el tanquemovlwd'6';Ejecuta un ciclo de lavado de 10 min.callLAVARcallVACIAR;Desagota el tanque

START2CcallBEEPmovlwd'2';Muestra el 2 en el displaycallTABLAmovwfptocbtfssPAUSA;Si esta pausado...gotoSIGUE2CbtfscSTART;Espera que presione el pulsadorgoto$ -7SIGUE2CcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'6';Ejecuta un ciclo de lavado de 10 min.callLAVARcallVACIAR;Desagota el tanque

START3CcallBEEPmovlwd'3';Muestra el 3 en el displaycallTABLAmovwfptocbtfssPAUSA;Si esta pausado...gotoSIGUE3CbtfscSTART;Espera que presione el pulsadorgoto$ -7SIGUE3CcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'6';Ejecuta un ciclo de lavado de 10 min.callLAVARcallVACIAR;Desagota el tanque

START4CcallBEEPmovlwd'4';Muestra el 4 en el displaycallTABLAmovwfptocbtfssPAUSA;Si esta pausado...gotoSIGUE4CbtfscSTART;Espera que presione el pulsadorgoto$ -7SIGUE4CcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'51';Ejecuta un ciclo de lavado de 25 min.callLAVARcallVACIAR;Desagota el tanque

START5CcallBEEPmovlwd'5';Muestra el 5 en el displaycallTABLAmovwfptocbtfssPAUSA;Si esta pausado...gotoSIGUE5CbtfscSTART;Espera que presione el pulsadorgoto$ -7SIGUE5CcallBOX3;Selecciona la carga de agua por el box 3 (enjuague)callCARGAR;Carga agua en el tanquemovlwd'24';Ejecuta un ciclo de lavado de 16 min.callLAVARcallVACIAR;Desagota el tanque

START6CcallBEEPmovlwd'6';Muestra el 6 en el displaycallTABLAmovwfptocbtfssPAUSA;Si esta pausado...gotoSIGUE6CbtfscSTART;Espera que presione el pulsadorgoto$ -7SIGUE6CcallCENTRIF;Centrifugadomovlwd'12';Coloca la 'F' en el displaycallTABLAmovwfptoccallBEEPFIN;Hace tres beep's largosbtfscSELECT;Espera que presione el pulsadorgoto$ -1movlwd'10';Coloca el '-' en el displaycallTABLAmovwfptoccallDEL250;Previene rebotes en pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2gotoSEL1C;Vuelve al comienzo del programa 1 corto

START1LcallBEEPcallBOX1;Selecciona la carga de agua por el box 1 (prelavado)callCARGAR;Carga agua en el tanquemovlwd'6';Ejecuta un ciclo de lavado de 10 min.callLAVARcallVACIAR;Desagota el tanque

START2LcallBEEPmovlwd'2';Muestra el 2 en el displaycallTABLAmovwfptocbsfptoc, 7;Enciende el punto del displaybtfssPAUSA;Si esta pausado...gotoSIGUE2LbtfscSTART;Espera que presione el pulsadorgoto$ -8SIGUE2LcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'21';Ejecuta un ciclo de lavado de 15 min.callLAVARcallVACIAR;Desagota el tanque

START3LcallBEEPmovlwd'3';Muestra el 3 en el displaycallTABLAmovwfptocbsfptoc, 7;Enciende el punto del displaybtfssPAUSA;Si esta pausado...gotoSIGUE3LbtfscSTART;Espera que presione el pulsadorgoto$ -8SIGUE3LcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'21';Ejecuta un ciclo de lavado de 15 min.callLAVARcallVACIAR;Desagota el tanque

START4LcallBEEPmovlwd'4';Muestra el 4 en el displaycallTABLAmovwfptocbsfptoc, 7;Enciende el punto del displaybtfssPAUSA;Si esta pausado...gotoSIGUE4LbtfscSTART;Espera que presione el pulsadorgoto$ -8SIGUE4LcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'51';Ejecuta un ciclo de lavado de 25 min.callLAVARcallVACIAR;Desagota el tanque

START5LcallBEEPmovlwd'5';Muestra el 5 en el displaycallTABLAmovwfptocbsfptoc, 7;Enciende el punto del displaybtfssPAUSA;Si esta pausado...gotoSIGUE5LbtfscSTART;Espera que presione el pulsadorgoto$ -8SIGUE5LcallBOX2;Selecciona la carga de agua por el box 2 (jabn)callCARGAR;Carga agua en el tanquemovlwd'21';Ejecuta un ciclo de lavado de 15 min.callLAVARcallVACIAR;Desagota el tanque

START6LcallBEEPmovlwd'6';Muestra el 5 en el displaycallTABLAmovwfptocbsfptoc, 7;Enciende el punto del displaybtfssPAUSA;Si esta pausado...gotoSIGUE6LbtfscSTART;Espera que presione el pulsadorgoto$ -8SIGUE6LcallBOX3;Selecciona la carga de agua por el box 3 (enjuague)callCARGAR;Carga agua en el tanquemovlwd'90';Ejecuta un ciclo de lavado de 38 min.callLAVARcallVACIAR;Desagota el tanque

START7LcallBEEPmovlwd'7';Muestra el 7 en el displaycallTABLAmovwfptocbsfptoc, 7;Enciende el punto del displaybtfssPAUSA;Si esta pausado...gotoSIGUE7LbtfscSTART;Espera que presione el pulsadorgoto$ -8SIGUE7LcallCENTRIF;Centrifugadomovlwd'12';Coloca la 'F' en el displaycallTABLAmovwfptoccallBEEPFIN;Hace tres beep's largosbtfscSELECT;Espera que presione el pulsadorgoto$ -1movlwd'10';Coloca el '-' en el displaycallTABLAmovwfptoccallDEL250;Previene rebotes en pulsadores garchabtfssSELECT;Espera que suelte el pulsadorgoto$ -2gotoSEL1L;Vuelve al comienzo del programa 1 corto

BOX1BOX2BOX3BOX4return

CARGARbsfVALVULA;Conecta la electrovlvulabtfscMEDIA;Verifica si debe cargar a media o completogotoMITADbtfssPRES100;Mira el presostato a 100%gotoLLENO;Si se lleno termina la cargagotoCARGAR;Si no se lleno espera que termine la cargaMITADbtfssPRES50;Mira el presostato al 50%gotoLLENO;Si alcanz el nivel termina la cargagotoCARGAR;Si no alcanz el nivel espera que llegueLLENObcfVALVULA;Desconecta la electrovlvulareturn

;////////////////////////////////////////////////////////////////////////////////////////;PROCESO DE LAVADO;Demora 6 minutos en cargar el agua y dos minutos mas en descargarla;Por lo que el tiempo total del lavado es igual a 8 min + (W * 20 seg);Lavado de 10 min -> W = 6;Lavado de 15 min -> W = 21;Lavado de 16 min -> W = 24;Lavado de 25 min -> W = 51;Lavado de 38 min -> W = 90;////////////////////////////////////////////////////////////////////////////////////////LAVARmovwfveces;Utiliza W para condicionar la cant. de ciclos de lavadoLAVAMASbsfMOTSLOW;Enciende el motor en baja velocidad durante 10 segundosmovfptoc, 0;Resguarda el numero mostrado en el displaymovwfdisplaycallDIEZANIbcfMOTSLOW;Apaga el motor durante 10 segundosmovfdisplay, 0;restaura el display a su estado normalmovwfptoccallDIEZSEGdecfszveces, 1gotoLAVAMASreturnVACIARbsfBOMBA;Acciona la bomba de desagotebtfssPRES50;Espera que se vace completamente el tanquegoto$ -1callDIEZSEG;Espera 20 segundos extracallDIEZSEGbcfBOMBA;Desconecta la bombareturn

CENTRIFbtfscNOCENT;Si esta en modo no-centrifugarreturn;Evita hacerlobtfscPRES50;Mira si hay agua en el tanquegotoCENT2;Si no hay agua va directamente a centrifugarbsfBOMBA;Enciende la bomba de desaguebtfssPRES50goto$ -1callDIEZSEGcallDIEZSEGbcfBOMBA;Una vez que se vacia el tanque apaga la bombaCENT2bsfMOTFAST;Enciende el motor a alta velocidadbsfBOMBA;Activa el desagote (por si con suelte escurre algo)callDIEZSEG;Un minuto con bomba a plenocallDIEZSEGcallDIEZSEGcallDIEZSEGcallDIEZSEGcallDIEZSEGmovlwd'4';Espera 2 minutos y monedas con la bomba intermitentemovwfvecesbsfBOMBA;Enciende la bomba de desagotecallDIEZSEGbcfBOMBA;Apaga la bombacallDIEZSEGcallDIEZSEGcallDIEZSEGdecfszveces, 1goto$ -7bcfMOTFAST;Apaga el motorreturn

DIEZANImovlwd'10'movwftiempo3callANIMdecfsztiempo3, 1goto$ -2returnANIMmovlwb'00100000'movwfptoccallDEL250movlwb'00000001'movwfptoccallDEL250movlwb'00000010'movwfptoccallDEL250movlwb'01000000'movwfptoccallDEL250return

DIEZSEGmovlwd'40';Demora de 10 segundosgoto$ +2UNSEGmovlwd'4';Demora de 1 segundomovwftiempo3callDEL250decfsztiempo3, 1goto$ -2return

DEL250movlwd'250';Demora de 1/4 de segundomovwftiempo2TOP2movlwd'110'movwftiempo1TOP1nopnopnopnopnopnopdecfsztiempo1, 1gotoTOP1decfsztiempo2, 1gotoTOP2return

BEEPFINmovlwd'7';Hace tres beep's largosmovwfvecescallBEEPdecfszveces, 1goto$ -2callDEL250movlwd'7'movwfvecescallBEEPdecfszveces, 1goto$ -2callDEL250movlwd'7'movwfvecescallBEEPdecfszveces, 1goto$ -2returnBEEPmovlwd'75'movwftiempo2bsfBUZZERcallDEL55bcfBUZZERcallDEL55decfsztiempo2, 1goto$ -5returnDEL55movlwd'55';Demora de medio milisegundomovwftiempo1T1nopnopnopnopnopnopdecfsztiempo1, 1gotoT1returnend

hex

...

Recommended

View more >