怎样把单片机特殊功能寄存器里SBUF=0x99的数据读取出来?

怎样把单片机特殊功能寄存器里SBUF=0x99的数据读取出来?,第1张

SBUF本来就是串口数据寄存器,实际上它包括两个寄存器,读地址和写地址是不同的。
读是读串口接收到的数据,接收到一个数据时RI标志位被硬件置1。
写一个数据到SBUF就会自动发送,发送完成后TI标志位被硬件置1。
要注意上面两个标志必须由软件清零 不然不会继续工作。
下面是串口简单配置:
#define BAUDRATE 0xFF
TMOD=0x21; /定时器0用方式1,定时器1用方式2/
SCON=0x50; /串行通信采用方式1,允许接收/
TH1=BAUDRATE; /设置波特率/
TR1=1;
波特率你自己去查表吧,

我来把解决方法和大家详细的汇报一下,已经实践过了。
1、需要安装modbus的最新驱动(否则地址范围被限制在32768以内,我安装的是vijeo
citect 71SP2版本)。
2、注意安装完后把驱动的帮助文件看一下(我一直看的原来的驱动帮助文件,误导我最少3个小时)
注意floatmode的参数对modnet20 是不起作用的,即使修改floatmode的参数,字的顺序不会调
整,而我们快速向导走出来的是MODbus20的协议,自己改成modbus即可。
3、最后直接建实型变量,直接显示就OK了。
4、CITECT的实型变量完全是按标准的IEEE754的格式存储的,只要字的顺序和下面的仪表或设备对应好(即修改floatmode参数)

数据运行的时候,先从存储器到寄存器,然后再通过CPU的处理,表现出来
因为CPU属于高速运算状态,存储器的数据读取速度跟不上CPU的处理速度。如果不提前调用,就会浪费CPU的资源。所以程序运行时会把数据线放到寄存器,因为寄存器里面的数据可以随时高速的调用。这样能更好地支持CPU的运算。所以内存这个寄存器相当于一个临时仓库的形式。方便CPU随时调用。
所以寄存器的作用是寄存,然后在存储器的慢速和CPU的快速之间做一个缓冲作用


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10332557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存