ads8364.c

来自「这是一个成熟的用于驱动步进马达的程序,我们用于调试螺钉的.」· C语言 代码 · 共 113 行

C
113
字号
#include <reg52.h>
#include <intrins.h>
#include "TypeDefines.h"
#include "delay.h"
#include "ADS8364.h"



void clock(uchar num)
{
    uchar i;
    for(i=0;i<num;i++)
    {
        CLK=0;_nop_();
        CLK=1;_nop_();
    }
}


void ADS8364_read(uchar ad_num,uchar num)
{
    uchar i,j,tmp8;
    uint tmp16=0;
    ulong tmp32[4]={0};
	P1=0xff;
    for(j=0;j<num;j++)
    {
        ADS8364_init();
        ADS8364_start();
        clock(19);
	 
		if(ad_num==1)
		{
        	AD1_CS_LOW;
		}
		else
		{
			AD2_CS_LOW;
		}
	  
		for(i=0;i<2;i++)
		{
			RD_AD=0; _nop_();
			RD_AD=1; _nop_();
			RD_AD=0; _nop_();
			RD_AD=1; _nop_();
			RD_AD=0; _nop_();
			RD_AD=1; _nop_();	
		}
        for(i=0;i<4;i++)
        {
            RD_AD=0; _nop_();
            tmp8=P1; _nop_();
            RD_AD=1; _nop_();
            RD_AD=0; _nop_();
            tmp8=P1; _nop_();
            RD_AD=1; _nop_();
            RD_AD=0; _nop_();
            tmp16=(uint)P1;
            RD_AD=1;_nop_();
            tmp16<<=8;
            tmp16+=tmp8;
            if(tmp16>=0x8000)
            {
                tmp16&=0x7FFF;
            }
            else
            {
                tmp16|=0x8000;
            }
            tmp32[i]+=tmp16;
        }
        AD1_CS_UP;

    }
    for(i=0;i<4;i++)
    {
        tmp32[i]<<=7;
		if(ad_num==1)
		{
        	Data1[i]=(uint)(tmp32[i]/para1[i]);
			Data1[i]-=origin1[i];
		}
		else
		{
			Data2[i]=(uint)(tmp32[i]/para2[i]);
			Data2[i]-=origin2[i];
		}
    }
}


void ADS8364_start()
{
    CLK=0;	_nop_();
    HOLD=0;	_nop_();
    CLK=1;	_nop_();
    HOLD=1; _nop_();                                
}

void ADS8364_init()
{
    AD1_CS_UP;	  _nop_();
    RD_AD=1; _nop_();
    CLK=1;	  _nop_();
    HOLD=1;  _nop_();
    RESET=1; _nop_();
    _nop_();  _nop_();
    RESET=0; _nop_();
    _nop_(); _nop_();
    RESET=1;  _nop_();    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?