欢迎来到泰骏兴电子,大家有问题可以直接联系管理员QQ:233619809单片机 QQ群:59194556 各位游客也可以注册玩玩,享受更多权益。温馨提示:本网站仅提供平台学习以及渠道,一切后果自行承担,还望广大用户提高自我意识,请不要轻易相信他人,请不要轻易相信他人,请不要轻易相信他人。为了更好的管理论坛工作,所以现在使用邮箱注册,如果以前的邮箱不能修改的,请联系管理员代为修改

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 116|回复: 0

STC单片机串口通信

[复制链接]
发表于 2022-12-11 11:58:57 | 显示全部楼层 |阅读模式
/**************************************************************************************
*                      串口通信实验                                                  *
实现现象:下载程序后打开串口调试助手,将波特率设置为4800,选择发送的数据就可以显示
            在串口助手上。
注意事项:无。                                                                                 
***************************************************************************************/

#include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;      //对数据类型进行声明定义
typedef unsigned char u8;


/*******************************************************************************
* 函数名         :UsartInit()
* 函数功能           :设置串口
* 输入           : 无
* 输出              : 无
*******************************************************************************/
void UsartInit()
{
    SCON=0X50;            //设置为工作方式1
    TMOD=0X20;            //设置计数器工作方式2
    PCON=0X80;            //波特率加倍
    TH1=0XF3;                //计数器初始值设置,注意波特率是4800的
    TL1=0XF3;
    ES=1;                        //打开接收中断
    EA=1;                        //打开总中断
    TR1=1;                    //打开计数器
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能         : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{   
    UsartInit();  //    串口初始化
    while(1);        
}

/*******************************************************************************
* 函数名         : Usart() interrupt 4
* 函数功能          : 串口通信中断函数
* 输入           : 无
* 输出              : 无
*******************************************************************************/
void Usart() interrupt 4
{
    u8 receiveData;

    receiveData=SBUF;//出去接收到的数据
    RI = 0;//清除接收中断标志位
    SBUF=receiveData;//将接收到的数据放入到发送寄存器
    while(!TI);             //等待发送数据完成
    TI=0;                         //清除发送完成标志位
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|泰骏兴电子科技有限公司 ( 粤ICP备2023060260号-1 ) 单片机爱好者

GMT+8, 2026-1-10 12:08

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表