单片机C51串口中断接收和发送测试例程(含通信协议的实现)

Keil实例仿真AT89C51串口UART收发数据(附程序) 发现用Proteus配Keil for C51编译器调试UART串口收发通讯,发送没有问题,接收总是有问题,输入RXD的波形、波特率以及串口配置都是对的,但AT89C51就是不接收数据,RI不置位,也不能进入串口中断4程序,同样的程序移到Keil μVision5里,调试就妥妥的,收发自如,网上也看了别人的帖子和文章,大都是用Proteus自带的Virtual Termimal看到收到调试助手发的数据,但并不代表AT89C51真真收到了数据,用贴出来的程序测试,也同样不能进入接收中断程序,RI不置位,严重怀 阅读详情

单片机C51串口中断接收和发送测试例程(含通信协议的实现)

作者:龚建伟  http://www.gjwtech.com

通信协议:第1字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推……,最后一个字节为前几个字节后7位的异或校验和。

测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95 10 20 25,说明测试成功。

 

//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收
//
和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的

//
程序编写: 龚建伟  webmaster@gjwtech.com
//
技术主页:http://www.gjwtech.com
//
您有这方面的问题可以和我讨论



#include
<reg51.h>
#include
<string.h>

#define INBUF_LEN 4   //
数据长度


unsigned char inbuf1[INBUF_LEN];
unsigned char
checksum,count3;
bit           read_flag=
0
;

void init_serialcomm(void
)
{
    SCON  =
0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr

    TMOD |=
0x20;       //TMOD: timer 1, mode 2, 8-bit reload

    PCON |=
0x80;       //SMOD=1;

    TH1   =
0xF4;       //Baud:4800  fosc=11.0592MHz

    IE   |=
0x90;       //Enable Serial Interrupt

    TR1   =
1;          // timer 1 run

  
// TI=1;

}

//
向串口发送一个字符

void send_char_com(unsigned char
ch)  
{
    SBUF=ch;
   
while(TI==0
);
    TI=
0
;
}

//
向串口发送一个字符串,strlen为该字符串长度
void send_string_com(unsigned char *str,unsigned int
strlen)
{
   
unsigned int k=0
;
   
do

    {
        send_char_com(*(str + k));
        k++;
    }
while
(k < strlen);
}


//
串口接收中断函数

void serial () interrupt 4 using 3

{
   
if
(RI)
    {
       
unsigned char
ch;
        RI =
0
;
        ch=SBUF;
       
if(ch>127
)
        {
             count3=
0
;
             inbuf1[count3]=ch;
             checksum= ch-
128
;
        }
       
else

        {
             count3++;
             inbuf1[count3]=ch;
             checksum ^= ch;
            
if( (count3==(INBUF_LEN-1
)) && (!checksum) )
             {
                 read_flag=
1;  //
如果串口接收的数据达到INBUF_LEN个,且校验没错,
                              
//
就置位取数标志

             }
        }
    }
}


main()
{
    init_serialcomm(); 
//
初始化串口

   
while(1
)
    {
         
if(read_flag)  //
如果取数标志已置位,就将读到的数从串口发出

          {
               read_flag=
0; //
取数标志清0
               send_string_com(inbuf1,INBUF_LEN);
          }
    }

}


C51编程19-中断篇(串行通讯3) MCS-51单片机提供了4种串口的方式,但是我们只有方式1最常用(可变的10位串行通讯方式),下面就方式1的使用进行讲解。 在开始之前先明确一个概念,中断会产生中断标志位,而CPU检测到中断标志位后,如果没有其他更高的中断在执行,CPU会响应该中断,并进入中断服务函数。串行通讯属于中断方式的一种,它服从这个概念。此外串行通讯并不是需要进入串行通讯的时候,会产生中断标志位;而是发送或者接收成功后,会产生中断标志位。 通过中断向量,可以知道串行通讯只有一个中断号4,也就是说当进入无论是发送或... 阅读详情

相关推荐

C51——串口交互(发送字符串)控制led

/查找函数strstr,在cmd中查找op,发送的数据多了可能会出错,需要头文件<string.h>//串口pc端发送给c52字符串控制led。

2302_76515999的博客 824

51单片机——串口通信(发送和接受数据)

51单片机串口通信(发送和接受数据)

ssssshhbh的博客 6万+

Keil Debug 串口调试技巧

keil 调试技巧

嵌入一下?的博客 8008

C51之串口通信

