コード例 #1
0
void interrupcao(){
if (serial_interrompeu)  {
     serial_interrompeu=0;
     comando[n] = le_serial();
     if (comando[n]==79) {flagb=1;}
     //////////FUNCAO 4: CONFIGURA RELÓGIO////////////////////Ex: Digitar A4H09 (Hora = 09) , A4D15 (Dia = 15).
     if (comando[n]=='A'){n=0;comando[0] = 'A';} //UTILIZAR VALORES DECIMAIS EM DOIS DIGITOS. ex:06, 23, 15, etc.

         if ( comando[1]== '4' && comando[2]== 'H' && n==2) { endereco=2;} //Escreve o endereco das horas
         if ( comando[1]== '4' && comando[2]== 'M' && n==2) { endereco=1;} //Escreve o endereco dos minutos
         if ( comando[1]== '4' && comando[2]== 'S' && n==2) { endereco=0;} //Escreve o endereco dos segundos
         if ( comando[1]== '4' && comando[2]== 'D' && n==2) { endereco=4;} //Escreve o endereco do dia
         if ( comando[1]== '4' && comando[2]== 'N' && n==2) { endereco=5;} //Escreve o endereco do mes
         if ( comando[1]== '4' && comando[2]== 'Y' && n==2) { endereco=6;} //Escreve o endereco do ano

         if ( comando[1]== '4' && comando[3]>='0'&&comando[3]<='9'&& n==3) {numquant=(comando[3]-0x30);}
         if ( comando[1]== '4' && comando[4]>='0'&&comando[4]<='9'&& n==4) {numquant=numquant*10+(comando[4]-0x30);
                                                                            flagA4=1;
                                                                            }

     //////////////*////////FUNCAO 5: LÊ RELÓGIO////////////////////////////Ex: A5- Lê o relógio e o calendário
         if (comando[1]== '5' && n==1){flagA5=1;}

         ++n; if(n>=5){n=0;}
   }
}
void interrupcao()
{
 if (serial_interrompeu)  {
     serial_interrompeu=0;
     comando = le_serial();

         switch (comando){
             case '1':
              PORTB = 0b110000; 
             break;

             case '2':
              PORTB = 0b11101101; 
             break;

             case '3':
              PORTB = 0b11111001; 
             break;

             case '4':
              PORTB = 0b10110011; 
             break;

             case '5':
              PORTB = 0b11011011; 
             break;

             case '6':
              PORTB = 0b11011111; 
             break;

             case '7':
              PORTB = 0b11110000; 
             break;

             case '8':
              PORTB = 0b11111111; 
             break;

             case '9':
              PORTB = 0b11111011; 
             break;

             case '0':
              PORTB = 0b11111110; 
             break;

             case 'D':
             pisca=0; nivel_baixo(pin_b7);
             break;

             case 'P':
             pisca=1;nivel_alto(pin_b7);
             break;
         }
   }
}
コード例 #3
0
ファイル: main.c プロジェクト: SanUSB-grupo/SanUSBLE
//#pragma interrupt interrupcao
void interrupt interrupcao(){

    if (INTCONbits.TMR0IF)     {  //espera o estouro do timer0 -> TMR0L=0
    INTCONbits.TMR0IF = 0;        //limpa a flag de interrupção
    i++; if(i>255){i=0;}
    if(i>=comand[1]){nivel_alto(pinored);} else {nivel_baixo(pinored);}
    if(i>=comand[2]){nivel_alto(pinogreen);} else {nivel_baixo(pinogreen);}
    if(i>=comand[3]){nivel_alto(pinoblue);} else {nivel_baixo(pinoblue);}

    TMR0L = TMR0L + 16; // load time before plus 240us/12(48MHz) = 10us x 4 (prescaler 001) = 80us -> T = 80us * 255 =~  20ms
                                }

if (serial_interrompeu)  { INTCONbits.TMR0IE = 0;//Desabilita interupção timer 0
     serial_interrompeu=0;
     comando[n] = le_serial();
     if (comando[n]==79) {flagb=1;n=0;}

         if (m>13 && comando[0]==65) {m=n; flag=1;}

         if (comando[n]=='R'){n=0;comando[0] = 'R';} //UTILIZAR VALORES DECIMAIS EM DOIS DIGITOS. ex:06, 23, 15, etc.

         if (n>=3 && comando[0]=='R')  {
                         comand[1]= comando[1]; //Led RGB anodo comum//
                         comand[2]= comando[2];
                         comand[3]= comando[3];
                         n=0;  comando[0] = 32;
                         inverte_saida(pin_b7); INTCONbits.TMR0IE = 1;
                                        }
            ++n; m=n; if(n>=29){n=0;}

            switch (comando[0]){
            case  79 : {flag=0; chegou=1;m=0;}

            case 'L' : {flag=0; n=0; c=1; nivel_alto(pin_b7); envia=1;} //habilita envio online via APK SanUSBLE
            break;
            case 'D' : {flag=0; n=0; nivel_baixo(pin_b7); envia=0;} //Desabilita envio
            break;
            case 'P': { flag=0; n=0; nivel_alto(pin_b7);envia=0;} //Desabilita envio
            break;
            case 'T': {flag=0; n=0; inverte_saida(pin_b7); envia=0;} //Desabilita envio
            break;
                               }
                            }
}
コード例 #4
0
void interrupcao() {
    unsigned char c;

    if (serial_interrompeu) {
        serial_interrompeu = 0;
        c = le_serial();
        // if (c >= '0' && c<= '9')
        {
            switch (c) {
                case 'L':
                    nivel_alto(pin_d7);
                    break;
                case 'B':
                    nivel_baixo(pin_d7);
                    break;

            }
        }
    }
}
コード例 #5
0
void interrupcao(){
    if (serial_interrompeu){
        serial_interrompeu=0;
        comando[n] = le_serial();
        if (comando[n]== 'D'){
            flag = 1;
        }
        if(n==8){
            if(comando[0] == 'L'){
                if(comando[8]=='y'){
                    dia = comando[1]-0x30;
                    hora = (10*(comando[2]-0x30))+(comando[3]-0x30);
                    minuto = (10*(comando[4]-0x30))+(comando[5]-0x30);
                    segundo = (10*(comando[6]-0x30))+(comando[7]-0x30);
                }
            }
        }
        if(n==8){
            n=0;
        }else{
            ++n;
        }
    }
}
コード例 #6
0
void interrupcao(){
if (serial_interrompeu)  {
     serial_interrompeu=0;
     comando[n] = le_serial(); m=n; //comand[m]=comando[n];

         switch (comando[n]){

             case 'C':
             AT1=1;
             break;

             case 'I':
             AT2=1;
             break;

             case 'A':
             AT1=1;
             break;

             case 'S':
             AT1=1;
             break;

             case '*':
             AT1=1;
             break;
           case 'Y':
             {n=0;comando[0] = 'Y';}
              break;
         }
 //***************possibility 1->character***********************
                            if (comando[0]== 'Y' && n==1){comando[0]== 32;
                                       switch(RCREG)
                                                  {
                                                case 'L':  nivel_alto(pin_b7); //type in browser address bar: 192.168.1.195/YL
                                                           flagsw=1;
                                                break;

                                                case 'D': nivel_baixo(pin_b7); //type in browser address bar: 192.168.1.195/YD
                                                break;

                                                case 'P':  nivel_alto(pin_b7); //type in browser address bar: 192.168.1.195/YP
                                                break;

                                                case 'T': inverte_saida(pin_b7); //type in browser address bar: 192.168.1.195/YT to toggle Led and open a HTML page
                                                          flagsw=1;
                                                break;

                                                 }
                                                         }
//***************possibility 2-> word**************************
                            if ( comando[1]== 'O' && comando[2]== 'N')
                                                {
                                                 nivel_alto(pin_b7);  // ON
                                                }

                            if ( comando[1]== 'O' && comando[2]== 'F' && comando[3]== 'F')
                                                {

                                                 nivel_baixo(pin_b7); // OFF
                                                }
         ++n; if(n>=64){n=0;}
   }

                   }