void  RTCC_isr(void) {

	//output_toggle(PIN_B6);

   
   switch(levelEnable){
      case 0:output_a(level_0_Enable);
          output_c(cubeLevelC0);
             output_d(cubeLevelD0); 
      break;
      case 1:output_a(level_1_Enable);
          output_c(cubeLevelC1);
             output_d(cubeLevelD1);
      break;
      case 2:output_a(level_2_Enable);
          output_c(cubeLevelC2);
             output_d(cubeLevelD2);
      break;
      case 3:output_a(level_3_Enable);
          output_c(cubeLevelC3);
             output_d(cubeLevelD3);
      break;
   }
   
   if (levelEnable == 3){
      levelEnable = 0;
   }else{
       levelEnable++;
   }
   
   output_toggle(PIN_B6);
}
Ejemplo n.º 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(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);
		}
	}
}
Ejemplo n.º 3
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);}
}
Ejemplo n.º 4
0
//                        ** Grundinitialisierung **
void coldstart () 
{   
    setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL|ADC_TAD_MUL_0);
   setup_oscillator(OSC_8MHZ|OSC_INTRC);
   setup_comparator(NC_NC_NC_NC);
   output_a (0b00001000);
   output_b (0);
   output_c (0);
   output_d (0);
   output_e (0);
   set_tris_a (TRISA_INIT);               // Datenrichtung Port A
   set_tris_b (TRISB_INIT);               // Datenrichtung Port B
   set_tris_c (TRISC_INIT);
   set_tris_d (TRISD_INIT);
   set_tris_e (TRISE_INIT);
   port_b_pullups(TRUE);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32|RTCC_8_BIT);
                                    // Timer0 intern, Takt 20.00/4/64 = 78.125 KHz
                                       // Interrupt alle 256/15.625 = 3.2768 ms (305Hz)
                                       // Korrekturwert für 10 ms: 156 Timerclicks
                                       // -> Timer wird auf 256-156=100 vorgestellt 
      set_timer0 (Timerstartwert_K);            // Timerwert auf Startwert setzen
      enable_interrupts(INT_TIMER0);
   setup_timer_1(T1_DISABLED);               // Nur Timer0 Interrupt
   delay_ms (200);
}            
Ejemplo n.º 5
0
void driverDisplay( unsigned char velocidade )
{
    unsigned char Umin = 0;
    unsigned char Dmin = 0;
   unsigned char display = 0;
   unsigned char input = 0;
    //Carrego os valores de dezena e unidade dos minutos e horas
    Dmin = velocidade/10;
    Umin = velocidade - 10*Dmin;
    
    while( display < 2 )
    {
        switch( display )
        {
        case 0:
            //Carrego os dados da porta, para não mudar o estado do outro decoder( 2 )
            input = portc&0xF0;
            //Carrego para os 4 bits menos significativos o estado atual do decoder 1
            output_c( input |= bcdTable[ Umin ] );
            break;

        case 1:
            //Carrego os dados da porta, para não mudar o estado do outro decoder
            input = porta&0xF0;
            //Faço um deslocamento de 4 bits para poder carregar o valor correto para o decoder 2
			output_a( input |= bcdTable[ Dmin ] );            
            break;

        }

        display++;
    }
}
Ejemplo n.º 6
0
//=============================================================================
void init_prog(void)
{
setup_wdt(WDT_OFF);
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);                                                
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_BIT);// TIMER0
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);                                           
setup_vref(FALSE);
setup_low_volt_detect(FALSE);              
setup_oscillator(OSC_32MHZ);                                        

