ads1232的程序/* 晶振:12MHz */
#include <AT89X51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
uchar a;
bit T_ad_flag=0;
uchar code table[]="0123456789ABCDEF.";
ulong ad_data_buff[]={0,0,};
sbit PDWN=P1^3;
sbit SCLK=P1^4;
sbit DOUT=P1^5;
sbit A0=P1^6;
ulong weight=0;
ulong ads1232(uchar ADDR)
{
uchar i;
ulong adc_val;
adc_val=0; //?
PDWN=0;
_nop_();
_nop_();
SCLK=0;
_nop_();
A0=ADDR;
_nop_();
PDWN=1;
_nop_();
while(DOUT==1){;}
_nop_();
_nop_();
_nop_();
_nop_();
for(i=0;i<24;i++)
{
adc_val=adc_val<<1;
SCLK=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if(DOUT==1)
{
adc_val+=1;
}
SCLK=0;
_nop_();
_nop_();
_nop_();
}
_nop_();
SCLK=1;
_nop_();
_nop_();
SCLK=0;
return adc_val;
}
void weight_adc()
{
ad_data_buff[0]=ads1232(1);
ad_data_buff[1]=ads1232(1);
weight=ad_data_buff[0]+ad_data_buff[1];
T_ad_flag=0;
TR0=1;
}
void time0()interrupt 1
{
TH0=0x3c;
TL0=0xB0;
a++;
if(a>9)
{
a=0;
T_ad_flag=1;
TR0=0;
}
}
/**************************主程序*************************/
void main()
{
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
//DOUT=1;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(T_ad_flag)
{
weight_adc();
}
}
} |