⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 小区可视对讲键盘检测程序.利用pt6964芯片.
💻 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 + -