📄 iic.c
字号:
/*
*********************************************************************************************************
* iic.c
* 实时内核
*
* (c) Copyright 2003-9-10: pearmani
* 版权所有
*
* MCU-51 专用代码
* KEIL C51大模式编译
*
* 文件名:ii.c
* 作者 :caochengfu
* 改编 :
*********************************************************************************************************
*/
/*0755-83241559孙九安*/
#include "extern.h"
/*
简单的延时
*/
/*
*********************************************************************************************************
*名称:延时8微秒
* 输入参数:无
*输出参数:无
*处理的数据:无
*调用的函数:无
*创建人: DaiWei
*创建时间:2003-8-16 10:51
*修改时间:
*********************************************************************************************************
*/
void dly8u(void)
{
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
return;
}
/*
*********************************************************************************************************
*名称:void f_iic_start(void)
*功能:启动通信
* 输入参数:无
*输出参数:无
*处理的数据:无
*调用的函数:dly8u()
*创建人: DaiWei
*创建时间:2003-8-16 10:51
*修改时间:
*********************************************************************************************************
*/
void f_iic_start(void)
{
/*启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变 */
SCL=0;
dly8u();
SDA=1;
dly8u();
SCL=1;
dly8u();
SDA=0;
dly8u();
SCL=0;
dly8u();
}
/*
*********************************************************************************************************
*名称:void f_iic_stop(void)
*功能:停止iic通信
* 输入参数:无
*输出参数:无
*处理的数据:无
*调用的函数:dly8u();
*创建人: DaiWei
*创建时间:2003-8-16 10:51
*修改时间:
*********************************************************************************************************
*/
void f_iic_stop(void)
{
/*终止I2C总线,当SCL为高电平时使SDA产生一个正跳变*/
SCL=0;
dly8u();
SDA=0;
dly8u();
SCL=1;
dly8u();
SDA=1;
dly8u();
}
/*
*********************************************************************************************************
*名称:void f_check_ack_iic(void)
*功能:校验本次通信
* 输入参数:无
*输出参数:无
*处理的数据:无
*调用的函数:dly8u()
*创建人: DaiWei
*创建时间:2003-8-16 10:51
*修改时间:
*********************************************************************************************************
*/
void f_check_ack_iic(void)
{
/*发送完一个字节后检验设备的应答信号*/
SCL=0;
dly8u();
SDA=1;
dly8u();
SCL=1;
dly8u();
F0=SDA;
SCL=0;
}
/*
*********************************************************************************************************
*名称:void f_sendone_byte(uchar b)
*功能:发送一个字节
* 输入参数:需要发送的数据,一个字节
*输出参数:无
*处理的数据:无
*调用的函数:dly8u()
*创建人: DaiWei
*创建时间:2003-8-16 10:51
*修改时间:
*********************************************************************************************************
*/
void f_sendone_byte(uchar b)
{
uchar i;
dly8u();
for(i=0;i<8;i++)
if((b<<i)&0x80)
{
SDA=1;
dly8u();
dly8u();
SCL=1;
dly8u();
SCL=0;
}
else
{
SDA=0;
dly8u();
dly8u();
SCL=1;
dly8u();
SCL=0;
}
}
/*
*********************************************************************************************************
*名称:void f_sendbytes(void)
*功能:发送一个数据包
* 输入参数:无
*输出参数:无
*处理的数据:sendone,sendtwo,sendthree
*调用的函数: f_iic_start();
f_sendone_byte(0xf0);
f_check_ack_iic();
f_iic_stop();
*创建人: DaiWei
*创建时间:2003-8-16 10:51
*修改时间:
*********************************************************************************************************
*/
void f_sendbytes(void)
{
uchar data i;
uchar data sendbuff[4];
sending_flag=1;
sendbuff[0]=0xf8;
sendbuff[1]=sendtwo;
sendbuff[2]=sendthree;
sendbuff[3]=sendfour;
EA=0;
for(i=0;i<4;i++)
{
f_iic_start();
f_sendone_byte(0xf0);
f_check_ack_iic();
f_sendone_byte(sendbuff[i]);
f_check_ack_iic();
f_iic_stop();
}
EA=1;
return;
}
void f_sendbytes1234(void)
{
uchar data i;
uchar data sendbuff[4];
sendbuff[0]=0xf8;
sendbuff[1]=sendtwo;
sendbuff[2]=sendthree;
sendbuff[3]=sendfour;
EA=0;
for(i=0;i<4;i++)
{
f_iic_start();
f_sendone_byte(0xf0);
f_check_ack_iic();
f_sendone_byte(sendbuff[i]);
f_check_ack_iic();
f_iic_stop();
}
EA=1;
return;
}
os_INT0_isp() interrupt 0
{
// SI=0;
IE0=0;
EA=1;
ET0=1;
TR0=1;
TR1=1;
}
os_INT1_isp() interrupt 2
{
// SI=0;
IE1=0;
EA=1;
ET0=1;
TR0=1;
TR1=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -