我编写了一个程序来为AT89S51串行传输char值。它工作得很好。
计划如下: -
#include<reg51.h>
void main()
{
TMOD=0x20;
TH1=0xFD;
SCON=0x50;
TR1=1;
while(1)
{
SBUF='A';
while(TI==0);
TI=0;
}
}
在上面的代码中,'A'被传输。
现在我想传输一个整数值,我已经为它编写了一个程序。
计划如下: -
#include<reg51.h>
void main()
{
int i=61;
TMOD=0x20;
TH1=0xFD;
SCON=0x50;
TR1=1;
while(1)
{
SBUF=i;
while(TI==0);
TI=0;
}
}
以上程序正在传输'='(即十进制61对应于ASCII中的'='字符。)
我想知道如何传输整数值。
请在这方面指导我。
答案 0 :(得分:1)
SBUF
包含要传输的单个字节(即char)。如果你在那里放'A',那就是将要发送的内容(实际上将发送0x41,这对应于'A'的ASCII值)。将i
的值分配到SBUF
时,无论i
的类型如何,都会将其解释为字节。该字节可以以接收方所需的任何方式进行解释 - 它可以将其视为整数或ASCII值,它与传输相同;区别在于数据的处理方式。
答案 1 :(得分:0)