数据载入中...  
数据载入中...
时 间 记 忆
数据载入中...
最 新 评 论
数据载入中...
专 题 分 类
数据载入中...
最 新 日 志
数据载入中...
最 新 留 言
数据载入中...
搜 索
用 户 登 录
数据载入中...
友 情 连 接
博 客 信 息
数据载入中...


 
Mega8学习笔记(10.2.1)-------cocoguojia 原创 
[ 2008-6-12 11:00:00 | By: 嘉哥 ]
 

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)中继续写此文章

 
  • 标签:mega8 i2c cvavr 程序 
  • 发表评论:
    数据载入中...
    Powered by McuBLog.