在仿真器上调了几天程序,始终没有结果。程序如下,有知情者还望赐教赐教。
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit ADCLK=P0^0;
sbit ADCS=P0^1;
sbit ADDIN=P0^2;
sbit ADSTRB=P0^3;
sbit ADDOUT=P0^5;
void delay(int del)
{
for(del;del>0;del--);
}
void main()
{
uchar i,j,k;
uchar cont;
uint u;
P0=0xff;
while(1)
{
ADCS=0;
LED=0;
cont=0x89;
for(i=0;i<8;i++)
{
ADCLK=0;
ADDIN=(bit)(cont&0x80);
cont<<=1;
ADCLK=1;
_nop_();
_nop_();
}
ADDIN=0;
for(j=0;j<5;j++)
{
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
}
for(k=0;k<12;k++)
{
ADCLK=0;
_nop_();
u<<=1;
if(ADDOUT)
{
u++;
}
ADCLK=1;
_nop_();
_nop_();
}
u&=0x0fff;
ADCLK=0;
ADCS=1;
delay(100);
}
}
得到的结果始终是0fff,也就是说DOUT管脚一直保持在1。为什么呢? |