怎样把单片机特殊功能寄存器里SBUF=0x99的数据读取出来? 5
怎样把单片机特殊功能寄存器里SBUF=0x99的数据读取出来???或者是定义一个值,把数据读取出来反馈到电脑的调试助手...
怎样把单片机特殊功能寄存器里SBUF=0x99的数据读取出来???或者是定义一个值,把数据读取出来反馈到电脑的调试助手
展开
2个回答
展开全部
SBUF本来就是串口数据寄存器,实际上它包括两个寄存器,读地址和写地址是不同的。
读是读串口接收到的数据,接收到一个数据时RI标志位被硬件置1。
写一个数据到SBUF就会自动发送,发送完成后TI标志位被硬件置1。
要注意上面两个标志必须由软件清零 不然不会继续工作。
下面是串口简单配置:
#define BAUDRATE 0xFF
TMOD=0x21; /*定时器0用方式1,定时器1用方式2*/
SCON=0x50; /*串行通信采用方式1,允许接收*/
TH1=BAUDRATE; /*设置波特率*/
TR1=1;
波特率你自己去查表吧,
读是读串口接收到的数据,接收到一个数据时RI标志位被硬件置1。
写一个数据到SBUF就会自动发送,发送完成后TI标志位被硬件置1。
要注意上面两个标志必须由软件清零 不然不会继续工作。
下面是串口简单配置:
#define BAUDRATE 0xFF
TMOD=0x21; /*定时器0用方式1,定时器1用方式2*/
SCON=0x50; /*串行通信采用方式1,允许接收*/
TH1=BAUDRATE; /*设置波特率*/
TR1=1;
波特率你自己去查表吧,
更多追问追答
追问
这个知道,我的目的是想把存储在这个地址里面的数据给读取出来,或者说定义一个数值通过调试助手显示出来具体的步骤不会。。。 ?
追答
SBUF这个地址是不能用来存放普通数据的。
如果串口配置正确当你写入SBUF=0x33时,就会通过串口把0x33发送出去,并在发送完成后置位TI,你想反过来读它是读不到的,char i=SBUF;读的是另外一个地址,而非你用SBUF写进去的那个数。
反正不明白你是什么意思,莫非你只是想做一个串行通信程序。
展开全部
如下即可:
SBUF=0x99;
用电脑的调试助手,接收,即可得到 0x99。
SBUF=0x99;
用电脑的调试助手,接收,即可得到 0x99。
追问
0x99是特殊功能的存储地址,我的目的是想把存储在这个地址里面的数据给读取出来,或者说定义一个数值通过调试助手显示出来要怎么做啊 ?
追答
0x99是特殊功能寄存器 SBUF 的地址。
它是串口数据缓冲器。
给这个地址写数据,它就发送出去,到串口了,只能由对方来读出。
对方,发送来的,你就可以从 0x99 单元读出来。
-----------
发送、接收,两者的数据,一般是不同的。
除非,你把串口的输出引脚、输入引脚,直接短接。
那么,写这个地址、再读这个地址,数据,保证就是相同的了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询