twi.c
来自「mega128+时实时钟日期芯片ds1307的例子」· C语言 代码 · 共 61 行
C
61 行
//-----------------------------------------------------------
//程序由AVR辅助开发工具V2.0.0自动生成
//MCU系统的处理器为: ATMega16
//MCU系统的晶振频率: 8.0000 Mhz
//-----------------------------------------------------------
#include <iom128v.h>
#include "delay.h"
#include "twi.h"
//-----------------------------------------------------------
//TWI初始化子程序
//-----------------------------------------------------------
void TWI_Init(void)
{
TWCR= 0x00; //disable twi
TWBR= 0x49; //set bit rate
TWSR= 0x03; //set prescale
TWAR= 0xFE; //set slave address
}
//总线上起动停止条件
void twi_stop(void)
{
TWI_Stop();
}
//总线上起动开始条件
unsigned char twi_start(void)
{
TWI_Start();
TWI_Wait();
return TW_STATUS;
}
//写一字节
unsigned char twi_writebyte(unsigned char c)
{
TWDR = c;
delay_nms(10);
TWCR = (1 << (TWINT)) | (1 << (TWEN));
TWI_Wait();
delay_nms(10);
return TW_STATUS;
}
//读一字节 ack: true时发ACK,false时发NACK
unsigned char twi_readbyte(unsigned char *c ,unsigned char ack)
{
unsigned char tmp=(1 << (TWINT)) | (1 << (TWEN));
if(ack)
tmp|=(1 << (TWEA));
TWCR=tmp;
delay_nms(10);
TWI_Wait();
delay_nms(10);
*c=TWDR;
return TW_STATUS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?