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

📄 serial.c

📁 用于C51上的modbus协议
💻 C
字号:
#include "STC89C58.h"
#include "TG01R.h"
#include <intrins.h>
#include "string.h"

/*-------------------------------------------------------------------------------------------
 函数原型:  void  InitUart(void)		                    
 参数说明:  无                                                        
 返回值:    无 
 说明:		用于初始化串口               
 -------------------------------------------------------------------------------------------*/    
void  InitUart(void)  {
  SCON =  0x50;     //串口工作方式1
  TMOD |= 0x20;     //T1,初值自动重装
  TH1  =  0xf3;     //波特率4800bps  @ 24M
  TL1  =  0xf3; 
  TR1  =  1;        //开始计数		
  IE  |=  0x90;     //开放串口中断
}

/*-------------------------------------------------------------------------------------------
 函数原型:  void Uart_Send_Char(uchar SendChar)		                    
 参数说明:  发送的字符                                                        
 返回值:    无 
 说明:		用于向串口发送单个字符               
 -------------------------------------------------------------------------------------------*/ 
void Uart_Send_Char(uchar SendChar)  {
    SBUF=SendChar;
    while(TI==0);TI=0;
}



void Uart_Send_EChar(uchar SendChar)  {
    TB8=Parity_Check(Even,SendChar);
    SBUF=SendChar;
    while(TI==0);TI=0;
}


/*-------------------------------------------------------------------------------------------
 函数原型:  void Uart_Send_Str(char *SendDataBuf)		                    
 参数说明:  发送字符串的头地址                                                        
 返回值:    无 
 说明:		用于向串口发送字符串               
 -------------------------------------------------------------------------------------------*/ 
void Uart_Send_Str(uchar *SendDataBuf)  {
	uchar i;
	uchar idata Len;
	i=0;
	Len=strlen(SendDataBuf);			  //获取发送字符串的长度Len
	do	{
		SBUF=*(SendDataBuf+i);			  //发送Len个字符
		while(TI==0);TI=0;
		
	}while(++i<Len);	
}

/*-------------------------------------------------------------------------------------------
 函数原型:  void Uart_Send_Str(uchar *SendDataBuf,uchar Len)		                    
 参数说明:  *SendDataBuf:发送字符串的头地址     
            Len         :发送字符串的个数                                                   
 返回值:    无 
 说明:		用于向串口发送字符串               
 -------------------------------------------------------------------------------------------*/ 
void Uart_Send_Stra(uchar *SendDataBuf,uchar Len)  {
	uchar i;
	i=0;
    do	{
		SBUF=*(SendDataBuf+i);			  //发送Len个字符
		while(TI==0);TI=0;
		
	}while(++i<Len);	
}		

/*
void Uart_Rcv_Str(char *RcvDataBuf)  {
	uchar i,TempData;
	i=0;
	do  {
		while(RI==0);RI=0;
		TempData=SBUF;
		if(TempData=='/')  {
			break;
		}
		*(RcvDataBuf+i)=TempData;
		i++;
	}	while(1);
}
*/

/*-------------------------------------------------------------------------------------------
 函数原型:  void Uart_SingleStep(void)		                    
 参数说明:  串口控制单步执行函数                                                        
 返回值:    无 
 说明:		用于通过串口控制单步执行,到此函数时停止,通过串口接收到space符时继续向下执行               
 -------------------------------------------------------------------------------------------*/ 
void Uart_SingleStep(void)  {
	char TempData;
	do  {
		while(RI==0);RI=0;
		TempData=SBUF;
	}while(TempData!=0x20);
}

/*-------------------------------------------------------------------------------------------
 函数原型:  InitCPU(void)		                    
 参数说明:  MCU初始化                                                        
 返回值:    无 
 说明:		MCU初始化,开放外部中断0,初始化串口               
 -------------------------------------------------------------------------------------------*/ 
void  InitCPU(void)
{
 EA         =1;		//开放中断
 IT0        =1;		//外部中断0低电平触发
 EX0        =1;		//外部中断0使能
 PX0        =1; 	//外部中断0高优先级
 InitUart();        //初始化串口 
}

⌨️ 快捷键说明

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