2021-06-09 STC8单片机串口驱动函数

Posted 底涩悲凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-06-09 STC8单片机串口驱动函数相关的知识,希望对你有一定的参考价值。

STC8单片机串口驱动函数

单片机型号为 STC8A8K64S4A12
默认时钟频率为 22.1184MHz
串口设置为 9600-n-8-1
使用的串口为 串口1(RXD–P30 TXD–P31)
实验现象为收发一致

以下为实现现象
在这里插入图片描述

以下为完整程序代码

/**
  *************************************************************************************************************************
  * @file    usart.c
  * @author  底色悲凉
  * @version V1.0
  * @date    2021-06-09
  * @brief   STC8串口
  *************************************************************************************************************************
  * @attention
  *
  * 
  *
  *************************************************************************************************************************
  */

/* Includes -------------------------------------------------------------------------------------------------------------*/
#include "usart.h"

/* define ---------------------------------------------------------------------------------------------------------------*/

void USART1_Init(void)
{
	//串口1配置 
	//9600-n-8-1 RXD--P30  TXD--P31
	SCON = 0x50;  //REN=1允许串行接受状态,串口工作模式2     	   
	TMOD = 0x20;  //定时器工作方式2       8位 自动重装载定时器  实现波特率                
	AUXR = 0X40;	//开启1T模式   
  	TH1 = 0xB8;	  //设置波特率为9600  公式 TH1=256-(22118400/32/9600)=256-72=184  0xB8
	TL1 = 0xB8;
	TR1  = 1;     //开启定时器1                                                      
	ES   = 1;     //开串口中断                  
	EA   = 1;     //开总中断 
}

/**
  * @brief  串口1发送字节
  * @param  dat
  * @retval None
  */
void USART1_SendByte(unsigned char dat)
{
	SBUF = dat; 	//SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
 	while (!TI);	//等特数据传送	(TI发送中断标志)
  	TI = 0;				//清除数据传送标志	
}

/**
  * @brief 串口1中断处理函数 
  * @param  
  * @retval 
  */
void USART_Int(void) interrupt 4 using 1
{ 
	unsigned char tmp;  
	
	if (RI) 
  	{
		tmp = SBUF;
		
		USART1_SendByte(tmp);

		RI = 0;
  }
}

/*****************************************************END OF FILE*********************************************************/	

/**
  *************************************************************************************************************************
  * @file    usart.h
  * @author  底色悲凉
  * @version V1.0
  * @date    2021-06-09
  * @brief   STC8串口
  *************************************************************************************************************************
  * @attention
  * 
  * 
  * 
  *************************************************************************************************************************
  */

#ifndef __USART_H
#define	__USART_H

/* Includes -------------------------------------------------------------------------------------------------------------*/
#include "stc8.h"
#include "stdio.h"

/* define ---------------------------------------------------------------------------------------------------------------*/


/* function -------------------------------------------------------------------------------------------------------------*/
void USART1_Init(void);                   //串口1初始化
void USART1_SendByte(unsigned char dat);  //串口1发送字节

#endif /* __USART_H */

/*****************************************************END OF FILE*********************************************************/	

/**
  *************************************************************************************************************************
  * @file    main.c
  * @author  底色悲凉
  * @version V1.0
  * @date    2021-06-09
  * @brief   串口测试
  *************************************************************************************************************************
  * @attention
  *
  * 
  *
  *************************************************************************************************************************
  */

/* Includes -------------------------------------------------------------------------------------------------------------*/
#include "stc8.h"
#include "usart.h"

/* define ---------------------------------------------------------------------------------------------------------------*/

	
/**
 * @brief  
 * @param  None
 * @retval None
 */
void main(void)
{
	USART1_Init();
	
	while(1);
}
	

附完整工程的百度网盘链接:https://pan.baidu.com/s/1_Q8o70ustiGtqcumRenJiw
提取码:1234

以上是关于2021-06-09 STC8单片机串口驱动函数的主要内容,如果未能解决你的问题,请参考以下文章

2021-06-09 STC8单片机串口驱动函数

2021-06-09 STC8单片机串口驱动函数

STC8硬件SPI方式驱动1.8“ ST7735S显示示例

STC不同系列单片机的软串口位时间函数差异

STC8单片机基于开源库驱动ssd1306 i2c oled例程

STC单片机驱动BLDC无刷直流电机(无HALL)官方示例