?? iic.c
字號:
#include "def.h"
#include "iic.h"
#include "2440addr.h"
#include "uart.h"
extern Delay(unsigned int time);
void Test_Iic2(void)
{
unsigned int i,j;
static int data[256];
iic_init();
Uart_Printf("write\n");
for(i=0;i<256;i++)
Wr24C080(0xa0,i,255-i);//初始化data數組的值為0。
for(i=0;i<256;i++)
data[i] = 0;
Uart_Printf("read\n");
//讀24C02的0xa0地址中數據到data數組中。
for(i=0;i<256;i++)
Rd24C080(0xa0,i,&(data[i]));
//輸出data數組接收數據的值
for(i=0;i<16;i++)
{
for(j=0;j<16;j++)
Uart_Printf("%2x ",data[i*16+j]);
Uart_Printf("\n");
}
}
void iic_init(void)
{
// rGPEUP &= ~((3<<28)|(3<<30));
// rGPEUP |= ((0x3<<14));
rGPECON &= ~((unsigned int)0xf<<28);
rGPECON |= ((unsigned int)0xa<<28);
rIICCON = 0xaf;
rIICSTAT = 0x10;
rIICADD = 0x10;
}
void Wr24C080(int slvAddr,int addr,int data)
{
rIICDS = slvAddr;
rIICSTAT = 0xf0;
while(!(rIICCON&0x10));
Delay(100);
rIICDS = addr;
rIICCON &= ~(1<<4);
while(!(rIICCON&0x10));
Delay(100);
rIICDS = data;
rIICCON &= ~(1<<4);
while(!(rIICCON&0x10));
Delay(100);
rIICSTAT = 0xd0;
rIICCON &= ~(1<<4);
Delay(10000);
}
//************************[ _Rd24C080 ]********************************
void Rd24C080(int slvAddr,int addr,int *data)
{
rIICDS = slvAddr;
rIICSTAT = 0xf0;
while(!(rIICCON&0x10));
Delay(100);
rIICDS = addr;
rIICCON &= ~(1<<4);
while(!(rIICCON&0x10));
Delay(100);
rIICDS = slvAddr;
rIICSTAT = 0xb0;
rIICCON &= ~(1<<4);
while(!(rIICCON&0x10));
rIICCON &= ~(1<<4);
Delay(1000000);
while(!(rIICCON&0x10));
*data = rIICDS;
Delay(100);
rIICCON &= ~(1<<7);
rIICSTAT = 0x90;
rIICCON &= ~(1<<4);
Delay(10000);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -