您的位置 首页 数字

proteus 仿真AD5241程序。。8位数字电位计

#includeiom16v.h>#includemacros.h>#includestdio.h>#includeskey.c#defineucharunsignedchar#de

#include
#include
#include
#include “skey.c”
#define uchar unsigned char
#define uint unsigned int
#define START 0X08
#define MT_SLA_ACK 0X18
#define MT_SLA_NOACK 0X20
#define MT_DATA_ACK 0X28
#define MT_DATA_NOACK 0X30

#define Start() (TWCR=(1<#define Stop() (TWCR=(1<#define Wait() while(!(TWCR&(1<#define TestACK() (TWSR&0xF8) //取出状况码
#define SetACK() (TWCR|=(1<#define Writebyte(twi_d) {TWDR=(twi_d);TWCR=(1<

void twi_init()
{
TWBR=0X20;
TWSR=0;
TWCR=0X44;//时能twi应对。twi使能

}
//手册172页
uchar AD5241_writeB(uchar devadd,uchar cmd,uchar rdata)
{
Start();
Wait();
if(TestACK()!=START)
return 0;
Writebyte(devadd);

Wait();
if(TestACK()!=MT_SLA_ACK)
return 0;

Writebyte(cmd);
Wait();
if(TestACK()!=MT_DATA_ACK)
return 0;
Writebyte(rdata);
Wait();
if(TestACK()!=MT_DATA_ACK)
return 0;

Stop();
delay(10);
return 1;

}

void main()
{
uchar i,data=128;
twi_init();
AD5241_writeB(0x58,0x10,0);
delay(10);
AD5241_writeB(0x58,0x10,data);//
while(1)

{
if(key_press())
{
i=key_scan();
switch(i)
{
case 0:
data-=16;break;
case 1:
data+=16;break;
case 2:
data=0;break;
case 3:
data=255;break;

}
}
AD5241_writeB(0x58,0,data);

}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/272912.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部