ad9850.c

来自「最新发布AD9850模块相关资料125M参考时钟」· C语言 代码 · 共 96 行

C
96
字号
/********************************************************



				并行驱动 AD9850
				FRUD -- B0
				REST -- B1
				WCLK -- B2

				数据接口 D0-D7 -- A0-A7

				ADout 定义输出频率

********************************************************/




#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

#include <avr/sfr_defs.h>
#include <avr/delay.h>


#define   uint    unsigned int
#define   uchar   unsigned int

#define SET_1(a,b) a|=(1<<b) 
#define CLE_0(a,b) a&=~(1<<b)

#define  FRUD_1  SET_1(PORTB,0)
#define  FRUD_0  CLE_0(PORTB,0)
#define  REST_1  SET_1(PORTB,1)
#define  REST_0  CLE_0(PORTB,1)
#define  WCLK_1  SET_1(PORTB,2)
#define  WCLK_0  CLE_0(PORTB,2)
#define  ADout   1000000             // 定义 输出 频率 ADout  1k
#define  IO9850  PORTA             

void initIO(void)   
{
	DDRA = 0xff;
	DDRB = 0xff;
}


void init9850(void)  
{
    WCLK_0;
	FRUD_0;
	REST_1;
	REST_0;
	
}

void UPDATE(void)  
{
	FRUD_1;
	FRUD_0;
}


void sendword(uchar dat)   
{
	IO9850 = dat ;
	WCLK_1;
	WCLK_0;	
}


void startAD(void)        
{
    long uint	 dat;
	dat =(long uint ) ADout * 34.359738;
	sendword(0);
	sendword((uchar)(dat>>24));
	sendword((uchar)(dat>>16));
	sendword((uchar)(dat>>8));
	sendword((uchar)dat);
	UPDATE();

}


int main(void)
{

    initIO();
	init9850();
    startAD();
	
	while(1);
} 

⌨️ 快捷键说明

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