示例#1
0
void main(){
	setup();
	while(1){
		for(i=0;i<3;i++){
			old_pin[i]=pin[i];
			pin[i]=input_b() & (1<<(7-i));
			}

		if(pin[1]==0){output_a(FORWARD);}
		else if(pin[0]==0){output_a(R_TURNV);delay_ms(8);j=1;}
		else if(pin[2]==0){output_a(L_TURNV);delay_ms(8);j=1;}
		else {	j++;
				output_a(BACK);
				delay_ms(3);
				output_a(STOP);
				delay_us(100);
				output_a(R_TURN);
				delay_ms(10);}
		//if(j==20){output_a(BACK);delay_ms(50);j=1;}
		delay_ms(1);
		output_a(STOP);
		delay_us(100);
	}
	for (;;) {
		for (PWM_COUNT=PWM_MAX;PWM_COUNT<1;PWM_COUNT--){
			if(state[1]>PWM_COUNT) 	output_a(state[0]);
			else 					output_a(state[2]);
			delay_ms(100);
		}
	}
}
示例#2
0
void main(){
	setup();
	while(1){
		for(i=0;i<3;i++){
			old_pin[i]=pin[i];
			pin[i]=input_b() & (1<<(7-i));
			}

		if(pin[1]==0){output_a(FORWARD);}
		else if(pin[0]==0){output_a(R_TURNV);delay_ms(8);j=1;}
		else if(pin[2]==0){output_a(L_TURNV);delay_ms(8);j=1;}
		else {	j++;
				output_a(BACK);
				delay_ms(3);
				output_a(STOP);
				delay_us(100);
				output_a(R_TURN);
				delay_ms(1);}
		//if(j==20){output_a(BACK);delay_ms(50);j=1;}
		delay_ms(1);
		output_a(STOP);
		delay_us(100);
		if(k==200) {
			output_a(BRAKE);
			delay_ms(100);
		}
	}
	while(1){
		output_a(R_TURN);
		delay_ms(1);}
}
示例#3
0
void PortB_isr()
{
//Pin RB4 se usará para el comando "Aceptar", RB5 será "Arriba", RB6... "Abajo" y RB7 será "Cancelar".
   //Para arreglos activo en bajo.
   pushButton = input_b();
   if ((pushButton | 0xEF)==0xEF)    //Aceptar
   {
      if(displayConfigs==false){
         displayConfigs=true;
      }
      else
         RB4=true;
      cls=true;
   }

   if ((pushButton | 0xDF)==0xDF)    //Arriba
   {
      RB5=true;
   }

   if ((pushButton | 0xBF)==0xBF)    //Abajo
   {
      RB6=true;
   }

   if ((pushButton | 0x7F)==0x7F)    //Cancelar
   {
      RB7=true;
      cls=true;
   }
}
示例#4
0
main() {
   short output;
   long  count,max_count;

   error_count=0;
   resync();

   do {
      while((input_a() & 3)==sequence[seq_index]) ;
      seq_index=(seq_index+1)&3;
      if ((input_a() & 3)!=sequence[seq_index])
        resync();
      else {
         if(error_count==0)
           output_low(pin_a2);
         else
           --error_count;
         max_count=input_b()>>2;
         count++;
         if(count>max_count) {
           output=!output;
           output_bit(pin_a3,output);
           count=0;
         }
      }
   } while (true);
}
示例#5
0
文件: MICROPF.c 项目: mr3m/MICRO
//En la interrupcion externa un valor es adquirido a traves del 
//teclado matricial
void  EXT_isr(void)     
{
    output_low(LED);
    printf(lcd_putc,"\f");
    lcd_gotoxy(1,2);
    printf(lcd_putc," . = * Enter = #");
    d=0;
    i=0;
    while (text!='#') {         //TAbla de conversionaes digitales
        delay_ms(200);  
        text='E';
        if ((input(PIN_B0)!=0)) {
            tec=input_b();
            if      ((tec==1)||(tec==-31))
                text='1';
            else if ((tec==113)||(tec==49)||(tec==-15)||(tec==17))
                text='2';
            else if ((tec==9)||(tec==-23))
                text='3';
            else if ((tec==5)||(tec==-27))
                text='4';
            else if ((tec==117)||(tec==21)||(tec==53)||(tec==-11))
                text='5';
            else if ((tec==13)||(tec==-19))
                text='6';
            else if ((tec==3)||(tec==-29))
                text='7';
            else if ((tec==115)||(tec==-13)||(tec==51)||(tec==19))
                text='8';
            else if ((tec==-53)||(tec==11)||(tec==-21)||(tec==-117))
                text='9';
            else if ((tec==-25)||(tec==7))
                text='.';
            else if ((tec==23)||(tec==55)||(tec==-9)||(tec==-21))
                text='0';
            else if ((tec==-17)||(tec==15))
                text='#';
            lcd_gotoxy(1+i,1);
            printf(lcd_putc,"%c",text);
            delay_ms(200);
            d[i]=text;
            i++;   
        }        
    }
    if (atof(d)==0)   //Valor predeterminado
    vn=30; 
    else
    vn=atof(d);         //El valor adquirido es un FLOAT
    printf(lcd_putc,"\f");
    lcd_gotoxy(1,2);
    printf(lcd_putc,"IN");
    lcd_gotoxy(1,1);
    printf(lcd_putc,"%.1f",vn);
    enable_interrupts(INT_TIMER1);
    //Habilita las interrupciones por timer pues solo al haber 
    //adquirido una temperatura tiene sentido 
    enable_interrupts(INT_TIMER2);
    }  
示例#6
0
void teiki(void){
	//escape and reading
	for(i=0;i<3;i++){
		old_pin[i]=pin[i];
		pin[i]=input_b() & (1<<i);
		//pin[i]=PORTB() & (1<<i);
		old_state[i]=state[i];
	}
	
	//mode judge
	if(!pin[LS_Center]){
		state[0] = FORWARD;
		state[2] = STOP;
		if(pin[LS_Left]==pin[LS_Right]){
			// b b b or w b w
			state[1]=PWM_MAX+1;
		}
		else{
			if(!pin[LS_Left]){
				//b b w
				state[0]=L_TURN;
			}
			else{
				//w b b
				state[0]=R_TURN;
			}
			state[1]=PWM_MAX/2;
			state[2]=FORWARD;
		}
	}
	else if(!pin[LS_Left]){
		if(old_state[0]==L_TURN){
			state[0]=L_TURNV;
		}
		else{
			state[0]=L_TURN;
		}
		state[1]=PWM_MAX/2;
		state[2]=STOP;
	}
	else if(!pin[LS_Right]){
		if(old_state[0]==R_TURN){
			state[0]=R_TURNV;
		}
		else{
			state[0]=R_TURN;
		}
		state[1]=PWM_MAX/2;
		state[2]=STOP;
	}
	else{
		state[0]=FORWARD;
		state[1]=PWM_MAX-1;
		state[2]=STOP;
	}
}
示例#7
0
void slave_id()
{

byte id;
id = input_b();
id = (id&0b11110000);         // mascara 
id = id>>3;                   // Rotate para obter sempre um endereco par
id = id +0xA0;                // Soma A0 range de começo
sspadd = id;                  // coloca no registo a qual reponde o barramento

}
示例#8
0
void trata_rb()
{
	int x;	
	if (input(MODE) == 0)
	{
		changeMode(); 	
	}
	if (input(INC) == 0)
	{
		incClick(); 	
	}
	if (input(DEC) == 0)
	{
		decClick();	
	}
	x = input_b();
}
示例#9
0
文件: pLED.c 项目: bachdx60343/pled
void  RB_isr(void) 
{
   BYTE changes;
   port_b = input_b();
   //compare status of port B with previous value
   changes = last_b ^ port_b;
   last_b = port_b;
   if(bit_test(changes, 2))
   {
      mode = MODE_A;
      smode = 1;
   }
   if(bit_test(changes, 3))
   {
      mode = MODE_B;
      smode = 1;
   }
   if(bit_test(changes, 4))
   {
      mode = MODE_C;
      //change value of smode in range of 0-3
      if (smode == 0) smode = 1;
      else if (smode == 1) smode = 2;
      else if (smode == 2) smode = 3;
      else if (smode == 3) smode = 0;
   }
   if(bit_test(changes, 5))
   {
      mode = MODE_D;
      smode = 1;
      //change direction of text: clockwise, anti-clockwise, still
      if (pled_status == 0) pled_status = 1;
      else if (pled_status == 1) pled_status = 2;
      else if (pled_status == 2) pled_status = 3;
      else if (pled_status == 3) pled_status = 0;
      if (pled_status == 0 || pled_status == 2)
      	pled_direction = 0;
      else if (pled_status == 1) pled_direction = 1;
      else if (pled_status == 3) pled_direction = -1;
   }
}
示例#10
0
void main ()
{
disable_interrupts(GLOBAL);   //общее запрещение прерываний
setup_oscillator(OSC_8MHZ);  //|OSC_INTRC
 
set_tris_a(0x00);   //выходы
set_tris_b(0xff);   //входы
set_tris_c(0x10);   //выходы, RC4-вход(данные от STM)

//output_c(0x4f);
portc=0x4f;
porta=0x7f;
portb=0xff;

//set_tris_c(0x10);   //выходы, RC4-вход(данные от STM)
//output_a(0x7f);
//output_b(0xff);

pit_bykl();
pr_wkl_pit=0;   //пр. вкл. питания (исп. для 1-го нажатия кн. "Питание")

delay_ms(1000);  //для настройки STM

//Инициализация модуля MSSP(режим SPI)
SSPCON1=0x31;
SSPSTAT=0;    //0x80;
SSPBUF=0x55;

//иниц. таймеров:
//t0con=0xc8; //8-ми разр
t0con=0x88; //16-ми разр счетчик
T1CON=0x85;
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);  

set_timer1(62286);
set_timer0(64536); 

//enable_interrupts(INT_TIMER2);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

//СОСТОЯНИЕ кнопок и ручек по ВКЛЮЧЕНИЮ:
//----------------------------------------
for (ii=0; ii<6;ii++) 
 {
   du_pA=porta&0xc0|mask[ii];
   output_a(du_pA);   
   pr_state_rb[ii] = input_b();
 }

while(1)
{
   for (ii=0; ii<6;ii++) 
 {
   pr_ruk=0;
  // output_a(mask[ii]);              //SL... -> PORTA
   du_pA=porta&0xc0|mask[ii];
   output_a(du_pA); 
   tek_state_rb[ii] = input_b();
   if (pr_state_rb[ii] ^ tek_state_rb[ii])
    //возможно  нажатие или вращение ?
   {
    if ((tek_state_rb[ii]&mask_kn[ii])!=mask_kn[ii])  //если это кнопка, то отрабат. дребезг
       { //кнопка
	    delay_ms(1);
	    tek1_state_rb = input_b();
	    delay_ms(1);
	    tek2_state_rb = input_b();
	    delay_ms(1);
	    tek3_state_rb = input_b();
	
	//    if (tek_state_rb[ii] == tek3_state_rb)  //дребезг зак.-есть нажатие/отжатие или вращение!
       }
     else  //ручка
       {
         tek3_state_rb=tek_state_rb[ii];

       }

       if (tek_state_rb[ii] == tek3_state_rb)  //дребезг зак.-есть нажатие/отжатие или вращение!

       switch(ii)   //номер сигнала SL0,SL1,SL2,SL3,SL4,SL5
			{
              case 0:  //SL0
                //Кнопки K1, Ser:
				if (!(tek3_state_rb & (1 << 0)))  { buf_per=0x81;  //№1-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 0)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x01;  //№1-отж.
                                                    break; 
                                                  }
                  if (!(tek3_state_rb & (1 << 5))) { buf_per=0x82;  //№2-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 5)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x02;  //№2-отж.
                                                    break; 
                                                  }

                //Ручки -B_K1, +B_K1 -Sm_K1, +Sm_K1:
                //***********************************
                
              if  ((tek3_state_rb & 0x02)&&(tek3_state_rb & 0x04))  //RB1 & RB2==1
                    { 
                     for (ib=0; ib<2;ib++) 
                     {
                       if ((tek3_state_rb & (0x02 << ib)) && (!(pr_state_rb[ii] & (0x02 << ib))))
                            
                            switch(ib)
			                {
                               case 0: 
                                pr_ruk=1;
                                buf_per=0x14;  //№20-влево 
                               break;

                               case 1:
                                pr_ruk=1;  
                                buf_per=0x94;  //№20-вправо
                               break;
                            }//switch 
                     } //for  ib    
                   } //if

          //    else
          //     {                 
               if  ((tek3_state_rb & 0x08)&&(tek3_state_rb & 0x10)&& (!pr_ruk))   //RB3 & RB4==1 & pr_ruk=0
                 {
                     for (ib=0; ib<2;ib++) 
                   {

                     if ((tek3_state_rb & (0x08 << ib)) && (!(pr_state_rb[ii] & (0x08 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                               {
                                buf_per=0x15;  //№21-влево 
                                break;
                               }

                               case 1: 
                               {
                                buf_per=0x95;  //№21-вправо
                               break;
                               }
                            }//switch ib
                     } //for
                   
                   } //if
         //      } //else
              pr_state_rb[ii]=tek3_state_rb;
              pr_ruk=0;
			  break;
                               
              case 1:    //SL1
               //Кнопки K2, DISP:
				if (!(tek3_state_rb & (1 << 0))) { buf_per=0x83;  //№3-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 0)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x03;  //№2-отж.
                                                    break; 
                                                  }
                  if (!(tek3_state_rb & (1 << 5))) { buf_per=0x84;  //№4-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 5)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x04;  //№4-отж.
                                                    break; 
                                                  }

                //Ручки -B_K2, +B_K2 -Sm_K2, +Sm_K2:
                //***********************************
                
              if  ((tek3_state_rb & 0x02)&&(tek3_state_rb & 0x04))  //RB1 & RB2==1
                    { 
                     for (ib=0; ib<2;ib++) 
                     {
                       if ((tek3_state_rb & (0x02 << ib)) && (!(pr_state_rb[ii] & (0x02 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                                pr_ruk=1;
                                buf_per=0x16;  //№22-влево
                               break;

                               case 1: 
                                pr_ruk=1;
                                buf_per=0x96;  //№22-вправо
                               break;
                            }//switch 
                     } //for      
                   } //if

           //   else
           //    {                 
               if  ((tek3_state_rb & 0x08)&&(tek3_state_rb & 0x10) && (!pr_ruk))   //RB3 & RB4==1 & (!pr_ruk)
                 {
                     for (ib=0; ib<2;ib++) 
                   {

                     if ((tek3_state_rb & (0x08 << ib)) && (!(pr_state_rb[ii] & (0x08 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                               {
                                buf_per=0x17;  //№23-влево
                                break;
                               }

                               case 1: 
                               {
                               buf_per=0x97;  //№23-вправо
                               break;
                               }
                            }//switch 
                     } //for
                   
                   } //if
           //    } //else
//              pr_state_rb[ii]=tek3_state_rb;
              pr_ruk=0;
						 		                        
			  break;
      
              case 2: //SL2
               //Кнопки Raz, Pam:
				if (!(tek3_state_rb & (1 << 0))) { buf_per=0x85;  //№5-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 0)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x05;  //№5-отж.
                                                    break; 
                                                  }
                  if (!(tek3_state_rb & (1 << 5))) { buf_per=0x86;  //№6-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 5)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x06;  //№6-отж.
                                                    break; 
                                                  }
                //Ручки -T, +T -Del, +Del:
                //***********************************
                
              if  ((tek3_state_rb & 0x02)&&(tek3_state_rb & 0x04))  //RB1 & RB2==1
                    { 
                     for (ib=0; ib<2;ib++) 
                     {
                       if ((tek3_state_rb & (0x02 << ib)) && (!(pr_state_rb[ii] & (0x02 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                                pr_ruk=1;
                                buf_per=0x18;  //№24-влево
                               break;

                               case 1: 
                                pr_ruk=1;
                                buf_per=0x98;  //№24-вправо
                               break;
                            }//switch 
                     } //for      
                   } //if

           //   else
               {                 
               if  ((tek3_state_rb & 0x08)&&(tek3_state_rb & 0x10) && (!pr_ruk))   //RB3 & RB4==1 & (!pr_ruk)
                 {
                     for (ib=0; ib<2;ib++) 
                   {

                     if ((tek3_state_rb & (0x08 << ib)) && (!(pr_state_rb[ii] & (0x08 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                               {
                                buf_per=0x19;  //№25-влево
                                break;
                               }

                               case 1: 
                               {
                               buf_per=0x99;  //№25-вправо
                               break;
                               }
                            }//switch 
                     } //for
                   
                   } //if
               } //else
//              pr_state_rb[ii]=tek3_state_rb; 
			  pr_ruk=0;			 		                        
			  break; 

              case 3:  //SL3

               //Кнопки Sinch, Pusk, Kurs, Izm:
				if (!(tek3_state_rb & (1 << 0))) { buf_per=0x87;  //№7-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 0)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x07;  //№7-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 3))) { buf_per=0x88;  //№8-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 3)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x08;  //№8-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 4))) { buf_per=0x89;  //№9-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 4)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x09;  //№9-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 5))) { buf_per=0x8A;  //№10-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 5)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x0A;  //№10-отж.
                                                    break; 
                                                  }

                //Ручки -Ur, +Ur :
                //****************
                
              if  ((tek3_state_rb & 0x02)&&(tek3_state_rb & 0x04))  //RB1 & RB2==1
                    { 
                     for (ib=0; ib<2;ib++) 
                     {
                       if ((tek3_state_rb & (0x02 << ib)) && (!(pr_state_rb[ii] & (0x02 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                                buf_per=0x1A;  //№26-влево
                               break;

                               case 1:
                               buf_per=0x9A;  //№26-вправо
                               break;
                            }//switch 
                     } //for      
                   } //if
//			    pr_state_rb[ii]=tek3_state_rb; 			 		                        
			  break;

              case 4: // SL4
              //Кнопки Pit, Sbor:
				if (!(tek3_state_rb & (1 << 0)))  { buf_per=0x8B;  //№11-наж.
                                                    if (pr_wkl_pit==0)
                                                      {
                                                       pit_bkl();
                                                       
                                                      } 
                                                    break; 
                                                  }
                  if (!(tek3_state_rb & (1 << 5))) { buf_per=0x8C;  //№12-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 5)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x0C;  //№12-отж.
                                                    break; 
                                                  }


                //Ручки -Ur, +Ur :
                //****************
                
              if  ((tek3_state_rb & 0x02)&&(tek3_state_rb & 0x04))  //RB1 & RB2==1
                    { 
                     for (ib=0; ib<2;ib++) 
                     {
                       if ((tek3_state_rb & (0x02 << ib)) && (!(pr_state_rb[ii] & (0x02 << ib))))
                             
                            switch(ib)
			                {
                               case 0: 
                                buf_per=0x1B;  //№27-влево
                               break;

                               case 1: 
                                buf_per=0x9B;  //№27-вправо
                               break;
                            }//switch 
                     } //for      
                   } //if
//			     pr_state_rb[ii]=tek3_state_rb; 			 		                        
			  break; 

              case 5: //SL5 
               //Кнопки Men,"1", "2", "3", "4", "5":
				if (!(tek3_state_rb & (1 << 0))) { buf_per=0x8D;  //№13-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 0)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x0D;  //№13-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 1))) { buf_per=0x8e;  //№14-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 1)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x0e;  //№14-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 2))) { buf_per=0x8f;  //№15-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 2)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x0f;  //№15-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 3))) { buf_per=0x90;  //№16-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 3)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x10;  //№16-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 4))) { buf_per=0x91;  //№17-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 4)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x11;  //№17-отж.
                                                    break; 
                                                  }
                if (!(tek3_state_rb & (1 << 5))) { buf_per=0x92;  //№18-наж.
                                                    do
                                                     tek3_state_rb = input_b(); 
                                                    while (!(tek3_state_rb & (1 << 5)));
                                                    //отжатие произошло
                                                    while (buf_per!=0) {}
                                                     buf_per=0x12;  //№18-отж.
                                                    break; 
                                                  }

  
                pr_state_rb[ii]=tek3_state_rb; 						 		                        
			  break;

            }//switch(ii) 
    pr_state_rb[ii]=tek3_state_rb;         
   }//if
     
 }//for (ii)

}//while(1)
//output_bit(PIN_C3,1);
//BUF_CAP[i-1]=input(PIN_C4);
//output_bit( PIN_B2, 0);  //Ldac  в 0

//level = input_state(pin_A3);

}  //main
示例#11
0
void trata_rb() { // interrupcao na porta B
    int x;

    // configurar alarme
    if (input(PIN_B4) == 0) {
        if (var_alarme_configurado == 1 && var_alarme_tocando == 1) { // verifica se o alarme esta ativo e tocando
            parar_alarme();
        } else if (var_alarme_configurando == 1) { // se o alarme estiver sendo configurado, o segundo click é para setar o alarme
            // verifica se o alarme foi configurado
            if (var_alarme_horas == 0 && var_alarme_minutos == 0) { // alarme nao configurado
                var_alarme_configurado = 0;
            } else {
                var_alarme_configurado = 1;
            }
            output_low(PIN_A0); // baixa pino do alarme que indica o alarme sendo configurado
            var_alarme_configurando = 0; // configuracao do alarme terminou
            exibe_relogio(temp_global_horas, temp_global_minutos);
        } else {
			// alerta que o alarme esta sendo configurado
            output_high(PIN_A0); // pino alarme
            // reseta o display para configurar hora do alarme
            clean_displays();
            // primeiro click no B4, quer configurar o alarme
            var_alarme_configurando = 1;
        }
    }

    // incrementar hora
    if (input(PIN_B5) == 0) {
        // verifica se e o alarme esta sendo configurado
        if (var_alarme_configurando) {
            var_alarme_horas = var_alarme_horas + 1;
            if (var_alarme_horas == 24) {
                var_alarme_horas = 0;
            }

            exibe_relogio(var_alarme_horas, var_alarme_minutos);
        } else {
            incrementa_minutos(60);
            exibe_relogio(temp_global_horas, temp_global_minutos);
        }
    }

    // incrementar minuto
    if (input(PIN_B6) == 0) {
        // verifica se e o alarme esta sendo configurado
        if (var_alarme_configurando) {
            var_alarme_minutos = var_alarme_minutos + 1;
            if (var_alarme_minutos == 60) {
                var_alarme_minutos = 0;
                var_alarme_horas = var_alarme_horas + 1;
            }

            exibe_relogio(var_alarme_horas, var_alarme_minutos);
        } else {
            incrementa_minutos(1);
            exibe_relogio(temp_global_horas, temp_global_minutos);
        }
    }

    x = input_b(); // reinicia leitura da porta B
}