main.c

来自「16位的AD芯片的ADS1158的驱动程序。」· C语言 代码 · 共 73 行

C
73
字号
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "RXDTXD.h"
#include "ADS1156.h"

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~配置SPI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void SPI_MasterInit(void)     //配置SPI为主机
{
/* 设置MOSI 和SCK 为输出,其他为输入 */
DDRB|=(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB5);
DDRB&=~(1<<PB4);
PORTB|=(1<<PB1)|(1<<PB2)|(1<<PB4); //定义SS的使能端
/* 使能SPI 主机模式,设置时钟速率为fck/16 */
SPCR = 0x52; //7e 高位首发,SPI使能,主机模式,SCK空闲保持为低电平,数据在上升沿采样,速率为1:64(FOSC/128) 
//SPSR = 0x01; //使能倍速1:32
}

//--------------------------------------------------------------------------------------------//

void  port (void)
{
  DDRD|=(1<<PD2);       //485  cs
  PORTD&=~(1<<PD2);  
  DDRB|=(1<<PB0);       //power 灯
  PORTB&=~(1<<PB0);  
  DDRD&=~(1<<PD3);      //DRDY
  PORTD|=(1<<PD3);  
  DDRD|=(1<<PD4);       //START
  PORTD|=(1<<PD4);  
  PORTB&=~(1<<PB2);     //复位ADS1256
  PORTB|=1<<PB2;
}



//--------------------------------------------------------------------------------------------
 main(void) 
{ 
  unsigned long int d=0,p[12],n=0,m=0;
  unsigned char aa=0,a=0,b=0,c=0,i=0;
  port();     //端口初始化
  SPI_MasterInit();  //SPI端口初始化 
  USART_Init(1);     //串口初始化
  ADS1158();         //初始化ADS1158
  sei();
   
  while(1) 
  {
    aa=sum;
	
	if(aa<=8)
	  {sum=10;
	   d=ads_sum(aa);   //发送要读取的通道命令0、1、2、3、4、5、6、7,并近回蹈孟通道的AD转换值。
	   a=d%256;
	   d=d>>8;
	   b=d%256;
	   d=d>>8;
	   c=d%256;
	   USART_Transmit(c);
	   USART_Transmit(b);
	   USART_Transmit(a); 
	  }
	 
	if(aa==9)
	  {
	  sum=10;
	  USART_Transmit(aa); 
	  ADS1158();    //初始化ADS1256
	  }
  }  
}

⌨️ 快捷键说明

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