📄 switchboard.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -