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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值