max5400drive.txt

来自「利用MEGA16中的SPI总线实现对数控电位器MAX5400的控制」· 文本 代码 · 共 59 行

TXT
59
字号
/*-----------------------------------------
----------------陈晓涛---------------------
-------------------------------------------
名称:SPI总路线实现数控电位器驱动程序
说明:晶振为1M
-----------------------------------------*/
#include"iom16.h"
#include"intrinsics.h"
/*-----------------------------------------
SPI接口定义
----------------------------------------*/
#define DDR_SPI DDRB  //SPI总路线接口在PORTB
#define DD_MOSI DDB5 //MOSI接口定义
#define DD_SCK  DDB7 //SCK接口定义
#define DD_SS  DDB4//SS接口定义
#define SET_SS  PORTB|=0X10;
#define CLR_SS  PORTB&=0XEF;

unsigned char data;
void SPI_MasterInit(void);
void SPI_MasterTransmit(char cData);
void write_max5400(unsigned char data1);

void SPI_MasterInit(void)
{
/* MOSI SCK /SS*/
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
/* SPIfck/16 */
SPCR=0X5c;  //(50 58 5C都可用,用54将播入一个0)SPI使能,主机模式,中断禁止,MSB先发,上升为起始沿,起始沿采样,SCK为Fosc/4
SPSR|=0X01;//SCK倍速为Fosc/2
}

void SPI_MasterTransmit(char cData)
{
SPDR = cData;
while(!(SPSR & (1<<SPIF)))
;
}

void write_max5400(unsigned char data1)
{
CLR_SS;
SPI_MasterTransmit(data1);
SET_SS;
}

void main()
{
SPI_MasterInit();
write_max5400(0xff);
while(1)
{
 if(data>=255)
   data=0;
 data+=5;
 write_max5400(data);
}
}

⌨️ 快捷键说明

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