#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;
}
}
SBUF = P1; //读数据并发送
问题稍稍复杂了一点,分解一下,改为:
P2 = P1; //读数据当场显示,观察数据是否正确
SBUF = 100; //发送一个自定义的数据,观察对方接收的情况
delayms(200);//多延时一会,等待发送完毕
试试看,找出毛病出在何处。
SBUF=P1;
while(TI==0);
TI=0;
我没有用到中断
追答你用的什么采集的AD P1口干什么用的 你要是用串口发数据 发完后需要清掉标志位的 否则 --!