60ca6ed7394c001a1fc19f0d7ed4936c
来自「利用带有I2C总线接口的日历时钟芯片DS1337」· 代码 · 共 86 行
TXT
86 行
#include "system.h"
#include "altera_avalon_pio_regs.h"
#define uchar unsigned char
uchar receivedata;
void shortdelay()
{
int i;
for(i=0;i<30;i++);
}
void longdelay(int m)
{
int i;
for(i=0;i<m;i++);
}
void initial7289()
{
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CS_BASE, 0X01);
}
//??????j?8??8?????16??16???
void send(unsigned int senddata,uchar j)
{
uchar i;
uchar sendlast;
IOWR_ALTERA_AVALON_PIO_DIRECTION(A7289_DIO_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CS_BASE, 0X00);//?????a7289_dio???
longdelay(80);// T1 75us
if(j==8)
for(i=0;i<8;i++)
{
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X00);
shortdelay();
if(senddata&0x80)
IOWR_ALTERA_AVALON_PIO_DATA(A7289_DIO_BASE, 0X01);
else
IOWR_ALTERA_AVALON_PIO_DATA(A7289_DIO_BASE, 0X00);
senddata=senddata<<1;
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X01);
shortdelay();
}
if(j==16)
for(i=0;i<16;i++)
{
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X00);
shortdelay();
if(senddata&0x8000)
IOWR_ALTERA_AVALON_PIO_DATA(A7289_DIO_BASE, 0X01);
else
IOWR_ALTERA_AVALON_PIO_DATA(A7289_DIO_BASE, 0X00);
senddata=senddata<<1;
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X01);
shortdelay();
}
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X00);
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CS_BASE, 0X01);
}
uchar receive()
{
uchar i,j,rebuf=0;
IOWR_ALTERA_AVALON_PIO_DIRECTION(A7289_DIO_BASE, 0X00);//?????a7289_dio???
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CS_BASE, 0X00);
longdelay(80);// T1 75us
for(i=0;i<8;i++)//??????
{
rebuf<<=1;
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X00);
shortdelay();
rebuf|= IORD_ALTERA_AVALON_PIO_DATA(A7289_DIO_BASE);
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X01);
shortdelay();
}
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CS_BASE, 0X01);
IOWR_ALTERA_AVALON_PIO_DATA(A7289_CLK_BASE, 0X00);
return rebuf;//??????
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?