最近在51上做MAX197的AD转换。。。。调了几天始终没有结果,还望各位帮帮忙咯。
电路是按照DATASHEET上连接的。
程序主体如下
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define PI 3.14159
sbit MAX197_CS=P2^0;
sbit MAX197_WR=P3^6;
sbit MAX197_RD=P3^7;
sbit MAX197_HBEN=P2^3;
void delay(int i)
{
for(i;i>0;i--);
}
void MAX197_Write(char temp)
{
MAX197_WR=0;
P0=temp;
_nop_();
MAX197_WR=1;
}
int MAX197_Read()
{
int premp;
uint TempL,TempH;
MAX197_RD=0;
MAX197_HBEN=0;
_nop_();_nop_();
TempL=P0;
_nop_();
MAX197_HBEN=1;
_nop_();_nop_();
TempH=P0;
_nop_();
MAX197_RD=1;
premp=TempH*256|TempL;
if(premp>0x0800)
{
premp=premp|0xf000;
}
return premp;
}
void main()
{
int pr;
MAX197_CS=0;
while(1)
{
LED=0;
MAX197_Write(0x40);
delay(5);
pr=MAX197_Read();
}
}
用中断或者查询的方式都等不到INT输出0,所以就用了延时。但是输出的结果始终为0 。这是为虾米呢??
急啊 兄弟们,帮忙想想呢。 |