set_tris_a(0xFF);//7F
set_tris_b(0xFF); //FF
set_tris_c(0x94);//94
set_tris_d(0xFF); //02                                     
set_tris_e(0xF0);  //f0   
set_tris_f(0xFF);//ff
set_tris_g(0xFC); //04
output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
output_f(0x00);
output_g(0x00);
}
Ejemplo n.º 7
0
void main (void)
   {
   
       set_tris_c(0xff);
       set_tris_e(0xff);
       
       while(1)
       
         { 
           leds = lee_microsw();
           output_a(leds);
           printf("%u\n",leds);    
           delay_ms(200);
           
          if(leds==valor)
            {
              valor=lee_microsw();
            }
           else
            {
              valor=lee_microsw();
              leds = lee_microsw();
              printf("%u\n",leds);    
              
            }
             delay_ms(200);
         }
   
   }
Ejemplo n.º 8
0
void main(void){

	int8_t data=0;
	setup_adc(ADC_CLOCK_DIV_8);
	//ADCのサンプリング設定	

	setup_wdt(WDT_1152MS);
	while(1){
		restart_wdt();/*
		output_high(PIN_A0);
		output_low(PIN_A1);
		output_high(PIN_A2);
		//以上アドレスピン設定
		output_low(PIN_A3);
		output_low(PIN_A4);
		output_high(PIN_A5);
		//以上エネーブルピン設定*/
		output_a(0b00001111);
		setup_adc_ports(ALL_ANALOG);
		set_adc_channel(6);
		/*
		ここでADCを適用できるピンと実際に適用するピンを決めます。
		ちなみに仕様として各ピンの役割を個別に設定できないようです。
		ですがすべてアナログに設定しても問題なくエネーブルピンやアドレスピンは動いてくれているので見なかったことにしましょう。
		*/
		delay_us(20);
		restart_wdt();
		data=read_adc();
		setup_adc_ports(NO_ANALOGS);//一応戻しています。
		putc((char)data);
		sleep();
	}
}
Ejemplo n.º 9
0
void update_field ()
{
    output_a (0);
    output_b (field);
    if (dir_left)
        field <<= 1;
    else
        field >>= 1;
    if (!field) {
        dir_left = !dir_left;
        if (dir_left) {
            field = 1;
            if (input (BTN_A))
                score (LED_A);
        }
        else {
            field = 0x80;
            if (input (BTN_B))
                score (LED_B);
        }
    }
    else {
        if (!input (BTN_A))
            score (LED_B);
        if (!input (BTN_B))
            score (LED_A);
    }
}
Ejemplo n.º 10
0
void init_device ()
{
    set_tris_a (0x18);          /* 0b11000 */
    set_tris_b (0);

    output_b (0);
    output_a (0);

    out_of_game = 1;

    output_high (LED_OUT);
}
Ejemplo n.º 11
0
void main()
{
    int8    val;
    char car;

    // Initialization
    delay_ms(400);
    disable_interrupts(global);
    disable_interrupts(int_timer1);
    disable_interrupts(int_timer2);
    disable_interrupts(int_ext);
    setup_adc_ports(NO_ANALOGS|VSS_VDD);
    setup_adc(ADC_OFF|ADC_TAD_MUL_0);
    setup_spi(FALSE);
    setup_wdt(WDT_OFF);
    setup_timer_0(RTCC_INTERNAL);
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
    setup_timer_2(T2_DIV_BY_1,2,1);
    setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    setup_low_volt_detect(FALSE);
    setup_oscillator(False);
    delay_ms(400);
    
    while(1)
    {
        val = input(PIN_B0);
        if (val == 0)
        {
            output_a(0);
        }
        else if (val == 1)
        {
            output_a(255);
        }
    }
}
Ejemplo n.º 12
0
  void bsp_init(void)
  {
    set_tris_c(0xff);
    set_tris_e(0xff);
    set_tris_a(0x00);
    output_a(0);
    set_tris_a(0);//configurado como salida
    set_tris_e(1); //configurado como entrada
    SETUP_ADC_PORTS(sAN5); // este pin es analogo
    SET_ADC_CHANNEL(5); // el canal que usaremos y de cual obtendremos la señal es el 5
    setup_adc(ADC_CLOCK_DIV_32);
    lcd_init();
 
  }
