📄 main.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -