📄 备份 fft_240128.c
字号:
/********16位ad函数*************
sclk 接PD2
DOUT 接PD1
CONV 接PD3
EOC 接PD0
cs 接PD4
*******************************/
#define uint unsigned int
#define uchar unsigned char
#include<avr/io.h>
#include <avr/pgmspace.h>
/*-----------------------------------------------------------------------
延时函数
系统时钟:8M
-----------------------------------------------------------------------*/
void delay_1us(void) //1us延时函数
{
asm("nop");
}
void delay_nus(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1us();
}
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_nms(unsigned int n) //N ms延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}
/**********位操作函数*********/
void set_sclk(uchar i)//clk 接PA2
{
if(i)
PORTD|=0x04;
else
PORTD&=0xfb;
}
void set_conv(uchar i)
{
if(i)
PORTD|=0x08;
else
PORTD&=0xf7;
}
void set_cs(uchar i)
{
if(i)
PORTD|=0x10;
else
PORTD&=0xEF;
}
/*********m16初始化**********/
void m16_init(void)
{
DDRD|=0Xfc;
DDRD&=0Xfc;//定义pa1 pa2 为输入,其他引脚为输出
DDRE=0Xff;
DDRF=0Xff;
DDRG=0Xff;
DDRB=0Xff;
DDRC=0Xff;
DDRA=0Xff;//端口初始化
PORTD|=0X03;//定义pa1 pa2为带上拉输入
//CLI();//关中断
}
/********max195初始化********/
void max195_inital(void)
{
set_cs(1);
set_sclk(0);
}
/**********************
max195转换开始
**********************/
void max195_start(void)
{
set_conv(0);//,启动转换
delay_nus(100);
set_conv(1);
}
/***********************/
uint max195_read(void)
{ uint num2=0;
uchar num1=0,k;
while((PIND&0x01)==0x01);
set_cs(0);
for(k=0;k<16;k++)
{
set_sclk(1);
delay_1us();
if((PIND&0x02)==0x02)//判断pa1是否为1
{
num1=1;
//PORTA|=0x20;
}
else
{
num1=0;
//PORTA&=0xdf;
}
num2=num2*2+num1;
set_sclk(0);//下降沿锁存下一位
delay_nus(3);
}
return num2;
}
int main(void)
{
uint dat=0,average_dat[10]={0};
uchar i=0;
float average=0.0;
volatile float v=0.0;
m16_init();
max195_inital();
for(i=0;i<10;i++)
{
max195_start();
delay_nus(10);//必须加一段延时
dat=max195_read();
average_dat[i]=dat;
average=average+average_dat[i];
}
v=(average/10-32768);
v=v*2.48/32768;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -