- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AD5422,21 程序
/*-----------------------ADI AD5422/AD5412 Driver Reference Design Source Code-----------------------------------
Author: 西安济通电气
Date: 2011-9-1
Rev: 1.0
Description: Realize AD5412/22 Driver,Use stc51 as MCU,Development Tool: KEIL C
---------------------------------------------------------------------------------------------------------*/
#include reg51.h
#define SET_CLEAR() P1 = (P1 | 0x40) //P1.6-CLEAR
#define CLR_CLEAR() P1 = (P1 0xbf)
#define SET_LATCH() P1 = (P1 | 0x10) //P1.4-LATCH
#define CLR_LATCH() P1 = (P1 0xef)
#define SET_SCL() P1 = (P1 | 0x04) //P1.2-SCLK
#define CLR_SCL() P1 = (P1 0xfb)
#define SET_SDO() P1 = (P1 | 0x08) //P1.3-SDIN
#define CLR_SDO() P1 = (P1 0xf7)
sbit DOUT=P1^5;
unsigned char buf[4] = {0,0,0,0};
void delay (int length)
{
while (length 0)
length--;
}
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(!TI);
TI=0;
}
void WriteToAD5422(unsigned char count,unsigned char *buf)
{
unsigned char ValueToWrite = 0;
unsigned char i = 0;
unsigned char j = 0;
SET_LATCH();
CLR_LATCH();
delay(5);
for ( i=count;i0;i-- )
{
ValueToWrite = *(buf+i-1);
for (j=0; j8; j++)
{
CLR_SCL();
delay(5);
if(0x80 == (ValueToWrite 0x80))
{
SET_SDO(); //Send one to SDIN pin of AD5422
}
else
{
CLR_SDO(); //Send zero to SDIN pin of AD5422
}
delay(5);
SET_SCL();
ValueToWrite = 1; //Rotate data
}
}
CLR_SCL();
delay(5);
SET_LATCH();
delay(20);
}
void ReadFromAD5422(unsigned char count,unsigned char *buf)
{
unsigned char i = 0;
unsigned char j = 0;
unsigned int iTemp = 0;
unsigned char RotateData = 0;
CLR_LATCH();
delay(5);
for(j=count; j0; j--)
{
for(i=0; i8; i++)
{
CLR_SCL();
RotateData = 1; //Rotate data
delay(5);
CLR_SDO(); //Write a nop condition when read the data.
delay(5);
iTemp = DOUT; //Read SDO of AD5422
SET_SCL();
if(iTemp)
{
RotateData |= 1;
}
}
*(buf+j-1)= R
文档评论(0)