📄 uart.c
字号:
#include<stc12c5410ad.h>
#include<main.h>
#include<buzzer.h>
#include<delay.h>
//-------------------------
//global variables
//--------------------------
unsigned char command_flag = 0;
unsigned char send_buffer[4] = {0,0,0,0};
extern unsigned char display_buffer[4];
extern unsigned char current_state;
//---------------------
//defines
//----------------------
#define COMMAND_HEADER 0xaa
#define COMMAND_FREESTATE 0x40
#define COMMAND_FORCIBLETALK 0x7f
#define COMMAND_GUESTREADY 0x41
#define COMMAND_SETDONE 0x42
#define COMMAND_SETFAIL 0x43
//-----------------------
//functions
//------------------------
void rs232_initial(void)
{
ES = 1;
//AUXR =AUXR |0x40;
TMOD = TMOD+0x20;
SCON = 0x50;
TH1 = 0xfb;
TL1 = 0xfb;
// TH1 = 0xe2;
// TL1 = 0xe2;
TR1 = 1;
}
void rs232_send_byte(unsigned char send_data)
{
ES = 0;
TI = 0;
SBUF = send_data;
delay2(1);
// while(!TI);
TI = 0;
ES = 1;
}
void Uart_Routine(void) interrupt 4
{
unsigned char temp_data = 0;
if(TI == 1){TI = 0;return;}
if(RI == 1){RI = 0; }
// open_buzzer();
// buzzer_timer = 10;
// buzzer_timer_trigger = 1;
temp_data = SBUF;
if((temp_data == COMMAND_HEADER)&&(command_flag == 0))command_flag = 1;
if((temp_data == COMMAND_FREESTATE)&&(command_flag == 1)){
current_state = STATE_FREE|STATE_FREE_NOCALL;
display_buffer[0] = 10;
display_buffer[1] = 10;
display_buffer[2] = 10;
display_buffer[3] = 10;
command_flag = 0;}
if((temp_data == COMMAND_FORCIBLETALK)&&(command_flag == 1)){current_state = STATE_FORCIBLETALK;command_flag = 0;}
if((temp_data == COMMAND_GUESTREADY)&&(command_flag == 1)){
current_state = STATE_FOURTHFUNC|STATE_FOURTHFUNC_GUESTREADY;
display_buffer[0] = SYMBLE_SUBM;
display_buffer[1] = SYMBLE_SUBM;
display_buffer[2] = SYMBLE_SUBM;
display_buffer[3] = SYMBLE_SUBM;
command_flag = 0;
}
if((temp_data == COMMAND_SETDONE)&&(command_flag == 1)){
current_state = STATE_FOURTHFUNC|STATE_FOURTHFUNC_POSIDENTY;
display_buffer[0] = SYMBLE_SUBM;
display_buffer[1] = SYMBLE_SUBM;
display_buffer[2] = SYMBLE_SUBM;
display_buffer[3] = SYMBLE_SUBM;
command_flag = 0;
open_buzzer(); //BEEP
buzzer_timer = 225;
buzzer_timer_trigger = 1;
}
if((temp_data == COMMAND_SETFAIL)&&(command_flag == 1)){
current_state = STATE_FOURTHFUNC|STATE_FOURTHFUNC_POSIDENTY;
display_buffer[0] = SYMBLE_SUBM;
display_buffer[1] = SYMBLE_SUBM;
display_buffer[2] = SYMBLE_SUBM;
display_buffer[3] = SYMBLE_SUBM;
command_flag = 0;
open_buzzer(); //BEEP
buzzer_timer = 55;
buzzer_timer_trigger = 1;
}
}
//----------------------------------------------------
//----------------------------------------------------
void rs232_send_command(void)
{
rs232_send_byte(send_buffer[0]); delay(1);
rs232_send_byte(send_buffer[1]); delay(1);
rs232_send_byte(send_buffer[2]); delay(1);
rs232_send_byte(send_buffer[3]); delay(1);
return ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -