switchboard.c

来自「Firmware that controlls the robotic gril」· C语言 代码 · 共 152 行

C
152
字号
#define buzzer_on 0x01
#define buzzer_off 0x02
#define disperse_coal 0x03
#define start_cooking 0x04
#define stop_cooking 0x05
#define on_fan 0x06
#define off_fan 0x07


unsigned short buffer,error,count,cook,fan_time;
unsigned int lapsed_time;
void Delay()
     {
     Delay_ms(5);
     }

void open_cover()
     {
     PORTA.F3 = 0;
     PORTB.F3 = 1;
     Delay_ms(3000);
     while (!PORTA.F2)
           {
          asm nop
           }
     PORTB.F3 = 0;
     PORTA.F3 = 0;
     Delay_ms(2000);
     }
     
void close_cover()
     {
     PORTA.F3 = 1;
     PORTB.F3 = 1;
     Delay_ms(3000);
     while (!PORTA.F2)
           {
          asm nop
           }
     PORTB.F3 = 0;
     PORTA.F3 = 0;
     Delay_ms(2000);
     }
     
void acknowledge()
     {
     TRISA.F0 = 0;
     PORTA = 1;
     Delay_ms(2000);
     PORTA = 0;
     TRISA.F0 = 1;
     }

void main ()
     {
     TRISA = 0x17;
     TRISB = 0x00;
     PORTA = 0;
     PORTB = 0;
     if (!PORTA.F2)
        {
        close_cover();
        }
     acknowledge();
     OPTION_REG = 0x03;
     Man_Receive_Config (&PORTA,0);
     Man_Synchro();
     fan_time = 0;
     cook.f0 = 0;
     while (1)
           {
           buffer = Man_Receive (error);
           if (buffer == buzzer_on )
              {
              PORTB.F0 = 1;
              }
           if (buffer == buzzer_off)
               {
               PORTB.F0 = 0;
               }
           if (buffer == start_cooking)
               {
               open_cover();
               acknowledge();
               PORTB.F1 = 1;
               PORTB.F2 = 1;
               }
           if (buffer == stop_cooking)
               {
               INTCON.GIE = 0;
               INTCON.T0IE = 0;
               PORTB.F1 = 0;
               PORTB.F2 = 0;
               Delay_ms(1000);
               close_cover();
               acknowledge();
               }
           if (buffer == disperse_coal)
              {
              open_cover();
              count = 180;
              while (count > 0)
                    {
                    PORTB.F4 = 1;
                    Delay();
                    PORTB.F4 = 0;
                    PORTB.F5 = 1;
                    Delay();
                    PORTB.F5 = 0;
                    PORTB.F6 = 1;
                    Delay();
                    PORTB.F6 = 0;
                    PORTB.F7 = 1;
                    Delay();
                    PORTB.F7 = 0;
                    count--;
                    }
              Delay_ms (1000);
              count = 180;
              while (count > 0)
                    {
                    PORTB.F7 = 1;
                    Delay();
                    PORTB.F7 = 0;
                    PORTB.F6 = 1;
                    Delay();
                    PORTB.F6 = 0;
                    PORTB.F5 = 1;
                    Delay();
                    PORTB.F5 = 0;
                    PORTB.F4 = 1;
                    Delay();
                    PORTB.F4 = 0;
                    count--;
                    }
              close_cover();
              open_cover();
              acknowledge();
              }
           if (buffer == on_fan)
              {
              PORTB.F1 = 1;
              }
           if (buffer == off_fan)
              {
              PORTB.F1 = 0;
              }
           }
     }


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?