找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 799|回复: 8
收起左侧

单片机SBUF能不能table[]=一样 改变[]内的数,改变它读出来的数

[复制链接]
ID:1110076 发表于 2024-1-25 00:43 来自手机 | 显示全部楼层 |阅读模式
SBUF能不能像table[]一样,改变[]内的数,改变它读出来的数。例如table[]={1,2} table[1]=2
回复

使用道具 举报

ID:198296 发表于 2024-1-25 06:06 | 显示全部楼层
不行!
SBUF实际上是由两个寄存器组成, 一个发送一个接收(共用同一地址).
回复

使用道具 举报

ID:883242 发表于 2024-1-25 10:05 | 显示全部楼层
就算行,有什么意义呢?接收SBUF里面的值是外部总线确定的,你改它除了骗你自己有什么用途?
回复

使用道具 举报

ID:1064915 发表于 2024-1-25 10:13 | 显示全部楼层

SBUF可以赋值
回复

使用道具 举报

ID:1110076 发表于 2024-1-25 10:51 来自手机 | 显示全部楼层
Hephaestus 发表于 2024-1-25 10:05
就算行,有什么意义呢?接收SBUF里面的值是外部总线确定的,你改它除了骗你自己有什么用途?

不不不,我的意思是。如果想要在显示屏上显示一串字符,其中一个办法不是先建立一个table然后通过改变括号里的数,从而让table里的每个字符都在显示屏上展示出来,那如果我想通过串口输入的东西,把我输入的字符在显示屏上同步展示的话,能不能类比那个table,对SBUF做出同样的操作
回复

使用道具 举报

ID:57657 发表于 2024-1-25 16:04 | 显示全部楼层
CPU改变SBUF寄存器的值会触发单片机内部串口模块发送字节的行为。
串口接收到字节后将其存入SBUF寄存器并触发串口中断,最后被CPU取走。
回复

使用道具 举报

ID:633559 发表于 2024-1-26 08:42 | 显示全部楼层
米小忙 发表于 2024-1-25 10:51
不不不,我的意思是。如果想要在显示屏上显示一串字符,其中一个办法不是先建立一个table然后通过改变括 ...

一般单片机SBUF接收只缓存1个字节,后边接收的数据会覆盖掉之前的。一般的操作定义一个你说的table数组,利用接收中断或者循环接收读取SBUF的值存入table,然后像你说的去操作table。那就是2个数组了,1个用于接收缓存数据,1个用于显示数据缓存。关于SBUF寄存器可以浏览相应芯片的数据手册。
回复

使用道具 举报

ID:883242 发表于 2024-1-26 11:30 | 显示全部楼层
米小忙 发表于 2024-1-25 10:51
不不不,我的意思是。如果想要在显示屏上显示一串字符,其中一个办法不是先建立一个table然后通过改变括 ...

你要传给SBUF的数的范围呢?
回复

使用道具 举报

ID:57657 发表于 2024-1-26 12:44 | 显示全部楼层
Hephaestus 发表于 2024-1-26 11:30
你要传给SBUF的数的范围呢?

SBUF寄存器是个8位宽的寄存器,因此范围在0~255之间
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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