📄 d087a5ed564b001a1a4895c049d8d0ac
字号:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#define uchar unsigned char
void delay(int n)
{
int i;
for(i=0;i<n;i++);
}
void i2c_start()
{
IOWR_ALTERA_AVALON_PIO_DIRECTION(I2C_DIO_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE, 0X00);
}
void i2c_stop()
{
IOWR_ALTERA_AVALON_PIO_DIRECTION(I2C_DIO_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE, 0X00);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE, 0X01);
}
void i2c_ack()
{
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X00);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE, 0X00);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X01);
delay(1);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X00);
}
void shift8(unsigned char a)//???
{
unsigned char i;
for(i=0;i<8;i++)
{
delay(1);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X00);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE, a>>7);
a=a<<1;
delay(1);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X01);
}
i2c_ack();
}
unsigned char recieve8(void)
{ unsigned char d,i;
IOWR_ALTERA_AVALON_PIO_DIRECTION(I2C_DIO_BASE, 0X00);
for (i = 1; i <= 8; i++)
{
delay(1);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X00);
delay(1);
IOWR_ALTERA_AVALON_PIO_DATA(I2C_CLK_BASE, 0X01);
d = d << 1;
d |=IORD_ALTERA_AVALON_PIO_DATA(I2C_DIO_BASE);
}
IOWR_ALTERA_AVALON_PIO_DIRECTION(I2C_DIO_BASE, 0X01);
return d;
}
void ds1337_setradom(uchar addr,uchar data)//?????a???
{
i2c_start();
shift8(0xd0);
shift8(addr);
shift8(data);
i2c_stop();
}
//?????a????b???
void ds1337_initial()
{
IOWR_ALTERA_AVALON_PIO_DIRECTION(I2C_DIO_BASE, 0X01);
}
unsigned char ds1337_getradom(unsigned addr)
{ int data;
i2c_start();
shift8(0xd0);
shift8(addr);
i2c_stop();
i2c_start();
shift8(0xd1);
data=recieve8();
i2c_stop();
return data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -