坦物闹 pcf8574t 是CMOS电路,它通过两条双向总线可使大多数MCU实现远程I/O扩展。该器件包含一个8位准双向口和一个总线接口。pcf8574t 电流消耗很低,并且输出锁存,具有大电流驱动能力,可直接驱动LED。它还带有一种中断接线可与MCU的中断逻辑相连。通过INT发送中断信号,远端I/O口不必经过总线通信就通知蚂雹MCU是让罩否有数据从端口输入。这意味着 pcf8574t 可以作为一个单被控器。
void PCF8574init(void){
I2CM=1
}
void delay1ms(uchar x)
{
unsigned char i,j
while(x--)
{
for(i=5i>0i--)
for(j=132j>0j--)
}
}
/*---------------------------------------------------------------------------------------------------
开始:START
描述:启动I2C 总线子程序--发送唯丛颂I2C 起始条件
---------------------------------------------------------------------------------------------------*/
void start(void)
{
MDE=1
MCO=1
MDO=1
_nop_()
_nop_()
_nop_()
_nop_()
_nop_()
MDO=0
_nop_()
_nop_()
_nop_()
_nop_()
_nop_()
MCO=0
}
void wrbyt(uchar shu)
{
uchar i
ack=0
for(i=0i<8i++)
{
if((shu&0x80)>0)
{
MDO=1
_nop_()
MCO=1
_nop_()
_nop_()
_nop_()
MCO=0
// MDO=0
}
else
{
MDO=0
_nop_()
MCO=1
_nop_()
_nop_()
_nop_()
// MCO=0
}
shu=shu<<1
}
}
/*---------------------------------------------------------------------------------------------------
名称:STOP
描述:停止I2C 总线子程序--发送I2C 总线停止条件
---------------------------------------------------------------------------------------------------*/
void stop(void)
{
MDE=1
MDO=0
_nop_()
MCO=1
_nop_()
_nop_()
_nop_()
_nop_()
_nop_()
MDO=1
_nop_()
_nop_()
_nop_()
}
void checkack(void)
{
MDO=1/*8位发送完后释放数据线,准备接收应答位*/
MDE=0
_nop_()
_nop_()
MCO=1
_nop_()
_nop_()
_nop_()
if(MDI==1)ack=0
else ack=1/指郑*判断是否接收到应答信号*/
MCO=0
MDE=1
_nop_()
_nop_()
}
/*************************************************************************************
主程序
**************************************************************************************/郑茄
void main()
{
PCF8574init()//主机模式
start()
wrbyt(slvadr)//发一个数据或地址
wrbyt(0xF0)//端口初始化
stop()
while(1)
{delay1ms(1)}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)