您的位置 首页 测评

根据IIC总线的AD转化模块PCF8591

*本程序使用普中开发板调试*includereg52h>includeintrinsh>defineuintunsignedintdefineucharunsignedchardefine

/*本程序运用普中开发板调试*/

#include
#include
#define uint unsigned int
#define uchar unsigned char

#define addw 0x90
#define addr 0x91

sbit scl=P2^0;
sbit sda=P2^1;

sbit rs=P2^6;
sbit rw=P2^5;
sbiten=P2^7;

uchar Ch0value,Ch1value;

void delayms(int i)
{int x,y;
for (x=i;x>0;x–)
for(y=110;y>0;y–);
}

void usdelay()
{
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
}

void start()//开端信号
{//时钟线在高电平时,数据线由高变低即为开端信号由高变低即为开端信号
sda=1;
usdelay();
scl=1;
usdelay();
sda=0;//数据线由高变低即为开端信号
usdelay();
scl=0;
}

void stop()//完毕信号
{//时钟线在高电平时,数据线由低变高即为完毕信号
sda=0;
usdelay();
scl=1;
usdelay();
sda=1;
usdelay();
sda=0;//这句可有可无
scl=0;//这句可有可无
}

void ack()//应对信号
{uchar i;
scl=1;
usdelay();
while((sda==1)&&(i<200))i++;
scl=0;
usdelay();
}

void Noack() //不应对
{
sda=1;//时钟线高电平时,数据线高,即为不应对
usdelay();
scl=1;
usdelay();
scl=0;
usdelay();
}

void send_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
scl=0;
usdelay();
sda=(bit)(dat&0x80); //数据传送是由高到低
//(bit)为强制转化指令,把数据变为非0即1的一位数据库
usdelay();
scl=1;
usdelay();
dat<<=1;
}
scl=0;
usdelay();
sda=1;//开释总线
usdelay();
}

uchar read_byte()
{

uchar i,k;
scl=0;
usdelay();
sda=1; //开释总线
usdelay();
for(i=0;i<8;i++)
{
scl=1;
usdelay();
k=(k<<1)|sda;//判别8次,移位7次
scl=0;
usdelay();
}
return k;
}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部