📄 main.c
字号:
return 0;
}
if (message_buffer[57] != 'L')
{
return 0;
}
if (message_buffer[58] != 'O')
{
return 0;
}
if (message_buffer[59] != 'S')
{
return 0;
}
if (message_buffer[60] != 'E')
{
return 0;
}
if (message_buffer[61] != carriage_return)
{
return 0;
}
if (message_buffer[62] != line_feed)
{
return 0;
}
return 1;
}
void get_imbedded_password()//ok
{
unsigned short address;
address = 0xF8;
byte_count1 = 0;
while (byte_count1 < 6)
{
password[byte_count1] = EEprom_Read(address);
byte_count1++;
address++;
}
}
void save_password()//ok
{
unsigned short address;
address = 0xF8;
byte_count1 = 0;
while (byte_count1 < 6)
{
EEprom_Write (address,password[byte_count1]);
byte_count1++;
address++;
}
}
void offset_message(short row, unsigned short location)//ok
{
unsigned column;
column = 1;
while (column < 17)
{
buffer = EEprom_Read(location);
LCD_Chr(row,column,buffer);
location++;
column++;
}
}
//------------------------------door routines-----------------------------------
void motor_delay()
{
Delay_ms(15);
}
void rotate2()
{
step_A = 1;
motor_delay();
step_A = 0;
step_B = 1;
motor_delay();
step_B = 0;
step_C = 1;
motor_delay();
step_C = 0;
step_D = 1;
motor_delay();
step_D = 0;
}
void rotate1()
{
step_D = 1;
motor_delay();
step_D = 0;
step_C = 1;
motor_delay();
step_C = 0;
step_B = 1;
motor_delay();
step_B = 0;
step_A = 1;
motor_delay();
step_A = 0;
}
void open_door()
{
unsigned short step_count;
offset_message(1,0x40);
solenoid = 1;
delay1s();
step_count = 25;
while (step_count > 0)
{
rotate1();
step_count--;
}
solenoid = 0;
step_count = 150;
while (step_count > 0)
{
rotate1();
step_count--;
}
offset_message(1,0x60);
Delay1s();
Delay1s();
Delay1s();
}
void close_door()
{
unsigned short step_count;
offset_message(1,0x50);
step_count = 150;
while (step_count > 0)
{
rotate2();
step_count--;
}
solenoid = 1;
step_count = 28;
while (step_count > 0)
{
rotate2();
step_count--;
}
solenoid = 0;
offset_message(1,0x70);
Delay1s();
Delay1s();
Delay1s();
}
//---------------------------------main routine---------------------------------
void main()
{
TRISA = 0;
TRISB = 0;
TRISC = 0;
TRISE = 0;
TRISD = 0xf4;
PORTA = 0;
PORTB = 0;
PORTC = 0;
PORTD = 0;
PORTE = 0;
solenoid = 0;
PIE1.RCIE = 1;
Delay1s();
Delay1s();
Usart_Init(9600);
LCD_Init(&PORTB);
LCD_Cmd(LCD_CLEAR);
LCD_Cmd(LCD_CURSOR_OFF);
Delay1s();
Delay1s();
Delay1s();
gsm_modem_init();
offset_message(1,0);
Delay1s();
Delay1s();
Delay1s();
LCD_Cmd(LCD_CLEAR);
door_stat = close ;
while (1)
{
buffer = read_keypad(); // read the keypad if pressed
if (buffer == '*')
{
offset_message(1,0x10);
clear_code_locations();
byte_count1 = 0;
LCD_Chr(2,5,' ');
while (byte_count1 < 6 && buffer != '#')
{
buffer = read_keypad();
if (buffer != '*' && buffer != '#' && buffer != 0)
{
temp_password[byte_count1] = buffer;
LCD_Chr_Cp('*');
byte_count1++;
}
}
get_imbedded_password();
buffer = compare_codes();
if (buffer)
{
LCD_Cmd(LCD_CLEAR);
if (door_stat == close)
{
offset_message(1,0x30);
offset_message(2,0x80);
}
if (door_stat == open)
{
offset_message(1,0xd0);
offset_message(2,0x80);
}
while (buffer != '#')
{
buffer = read_keypad();
if (buffer == '0' && door_stat == close)
{
LCD_Cmd(LCD_CLEAR);
open_door();
door_stat = open;
goto exit1
}
if (buffer == '*')
{
LCD_Cmd(LCD_CLEAR);
offset_message(1,0x90);
byte_count1 = 0;
LCD_Chr(2,5,' ');
while (byte_count1 < 6 && buffer != '#')
{
buffer = read_keypad();
if (buffer != '*' && buffer != '#' && buffer != 0)
{
password[byte_count1] = buffer;
LCD_Chr_Cp('*');
byte_count1++;
}
}
LCD_Cmd(LCD_CLEAR);
offset_message(1,0xa0);
byte_count1 = 0;
LCD_Chr(2,5,' ');
while (byte_count1 < 6 && buffer != '#')
{
buffer = read_keypad();
if (buffer != '*' && buffer != '#' && buffer != 0)
{
temp_password[byte_count1] = buffer;
LCD_Chr_Cp('*');
byte_count1++;
}
}
buffer = compare_codes();
if (buffer)
{
LCD_Cmd(LCD_CLEAR);
offset_message(1,0xb0);
save_password();
Delay1s();
Delay1s();
goto exit1
}
if (!buffer)
{
LCD_Cmd(LCD_CLEAR);
offset_message(1,0xc0);
Delay1s();
Delay1s();
goto exit1
}
}
}
goto exit1
}
if (!buffer)
{
offset_message(1,0x20);
Delay1s();
Delay1s();
Delay1s();
LCD_Cmd(LCD_CLEAR);
}
clear_code_locations();
exit1: LCD_Cmd(LCD_CLEAR);
}
if (buffer == '#' && door_stat == open)
{
close_door();
door_stat = close;
LCD_Cmd(LCD_CLEAR);
}
if (inside_switch && door_stat == open)
{
close_door();
door_stat = close;
LCD_Cmd(LCD_CLEAR);
}
if (inside_switch && door_stat == close)
{
open_door();
door_stat = open;
LCD_Cmd(LCD_CLEAR);
}
if (PIR1.RCIF)
{
clear_message_buffers();
recieve_message(63);
if (message_buffer[2] != 'R')// && message_buffer[62] == carriage_return)
{
LCD_Cmd(LCD_CLEAR);
transfer_senders_number();
transfer_sent_password();
get_imbedded_password();
buffer = compare_codes();
if (buffer)
{
buffer = compare_with_open_command();
if (buffer)
{
if (!door_stat)
{
open_door();
door_stat = 1;
setup_reply_message();
send_open_message();
wait_acknowledgement();
goto exit2
}
if (door_stat)
{
setup_reply_message();
send_already_open_message();
wait_acknowledgement();
goto exit2
}
}
buffer = compare_with_close_command();
if (buffer)
{
if (door_stat)
{
close_door();
door_stat = 0;
setup_reply_message();
send_close_message();
wait_acknowledgement();
goto exit2
}
if (!door_stat)
{
setup_reply_message();
send_already_closed_message();
wait_acknowledgement();
}
}
}
}
exit2: LCD_Cmd(LCD_CLEAR);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -