Autor: Lucimar | Publicado: 2013-04-10T20:15:00-07:00

&nbsp;MAQUINA DE LAVAR







#include &lt;lpc213x.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //incluindo bibliotecas#include "c:\Keil\ARM\3_LCD 2X 16\lcd.h" //#include &lt;stdio.h&gt;&nbsp; são arquivos-texto #define&nbsp; liga_desliga&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;&lt;20) //in#define&nbsp; admisao_agua&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;&lt;16)//out#define&nbsp; enxurpo_agua&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;&lt;17) //out&nbsp;&nbsp; #define&nbsp; sensor_porta&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;&lt;22)&nbsp; //in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //DECLARANDO AS VARIÁVEIS#define&nbsp; sensor_nivel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;&lt;21) //in&nbsp;&nbsp; &nbsp;&nbsp; #define&nbsp; motor_direita&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;&lt;18)&nbsp; //out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //DECLARANDO AS VARIÁVEIS#define&nbsp; motor_esquerda&nbsp; (1&lt;&lt;19) //#define led (1&lt;&lt;21)int tempo1 (int limite)&nbsp;&nbsp;&nbsp; // declarando as variáveis antes de utiliza-las{int t;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //declara variável local t inteirafor (t=0;t&lt;limite;t++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //loop for inicia t=0 compara com o limite definido}/******************************************************************************&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EINT0 interrupt service function******************************************************************************/__irq void EINT0_IRQHandler(void) {IOSET1= (led);&nbsp;&nbsp;&nbsp; lcd_clr();lcd_gotoxy(0,2);lcd_puts(" tampa aberta");IOCLR1= (enxurpo_agua);IOCLR1= (admisao_agua);IOCLR1= (motor_esquerda);IOCLR1= (motor_direita);EXTINT = 1;&nbsp;&nbsp; /* Clear EINT0 interrupt flag */VICVectAddr = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Acknowledge Interrupt */}/******************************************************************************&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EINT1 interrupt service function******************************************************************************/__irq void EINT1_IRQHandler(void) {EXTINT = 2;&nbsp;&nbsp; /* Clear EINT1 interrupt flag */VICVectAddr = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Acknowledge Interrupt */}/* Default Interrupt Function: may be called when ISR is disabled */__irq void DefISR (void) {}int tempo (){int t;for(t=0;t&lt;10;t++);}int main(void){/*&nbsp;&nbsp;&nbsp; P0.0:&nbsp; PORT0.0 (General purpose I/O)&nbsp; Output&nbsp; &nbsp;&nbsp;&nbsp; P0.14:&nbsp; EINT1 (External interrupt 1 input)&nbsp;&nbsp;&nbsp; P0.16:&nbsp; EINT0 (External interrupt 0 input)*/PINSEL0=0x20000000; // binary: 00100000_00000000_00000000_00000000PINSEL1=0x00000001;// binary: 00000000_00000000_00000000_00000001PINSEL2=0x00000000;// binary: 00000000_00000000_00000000_00000000IODIR0 = 0xFFFCFFFF;&nbsp; //definindo bits de entrada e saidaIODIR1 = 0xFF8FFFFF;init_lcd ();/******************************************************************************&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; External interrupts*******************************************************************************&nbsp;&nbsp;&nbsp; Ext. interrupt 0 mode: LEVEL sensitivity / low&nbsp;&nbsp;&nbsp; Ext. interrupt 1 mode: LEVEL sensitivity / low*/EXTMODE=0x00;&nbsp;&nbsp;&nbsp;&nbsp; /* binary: 00000000 */EXTPOLAR=0x00;&nbsp;&nbsp;&nbsp;&nbsp; /* binary: 00000011 */INTWAKE = ( INTWAKE &amp; 0xC00F ) | 0x0000;//binary: 00000000_00000000EXTINT=0x03; // clear the external interrupt flags/******************************************************************************&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vector interrupt initialization******************************************************************************/&nbsp;&nbsp; VICVectAddr0 = (unsigned long) EINT0_IRQHandler; //set interrupt vector 0&nbsp;&nbsp; VICVectCntl0 = ( 0x20 | 14 );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //enable slot &amp; use it for EINT0 Interrupt&nbsp;&nbsp; VICIntEnable |= ((unsigned long)1&lt;&lt;14);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Enable EINT0 Interrupt&nbsp;&nbsp; VICVectAddr1 = (unsigned long) EINT1_IRQHandler;//set interrupt vector 1&nbsp;&nbsp; VICVectCntl1 = ( 0x20 | 15 );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //enable slot &amp; use it for EINT1 Interrupt&nbsp;&nbsp; VICIntEnable |= ((unsigned long)1&lt;&lt;15);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Enable EINT1 Interrupt&nbsp;&nbsp; VICDefVectAddr = (unsigned long) DefISR;//un-assigned VIC interrupts&nbsp;&nbsp; while(1){if (IOPIN0 &amp; (liga_desliga))&nbsp;&nbsp;&nbsp; {IOCLR1= (led);IOCLR1 = (admisao_agua);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lcd_clr();lcd_puts(" ligar a maquina");}else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {if (!(IOPIN1 &amp; (sensor_nivel))){IOCLR1= (led);IOSET1=(admisao_agua);lcd_clr();lcd_puts(" admitindo agua");}else{IOCLR1= (led);&nbsp;IOCLR1=(admisao_agua);lcd_clr();lcd_puts(" lavando");while(1)&nbsp;{&nbsp;int i;0;&nbsp;for (i=0;i&lt;3;i++)&nbsp;{IOCLR1= (led);IOSET1= (motor_direita);tempo1(300);&nbsp;&nbsp;&nbsp; IOCLR1= (motor_direita);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOSET1= (motor_esquerda);tempo1(300);&nbsp;&nbsp;&nbsp; IOCLR1= (motor_esquerda);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; i++;}if (IOPIN1 &amp; (sensor_nivel)){IOSET1= (enxurpo_agua);&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (((IOPIN1 &amp; (sensor_nivel))))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {IOCLR1= (led);lcd_clr();lcd_puts(" enxaguando");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }while(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {if (!(IOPIN1 &amp; (sensor_nivel)))&nbsp;&nbsp;&nbsp; {IOCLR1= (led);IOCLR1= (enxurpo_agua);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //desliga enxurpoIOSET1=(admisao_agua);lcd_clr();lcd_puts(" admitindo agua");&nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;while (1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //nova condição{&nbsp;if (IOPIN1 &amp; (sensor_nivel))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //consulta sensor nivel{IOCLR1= (led);IOCLR1= ( admisao_agua);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //desliga admissão de agualcd_clr();lcd_puts("CENTRIFUGANDO");IOSET1= (enxurpo_agua);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //liga enxurpoIOSET1= (motor_direita);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //liga motorIOSET1= (motor_esquerda);tempo1(200);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //definido tempoIOCLR1= (enxurpo_agua);IOCLR1= (motor_direita);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //desligandoIOCLR1= (motor_esquerda);while(1){IOCLR1= (led);lcd_clr();lcd_puts(" FIM DE CICLO"); while (1);&nbsp;&nbsp;&nbsp; //fim do ciclo} } } } } } } } }