求51单片机串口方式0接收程序写法

我想用串口来接收10位AD转换的数据,相当于一个移位寄存器,接收的数据是一位一位的接收的,时钟由RXD提供,我要把接收的数据存在数组中好处理,然而接收的波特率是固定的,F... 我想用串口来接收10位AD转换的数据,相当于一个移位寄存器,接收的数据是一位一位的接收的,时钟由RXD提供,我要把接收的数据存在数组中好处理,然而接收的波特率是固定的,Fosc/12。会不会导致数据丢失?我怎么检查数据正确。
希望用过方式0的朋友和会用的朋友给点建议,感激不尽
展开
 我来答
手机用户22658
推荐于2016-10-19 · 超过39用户采纳过TA的回答
知道答主
回答量:163
采纳率:0%
帮助的人:0
展开全部
#include <AT89X51.H>//单片机51头文件,存放着单片机的寄存器
unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit gewei=P2^2; //个位选通定义
sbit shiwei=P2^3; //十位选通定义
unsigned char code table[]=;
//;// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED() //LED显示接收到的数据
{
shiwei=0;
P0=~table[dat/16];
Delay(8);
shiwei=1;
gewei=0;
P0=~table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
{
Init_Com();//串口初始化
// P1=0xf0;
while(1)
{
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI清零。
SBUF = dat; //在原样把数据发送回去
}
LED(); //显示接收到的数据
}
}
百度网友0d938bf
2011-06-25 · TA获得超过196个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:94.2万
展开全部
你要安全的话就发送两次好咯,每个数据都发两次,或者整体发两次

你自己定个协议就好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式