Ejemplo n.º 13
0
void main(void)
   {
       int8 leds;
       set_tris_c(0xff);
       set_tris_e(0xff);
       set_tris_a(0);
       
      
       while(1)
       
       {
           leds = lee_microsw();
           output_a(leds);
           delay_ms(200);
       }
   }
Ejemplo n.º 14
0
//------------------------------------------------------------------------------
void init_prog(void)
{
setup_wdt(WDT_OFF);
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);                                                
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_BIT);// TIMER0
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);                                           
setup_vref(FALSE);
setup_low_volt_detect(FALSE);              
setup_oscillator(OSC_32MHZ);                                        

set_tris_a(0x00);
set_tris_b(0x24); 
set_tris_c(0x80);
set_tris_d(0x00);                                      
set_tris_e(0x15);     
set_tris_f(0x58);
set_tris_g(0x10);
output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
output_f(0x00);
output_g(0x00);
// RF Modul and PA/LNA activation
 
   IOpin.modulepower=0;
   IOpin.moduleCTX=1;
   IOpin.moduleCPS=0;
   IOpin.modulePWRUP=1;
   
}
Ejemplo n.º 15
0
void  bsp_leds(int8 val)
{
  output_a(val);
}
Ejemplo n.º 16
0
void setup(){
	//OPTION=0b00000010;
	/* 0 PBPU プルアップを使用する。
	 * 0 INTEDG 立下りエッジを検出し割り込む
	 * 0 TMR0clocksource 内部クロック
	 * 0 TMR0のインクリメントタイミング
	 * 0 ぷりすけーらーをTMR0に使う。
	 * 010 0.8192ms 1/8
	   001 0.4096ms 1/16
	 */
	setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
	 	
	 //INTCON=0b10101000;
	/* 1 GIE
	 * 0 EE  INT EN
	 * 1 TM0 INT EN
	 * 0 INT INT EN
	 * 1 RB  INT EN
	 * 0 TM0 INT FLAG
	 * 0 INT INT FLAG
	 * 0 RB  INT FLAG
	 */
	 	
	 set_tris_A(0b00010000);
	 //TRISA=0b00010000;
	/* 0 予約
	 * 0 予約
	 * 0 予約
	 * 1 
	 * 0 17 U3 IN1
	 * 0 18 U3 IN2
	 * 0 02 U2 IN2
	 * 0 01 U2 IN1
	 */
	 //PORTA=0;
	 output_a(0);

	 set_tris_B(0b11111111);
	 //TRISB=0b11111111;
	/* 1 13 ラインセンサ
	 * 1 12 ラインセンサ
	 * 1 11 ラインセンサ
	 * 1 
	 * 1 
	 * 1 
	 * 1 
	 * 1 
	 */
	 //PORTB=0;
	output_b(0);
	
	enable_interrupts(INT_TIMER0);
	enable_interrupts(GLOBAL);





/*temp aaa
	 CLRWDT();
	 TMR0=0;
	 T0IE=0;
	 T0IF=0;

}
	
void TmWait(void){
	while(!T0IF);
	T0IF = 0;
}
aaa temp*/
}
Ejemplo n.º 17
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
Ejemplo n.º 18
0
void main(void)
{   
  
   set_tris_a(0b11110000);    //  PROBAR SACAR ESTOO
   set_tris_b(0b11111111);
   
   // PORT_B_PULLUPS(0b00000000);    //  PROBAR SACAR ESTOO
   
   output_a(0b00000000);
   output_b(0b00000000);
     
   OUTPUT_HIGH(LED_APAGADO);
   
   if(!INPUT(MODO))
      delay=1;   
   
   while(!delay){  // MODO DEPURACION
   
      OUTPUT_HIGH(CONTACTOR);
      
      if(INPUT(START)&&(!encendido))
      {
         encendido=1;
         OUTPUT_HIGH(SENNAL_ENCENDIDO);
         OUTPUT_LOW(LED_APAGADO);
         OUTPUT_HIGH(LED_ENCENDIDO);
         delay_ms(200);         
         OUTPUT_LOW(SENNAL_ENCENDIDO);
         OUTPUT_HIGH(NEON);
      }      
      
      if(INPUT(STOP)&&(encendido))
      {
         encendido=0;
         OUTPUT_HIGH(SENNAL_APAGADO);
         OUTPUT_LOW(LED_ENCENDIDO);
         OUTPUT_HIGH(LED_APAGADO);
         delay_ms(200);         
         OUTPUT_LOW(SENNAL_APAGADO);
         OUTPUT_LOW(NEON);
      }
      
      
      if(INPUT(ERROR)&&(encendido))   // LIMPIA LOS ERRORES
      {
         encendido=0;
         OUTPUT_LOW(LED_ENCENDIDO);
         OUTPUT_HIGH(LED_APAGADO);
         OUTPUT_LOW(NEON);
      }
   
   }   // MODO DEPURACION
   
   while(delay)  //  MODO NORMAL
   {  
      
      if(INPUT(START)&&(!encendido))
      {
         encendido=1;
         delay_ms(50);
         OUTPUT_HIGH(CONTACTOR);
         OUTPUT_LOW(LED_APAGADO);
         
         for (int i = 0; i < 10; i++){
            OUTPUT_HIGH(LED_ENCENDIDO);
            delay_ms(200);
            OUTPUT_LOW(LED_ENCENDIDO);
            delay_ms(200);

         }
         
         OUTPUT_HIGH(LED_ENCENDIDO);
         
         OUTPUT_HIGH(SENNAL_ENCENDIDO);
         delay_ms(200);
         OUTPUT_LOW(SENNAL_ENCENDIDO);
         
         OUTPUT_HIGH(NEON);
         
      }  
      
      
      if(INPUT(STOP)&&(encendido))
      {
         encendido=0;
         delay_ms(50);
         OUTPUT_HIGH(SENNAL_APAGADO);
         OUTPUT_LOW(LED_ENCENDIDO);
         
         delay_ms(200);
         OUTPUT_LOW(SENNAL_APAGADO);
         
         OUTPUT_LOW(NEON);
         
         delay_ms(200);
         OUTPUT_LOW(CONTACTOR);
                 
         for (int i = 0; i < 10; i++){
            OUTPUT_HIGH(LED_APAGADO);
            OUTPUT_HIGH(NEON);
            delay_ms(200);
            OUTPUT_LOW(LED_APAGADO);
            OUTPUT_LOW(NEON);
            delay_ms(200);
            if (i==2){
               OUTPUT_HIGH(SENNAL_ENCENDIDO);
               delay_ms(200);
               OUTPUT_LOW(SENNAL_ENCENDIDO);
            }
            else
               OUTPUT_LOW(SENNAL_ENCENDIDO);

         }
         OUTPUT_HIGH(SENNAL_APAGADO);        
         delay_ms(200);
         OUTPUT_LOW(SENNAL_APAGADO);
         /*OUTPUT_HIGH(SENNAL_ENCENDIDO);
         delay_ms(500);
         OUTPUT_LOW(SENNAL_ENCENDIDO);*/
         delay_ms(20);
         OUTPUT_HIGH(LED_APAGADO);         
         
         OUTPUT_LOW(NEON);

      }
      
      if(INPUT(ERROR)&&(encendido))   // LIMPIA LOS ERRORES
      {
         encendido=0;
         OUTPUT_LOW(LED_ENCENDIDO);
         OUTPUT_HIGH(LED_APAGADO);
         OUTPUT_LOW(NEON);
      }   

   }   // MODO NORMAL 
   
}  // FUNCION PRINCIPAL