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单片机串口驱动函数的主要内容,如果未能解决你的问题,请参考以下文章