当前位置: 首页 > news >正文

【单片机】51单片机串口的收发实验,串口程序

在这里插入图片描述
这段代码是使用C语言编写的用于8051单片机的串口通信程序。它实现了以下功能:

引入必要的头文件,包括reg52.h、intrins.h、string.h、stdio.h和stdlib.h。

定义了常量FSOC和BAUD,分别表示系统时钟频率和波特率。

定义了一个发送数据的函数send,该函数将数据发送到串口,等待数据发送完成后清除发送中断标志。

定义了一个打印字符串的函数Print_Str,该函数将一个以空字符结尾的字符串发送到串口。

定义了串口初始化函数SerInit,该函数配置串口通信的相关寄存器,包括设置波特率、串口模式、定时器模式等。

定义了一个延时函数delay_ms,用于产生指定毫秒数的延时。

定义了全局变量Txd_data,用于保存接收到的数据。

定义了串口中断服务函数Uart_isr,当接收到数据时会触发串口中断,该函数将接收到的数据发送回去。

在main函数中,首先调用SerInit进行串口初始化,然后开启总中断,延时一段时间,接着使用Print_Str函数发送一些字符串。

在main函数的主循环中,程序会一直循环执行。

总体来说,这段代码配置了8051单片机的串口通信功能,使其能够接收和发送数据。通过串口,你可以与外部设备进行数据交换和通信。

#include "reg52.h"
#include <intrins.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#define FSOC	11059200L
#define BAUD	9600void send(unsigned char dat) {SBUF = dat;while (!TI);TI = 0;
}void Print_Str(unsigned char *s) {while (*s != '\0') {send(*s++);}
}void SerInit(void) {SCON = 0x50;TMOD = 0x20;TCON = 0x40;TH1 = -(FSOC / BAUD / 12 / 16);TL1 = -(FSOC / BAUD / 12 / 16);PCON = 0x80;RI = 0;TI = 0;ES = 1;
}void delay_ms(unsigned int t) {unsigned char ttt;while (t--) {for (ttt = 0; ttt < 125; ttt++);}
}unsigned char Txd_data;
void Uart_isr() interrupt 4 {if (RI) {Txd_data = SBUF;RI = 0;send(Txd_data);}
}void main(void) {SerInit();EA = 1;delay_ms(200);Print_Str("zheng dian bao shi ");Print_Str("\r\n");while (1) {}
}
http://www.lryc.cn/news/109438.html

相关文章:

  • 【bug】记录一次使用Swiper插件时loop属性和slidersPerView属性冲突问题
  • 云原生应用里的服务发现
  • 【零基础学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流
  • 运输层---概述
  • 高速公路巡检无人机,为何成为公路巡检的主流工具
  • 仓库管理系统有哪些功能,如何对仓库进行有效管理
  • Java 比Automic更高效的累加器
  • antDv table组件滚动截图方法的实现
  • JavaSE【抽象类和接口】(抽象类、接口、实现多个接口、接口的继承)
  • 微信小程序如何跳转H5页面
  • C++(20):bit_cast
  • STM32 低功耗-停止模式
  • Hutool中 常用的工具类和方法
  • K8s(健康检查+滚动更新+优雅停机+弹性伸缩+Prometheus监控+配置分离)
  • Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查
  • React Hooks 中的 useEffect(副作用)
  • [CKA]考试之持久化存储卷PersistentVolume
  • 基于LLM的SQL应用程序开发实战(一)
  • 如何批量实现多行合并后居中
  • 【深度学习_TensorFlow】手写数字识别
  • antv/l7地图,鼠标滚动,页面正常滑动-- 我们忽略的deltaY
  • 再续AM335x经典,米尔TI AM62x核心板上市,赋能新一代HMI
  • springboot和Django哪一个做web服务器框架更好
  • C#核心知识回顾——21.归并排序
  • 基于netty的rpc远程调用
  • RabbitMQ输出日志配置
  • 解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起
  • 为Android构建现代应用——应用导航设计
  • 聊聊 Docker 和 Dockerfile
  • element表格+表单+表单验证结合u