我写了一个51单片机的程序,想要把AD转换的结果发送给串口。可是试验了一下,单片机接收不到转换数据,用示波器测了一下,好像是AD转换芯片没有输出,不知道是不是我程序上的问题,希望大神帮忙看看。我用的AD芯片是tm7707
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCLK=P1^0;
sbit DIO=P1^1;
sbit RESET=P1^2;
sbit CS=P1^3;
sbit DRDY=P1^4;
uchar *intp;
uchar idata date8[24];
void write_byte1(uchar date) //写一字节数据
{
uchar i;
CS=0; //CS拉低,
for(i=0;i<8;i++)
{
SCLK=0; //SCLK拉低准备写数据
_nop_();
if(date&0x80)
DIO=1;
else
DIO=0;
SCLK=1; //SCLK拉高,写入一位数据
date<<=1;
} CS=1; //写完一个字节后CS拉高。
}
uchar read_byte1 ( ) //读一字节数据
{
uchar j,b1;
CS=0;
for(j=0;j<8;j++)
{
SCLK=0;
b1=(b1<<1)|DIO;
SCLK=1;
} return b1;
}
void save_data(void)
{
uchar i0,i1;
intp=date8;
while(DRDY); //等待DRDT为低时,可读出数据
write_byte1(0x38); //向通信寄存器写入数据,选择通道1作为有效,将下一个操作设为读数据寄存器。
for(i1=0;i1<3;i1++) //连续存储一个数据。
{
*intp=read_byte1();
intp++;
}
CS=1;
}
void init( ) //初始化
{
RESET=1;
SCLK=1;
CS=1;
DRDY=1;
}
void System_Init()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
TR1 = 1;
}