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

📄 uart.c

📁 基于MCS-51的电子指南针完整程序包 如果需要原理图的
💻 C
字号:
#include<reg52.h>
#include<stdio.h>
 
unsigned char COMBUF[10];                                                /* 定义接收缓冲区                                  */
unsigned char COMCNT = 0; 
/****************************************************************************************************************************
**函数名称:InitCOM                                                                                                        **
**函数功能:串口初始化函数                                                                                                 **   
**入口参数:BpsLvl : 波特率等级。1=600bps,2=1200bps....5=9600bps,6=19200bps...8=57600bps                                   **
**出口参数:无                                                                                                             **
**具体资源:无                                                                                                             **
**调用程序:无                                                                                                             **
**备    注:在系统时钟为晶振为22.1184M 方式1 波特率600-57600                                                             **
****************************************************************************************************************************/
void InitCOM(void) //串口初始化函数
{
	TMOD = 0X21; 						//设置T1为模式2,8位自动重装,T0为模式1。
	SCON = 0X50;						//设置串口为模式1,SM2=0,REN=1。
	PCON = 0X80;						//设置波特率为 9600B/S。
	TH0  = 0X01;
    TL0  = 0X01;
    TH1  = -22118400L/12/32/4800;
	TL1  = -22118400L/12/32/4800;
	ET0  = 1;
    ES	 = 1;						    //开串口中断,以便接收主机数据。
	TR0  = 1;
    TR1  = 1;
	EA   = 1;
}

/****************************************************************************************************************************
**函数名称:UartSendUart                                                                                                       **
**函数功能:通过串口发送                                                                                                   **   
**入口参数:要发送的一字节数据                                                                                             **
**出口参数:无                                                                                                             **
**具体资源:无                                                                                                             **
**调用程序:无                                                                                                             **
**备    注:                                                                                                               **
****************************************************************************************************************************/
void UartSendByte(unsigned char dat)//串口发送函数
{
	SBUF = dat;
	while (TI != 1) {
 	};
}


/****************************************************************************************************************************
**函数名称:UartSendStr                                                                                                    **
**函数功能:通过串口发送一串字符                                                                                           **   
**入口参数:要发送的字符串                                                                                                 **
**出口参数:无                                                                                                             **
**具体资源:无                                                                                                             **
**调用程序:无                                                                                                             **
**备    注:                                                                                                               **
****************************************************************************************************************************/
void UartSendStr(unsigned char *pStr)//串口发送函数
{
	while ((*pStr) != '\0') {
        UartSendByte(*pStr);
        pStr++;
    }
} 


/****************************************************************************************************************************
**函数名称:COM_IRQ                                                                                                        **
**函数功能:串口接收中断处理函数                                                                                           **   
**入口参数:显示位置                                                                                                       **
**出口参数:无                                                                                                             **
**具体资源:无                                                                                                             **
**调用程序:无                                                                                                             **
**备    注:                                                                                                               **
****************************************************************************************************************************/
COM_IRQ(void) interrupt 4 
{
    if (RI == 1) {                                                      /* 处理接收中断                                    */     
 		RI=0;                                                           /* 清除中断标志位                                  */ 
   	    if (SBUF != 0x0d) {
            UartSendByte(SBUF);
            COMBUF[COMCNT] = SBUF; 
            COMCNT++;  
        }else {
            UartSendByte(0x0d);
            UartSendByte(0x0a);
            COMCNT = 0;
        }
    }else if (TI == 1) {
 		TI=0;
 	}
}

⌨️ 快捷键说明

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