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

📄 serial.h

📁 这个文档程序主要应用了单片机的串行通讯部分
💻 H
字号:
/********************************工程文件说明*******************************/
/*FileName:serial.h													   */
/*Author:烛光 															   */
/*Version:v1.0															   */
/*Data:2008年07月11日													   */
/*Description:工程串口程序文件,负责串口数据接收和发送。				   */
/*Function List:														   */
/*    1.main  主程序,状态机制											   */
/*	  2.scrfresh  状态辅助程序,刷新屏幕								   */
/*	  3.time_manager  时间控制程序,时间机制							   */
/*	  4.……															   */
/*History:																   */
/*	  3.烛光  2008.09.13  v1.0  初步完成设计							   */
/*	  2.烛光  2008.09.13  v1.0  初步完成设计							   */
/*	  1.烛光  2008.07.11  v0.0  开始设计								   */
/*Copyright (c) 2008 烛光 All Rights Reserved							   */
/***************************************************************************/

#ifndef __SERIAL_H__
#define __SERIAL_H__
/***********************************硬件接口说明****************************/
//无
/************************************符号定义*******************************/
//无
/************************************变量定义*******************************/					
xdata uchar temp[256];//数据缓冲区数组

uchar idata zclsend[]={0xaa,0x03,0x31,0x33,0x39,0x31,0x33,0x39,0x39,0x31,0x36,0x34,0x39,0x03,0x41,0x5a,0x00,0xab,0xcd,0xef};
uchar idata gprssend[]={0x5a,0x44,0x49,0x4d,0xff,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xab,0xcd,0xef};
uchar idata gprsres[82];

bit charendf=0;//发送数据结束标志

uchar usemark=0;//使用eep区标志
uchar datacounter=0;//缓冲区接收计数
uchar secondcopy;//最后接收时间标志

extern bit tiaoshi;//调试程序标志
extern bit slimitf;//

extern uchar timer;
extern uchar second;
extern uchar minute;
extern uchar hour;
extern uchar state; 
/*******************************函数声明************************************/
//无
/*********************************串口初始化********************************/
void serial_init(void)
{
	

	PCON&=0x7F;//无双倍波特率
	SCON=0x70;//10位UART,,允许接收数据	
	IE|=0x90;//开串行中断

	TMOD&=0x0F;
	TMOD|=0x20;//T1工作方式2
	TL1=0xfa;//初值250
	TH1=0xfa;
	
	TR1=1;//定时器开
}

/****************************主动发送一个字节*******************************/
void serl_snd_code(uchar scode)
{
	charendf=1;
	SBUF=scode;
}

/****************************主动发送一串字符*******************************/
void serl_snd_string(uchar *str)
{
	while(!((*str==0xab)&&(*(str+1)==0xcd)&&(*(str+2)==0xef)))//判别结束码
	{
		serl_snd_code(*str++);
		while(charendf);			
	}
}
/****************************串行中断(接收)********************************/
void serl_rec_code(void) interrupt 4
{
	//lightflag=0;
	if(TI){charendf=0;TI=0;}//发送中断
	if(RI)//接收中断
	{
		slimitf=1;
		/*switch(usemark)
		{
			 case 0:receive0[datacounter++]=SBUF;break;
			 case 1:receive1[datacounter++]=SBUF;break;
			 case 2:receive2[datacounter++]=SBUF;break;
			 default:break;	
		}*/
		temp[datacounter++]=SBUF;
		if(datacounter>253){tiaoshi=1;lightflag=0;}		
		secondcopy=second;//刷新最后接收时间
		RI=0;		
	}
}
#endif

⌨️ 快捷键说明

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