Mega8学习笔记(10.2)-------cocoguojia 原创
说明:
在Mega8学习笔记(10.1)里我会用采用CVAVR自带的I2C系统函数写24C02
在Mega8学习笔记(10.2)里我会用像51单片机那样写24C02的方法来写i2c
在Mega8学习笔记(10.3)里我会用avr单片机独特的方式写24C02
以上三种方法均是IO口模拟I2C
以下就是像51单片机那样写24C02的方法来写i2c的程序
现象和(10.1)一样,注释省略
//----------------------------------
//头文件
#i nclude <mega8.h>
#i nclude <delay.h>
//----------------------------------
//----------------------------------
//符号替换声明
#define u8 unsigned char
#define u16 unsigned int
//两线均有 10K的上拉电阻
#define SCL PORTC.4
#define SDA PORTC.5
//----------------------------------
//----------------------------------
//初始化
void init(void) //初始化
{
PORTB=0XFF;
DDRB=0XFF;
SCL=1;
SDA=1;
DDRC=0X30;
}
//----------------------------------
//----------------------------------
void start(void)
{
SCL=1;
delay_us(2);
SDA=0;
delay_us(2);
SCL=0;
delay_us(2);
}
//----------------------------------
//----------------------------------
u8 ack(void)
{
u8 a;
SDA=1;
delay_us(2);
DDRC.5=0;
delay_us(5);
SCL=1;
delay_us(1);
if(PINC.5==0)
{
SCL=0;
delay_us(2);
DDRC.5=1;
delay_us(2);
a=1;
}
else
{
SCL=0;
delay_us(2);
DDRC.5=1;
delay_us(2);
a= 0;
}
return a;
}
//----------------------------------
由于博客文章字数的限制,我将在 Mega8学习笔记(10.2.2)中继续写此文章