📄 ad9850.c
字号:
/********************************************************
并行驱动 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -