51单片机c语言编程实现AD转换然后发串口通信,可是传输的数据没有变化,为什么? 在线等····

#include<reg52.h>#include<intrins.h>#include<stdio.h>#defineucharunsignedchar#defineu... #include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit adwr=P3^6;
sbit adrd=P3^7;

void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
//REN=1;
//SM0=0;
//SM1=1;
//TI=0;
SCON=0x40;
}

void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

void main()
{
init();
wela=1;//
P0=0; //选通ADCS
while(1)
{
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;
delayms(10);
P1=0xff;
adrd=1; //读取P1口之前先给其写全1
_nop_();
adrd=0;
_nop_();
SBUF=P1;
adrd=1;
}
}
展开
 我来答
做而论道
高能答主

2012-03-28 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
你的:
SBUF = P1; //读数据并发送

问题稍稍复杂了一点,分解一下,改为:

P2 = P1; //读数据当场显示,观察数据是否正确

SBUF = 100; //发送一个自定义的数据,观察对方接收的情况
delayms(200);//多延时一会,等待发送完毕

试试看,找出毛病出在何处。
zhxiufan
2012-03-28 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
串口通讯,一个数据传输完毕后TI置1,必须手动清零,所以你的程序要增加一段程序:
SBUF=P1;
while(TI==0);
TI=0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wmgi7205
2012-03-27 · TA获得超过388个赞
知道小有建树答主
回答量:771
采纳率:66%
帮助的人:413万
展开全部
总中断没打开 EA=1;
追问
我没有用到中断
追答
你用的什么采集的AD P1口干什么用的 你要是用串口发数据 发完后需要清掉标志位的 否则 --!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WOAINIXIXU
2012-03-30
知道答主
回答量:30
采纳率:0%
帮助的人:7.1万
展开全部
zhem cahng le ya
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式