【代码】C51之串口通信。

m0_63084911的博客 2010

串口接收中断进不去,如何解决

串口配置代码 void  USART_Configuration(void) {   GPIO_InitTypeDef GPIO_InitStructure;   USART_InitTypeDef USART_InitStructure;   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA |RC

ChenJinQiZhong的博客 1万+

Obsidian跨设备同步实战:阿里云OSS与Remotely Save插件配置指南

本文详细介绍了如何利用阿里云OSS对象存储与Remotely Save插件,为Obsidian笔记软件搭建一个低成本、高可靠性的私有化多端同步方案。从创建OSS Bucket、配置CORS规则、生成子账户密钥,到插件安装与多设备同步策略,提供了完整的实战配置指南,有效解决Obsidian用户的跨设备同步痛点。

qsc901234567的博客 1283

C51串口中断接收和发送测试例程

通信协议:第1字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推……,最后一个字节为前几个字节后7位的异或校验和。测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95 10 20 25,说明测试成功。 //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单

gezi322的专栏 798

国内合规开通ChatGPT Plus实操指南:银行卡绑卡与支付全解析

ChatGPT Plus 是 OpenAI 官方推出的高级订阅服务,基于 GPT-4o 多模态大模型提供语音交互、图像理解与长上下文处理能力。其核心使用前提在于完成合规的国际支付绑定,而非网络接入方式。技术原理上,OpenAI 采用 Stripe 支付网关进行风控校验,重点匹配银行跨境权限、卡片类型(仅支持 Visa/Mastercard/Amex 信用卡)、BIN 号段及地理位置一致性。该机制决定了95%的绑卡失败源于银行端配置缺失或卡片不兼容,而非网络问题。实际应用中,PayPal 作为中间支付层可显著

chuannaoxuan4674的博客 1953

RT-Thread物联网开发实战:从内核调度到组件生态的嵌入式操作系统指南

实时操作系统(RTOS)是嵌入式开发中管理多任务与系统资源的核心软件层,其原理在于通过调度器、任务管理和进程间通信(IPC)机制,实现对CPU、内存和外设的高效协同。RTOS的技术价值在于为资源受限的微控制器(MCU)提供标准化的开发框架,显著提升复杂物联网设备的开发效率与可靠性。应用场景广泛覆盖智能家居、工业传感、穿戴设备等需要实时响应、低功耗与网络连接的领域。本文聚焦于RT-Thread,一个在物联网领域广泛应用的实时操作系统,深入解析其线程调度、IPC通信及组件化设计,并探讨如何利用其丰富的软件包生态

weixin_34090562的博客 494

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 559

DP_AUX辅助通道介绍

DisplayPort(简称DP)是一个由PC及芯片制造商联盟开发,视频电子标准协会(VESA)标准化的数字式视频接口标准。其中辅助通道(AUX)是一条独立双向半双工的传输通道,它也是一对差分信号线。其数据传输速率1Mbps,用来传输配置参数与指令。

cjie221的博客 5347

keil C51使用串口时程序跑死的问题

在使用STC51单片机的串口时,有时候会进入一种很奇怪的情况,就是程序进入了一下子跑死了,初始化代码如下: void UsartConfiguration(unsigned int bps) { SCON = 0X50; //设置为工作方式1 10位异步收发器 TL2 = RCAP2L = bps; //set auto reload value TH2 = RCAP2H = bps>

一个不甘寂寞的编程之路 3845

用Excel或WPS做两独立样本的T检验

一般情况下收集数据时常用的是Excel或者WPS,但统计时却用SPSS等软件进行统计学分析,经常很多人找不到SPSS的安装包,或者苦于正版激活或忘记教程,其实Excel或WPS自带函数就足够了,均数、标准差以及统计检验都是一个函数而已。解释:先做F检验,如果F>0.05就做T检验,Ttset里的数据为两组的数据的比较,结果如下。A组的均数计算 =AVERAGE(B2:B6)A组的标准差计算 =STDEV(B2:B6)B组的标准差计算=STDEV(B7:B19)分组 数值 A组均数 A组标准差 p值。

Mrrunsen的博客 6751

C51单片机实现串口通信

使用的单片机型号STC8A8K64S4A12,实现字符串的发送与接收,向单片机发送一串字符,单片机就原样返回到PC。本来以为很简单,写完程序调试发现无法实现通信,查看该芯片的官方代码,发现需要加上。这算是学习单片机的一个记录吧,惭愧毕业几年才开始捡起单片机。外设端口切换寄存器1( P_SW1 / AUXR1 )3)设置SCON寄存器采用哪一种的工作模式;原来用这个芯片需要RX、TX引脚设置。1)打开CPU的总中断EA;2)打开串口通信的中断ES;5)选择定时器的工作方式。

