AVR 主从通信

该代码展示了如何在ATmega16芯片上使用TWI(I2C)进行主从通信。初始化函数和传输数据的函数如i2c_start、i2c_write_addr、i2c_write_data等被详细定义,包括从机模式和主机模式的操作步骤。
摘要由CSDN通过智能技术生成

/************************************
* 功   能:用TWI主从通信   *
* 建立日期:2008年11月04日         *
* 设 计 者:             *
* 版   本:            *
* 修改日期:2012-9-6          *
* 主控芯片:ATmega16           *
* 时钟频率:外部晶体7.3728MHz     *
* 编 译 器:ICCAVR6.31A           *
************************************/
#include "config.h"
uint8 IIC_transmit[TXNUM];
uint8 IIC_receive [RXNUM];

#if TWI_MOD == 1 //从机模式

void twi_master_init(void)
{
 PORTC |= (1<<SCL)|(1<<SDA);
 DDRC &= ~((1<<SCL)|(1<<SDA));
 TWCR= 0x00;
 TWSR= 0x00; //set prescale
 TWBR= (F_CPU/F_IIC_SCL - 16)>>1;//250; //set bit rate
/*          
                   CPU Clock frequency
 SCL frequency  =  --------------------
                   16 + 2(TWBR) * 4
       */

 TWAR= 0x00; //set slave address
 TWCR= 0x04; //enable twi
}

//总线上起动开始条件
void i2c_start(void)
{
 TWCR= (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
    while (!(TWCR & (1<<TWINT))); //等待START 信号成功发送
}

//把一个字节数据输

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值