|
本帖最后由 songguoda 于 2013-4-26 18:20 编辑
纠结了好几天,程序硬是不通!还请哪位好心的高手帮我看看呀
头文件
#ifndef _AD5260_H_
#define _AD5260_H_
//M64管脚定义
#define AD5260_CS 5 //PF5
#define AD5260_SDI 3 //PF3
#define AD5260_CLK 4 //PF4
#define AD5260_SDO 6 //PF6
//宏定义
#define CS_L PORTF&=~(1<<AD5260_CS) //置CS为低电平,使能SPI接口,使能AD5260 SPI通讯
#define CS_H PORTF|= (1<<AD5260_CS) //置CS为高电平,关闭SPI接口,关断AD5260 SPI通讯
#define CLK_L PORTF&=~(1<<AD5260_CLK) //SPI总线时钟线
#define CLK_H PORTF|=(1<<AD5260_CLK)
#define SDI_L PORTF&=~(1<<AD5260_SDI) //SPI总线数据线
#define SDI_H PORTF|=(1<<AD5260_SDI)
//#define SDO_L PORTF&=~(1<<AD5260_SDO) //SPI总线数据线
//#define SDO_H PORTF|=(1<<AD5260_SDO)
extern void Write_Byte(uchar data);
#endif
源文件
#include "main.h"
#include "ad5260.h"
void Write_Byte(uchar data)
{
uchar i,data1;
DDRF|=(1<<AD5260_CS)|(1<<AD5260_CLK)|(1<<AD5260_SDI);
DDRF&=~(1<<AD5260_SDO);
PORTF|= (1<<AD5260_SDO);
data1=data;
CS_H;
delay_us(1);
CS_L;
CLK_L;
for(i=0;i<8;i++)
{
if(data1&0x80)
{
SDI_H;
}
else
{
SDI_L;
}
CLK_H;
delay_us(1);
CLK_L;
data1=data1<<1;
delay_us(1);
}
CS_H;
delay_us(1);
}
原理图
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|