u014034716的博客 4382

点云焊缝提取

本文介绍了一个基于PCL库的点云处理流程,包含三个核心模块:MLS平滑处理通过多项式拟合修正点云位置;差异提取通过双向匹配定位源/目标点云的非重叠区域;统计过滤剔除离群噪声点。该流程采用"平滑-筛选-净化"的通用思路,将复杂算法封装为可配置接口,实现了工业级点云预处理。文章重点分析了各模块的原理、PCL接口调用及参数设计逻辑,同时指出参数调优、算法扩展等深入探索方向,展现了PCL在点云处理中的模块化优势与实用价值。

weixin_45196569的博客 250

044、Edge Impulse的音频分类实战

上周调试一块STM32WBA52开发板,板载PDM麦克风死活采不到有效数据。示波器怼上去,时钟线波形漂亮得像教科书,数据线却像心电图——全是毛刺。折腾半天发现是电源纹波干扰,给麦克风单独加了个LC滤波,世界清净了。这种坑,做音频分类的嵌入式工程师迟早要踩一遍。

2401_88858637的博客 54

基于C51的中断控制

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。单片机中断(Interrupt)是硬件驱动事件,它使得CPU暂停执行当前的主程序,转而去执行一个中断服务子程序。如果单片机没有中断系统,单片机的大量时间可能会浪费在是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式 中的等待现象,大大地提高了单片机的工作效率和实时性。............

妙乌的博客 2485

AgentScope深入分析-ReActAgent

ReActAgent 是 AgentScope 框架中最核心的智能体实现,它完美诠释了"推理-行动"(Reasoning-Acting)循环的精髓。本文将深入分析 ReActAgent 的类继承关系、核心执行流程,以及状态管理、钩子机制、实时介入等关键技术点。通过阅读本文,你会理解智能体如何与模型交互、如何执行工具、如何处理中断,以及这些机制背后的设计考量。模块化:通过组合不同的组件(模型、格式化器、工具集、记忆)来构建智能体透明性:所有关键流程都对开发者可见,可以精确控制可扩展性。

842

在keil5中调试串口遇到的问题

调试串口遇到的问题

weixin_43788067的博客 2299

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C51 interrupt 中断

1、中断源与标记位 ----引起CPU中断的根源叫做中断源,中断源向CPU的请求,叫做中断请求,51单片机有5个中断源 符号 产生条件 INT0 外部中断0,中断请求信号由P3.2输入,低电平或下降沿引起 INT1 外部中断1,中断请求信号由P3.3输入,低电平或下降沿引起 T0 定时器/计数器0中断,由T0计数器记满回0引起 T1 定时器/计数器1中断,由T1计数器记满回0引起 RX、TX 串行口中断,串行口完成一帧数据发送/接收后引起 ...

weixin_52668204的博客 2920

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

keil中的串口调试:

keil中串口的虚拟调试信息在通过View-serial windows-#usart1/2/3/4/debug(printf)可以看到。当然也可以通过虚拟串口VSPD+串口调试助手在外部实现,方法如下: 虚拟 串口使用:步骤 1 下载虚拟串口软件,虚拟2个连接的串口COMA/COMB,这两个串口与PC机的真实物理串口没关系。两边的设置相同 2 打开串口通讯助手,将A分配给串口通讯助手,则B...

weixin_30247159的博客 3550

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

keilC51中调试的方法(主要介绍串口调试XCOM)

keilC51中串口调试的方法

weixin_51370842的博客 1763

51单片机在什么情况下会产生串口中断

转载-----点击打开链接 子函数:void serial() interrupt 4 { P1=SBUF; RI=0; } { P1=SBUF; RI=0; } 别的中断都是在某个I/O口为低电平时产生中断,串口中断是在什么情况下产生呢? 首先,你要用软件允许中断,即 C语言中 EA = 1; //允许总中断 ES = 1; //允许串口中断 汇编中可用 SETB ...

qingfeng_博客 7967
上一篇: PowerBuilder数据窗口保存为Excel表
下一篇: 要学的东西真的太多了,老了……
brain_
博客等级 码龄22年 4粉丝 32原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值