📄 24lc1025.c
字号:
/*==============================================================================
文件(模块)名:24lc1025.c
日期: 2008年3月14日
公司(作者): 西安澳润公司
描述和说明: 24lc1025读写总线通信程序
===============================================================================*/
#include "F2407REGS_c.h"
#define H_SDA PCDATDIR = PCDATDIR | 0x0001; //IOPC0:H_SDA;
/* 0000,0000,0000,0001 =0x0001
0~~~ ~~~~ ~~~~ ~~~~ [C7DIR] 0:input; 1:output
~0~~ ~~~~ ~~~~ ~~~~ [C6DIR] 0:input; 1:output
~~0~ ~~~~ ~~~~ ~~~~ [C5DIR] 0:input; 1:output
~~~0 ~~~~ ~~~~ ~~~~ [C4DIR] 0:input; 1:output
~~~~ 0~~~ ~~~~ ~~~~ [C3DIR] 0:input; 1:output
~~~~ ~0~~ ~~~~ ~~~~ [C2DIR] 0:input; 1:output
~~~~ ~~0~ ~~~~ ~~~~ [C1DIR] 0:input; 1:output
~~~~ ~~~0 ~~~~ ~~~~ [C0DIR] 0:input; 1:output
~~~~ ~~~~ 0~~~ ~~~~ [IOPC7] 0:low; 1:high
~~~~ ~~~~ ~0~~ ~~~~ [IOPC6] 0:low; 1:high
~~~~ ~~~~ ~~0~ ~~~~ [IOPC5] 0:low; 1:high
~~~~ ~~~~ ~~~0 ~~~~ [IOPC4] 0:low; 1:high
~~~~ ~~~~ ~~~~ 0~~~ [IOPC3] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~0~~ [IOPC2] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~~0~ [IOPC1] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~~~1 [IOPC0] 0:low; 1:high
*/
#define L_SDA PCDATDIR = PCDATDIR & 0xFFFE; //L_SDA;
#define H_SCL PCDATDIR = PCDATDIR | 0x0008; //IOPC3:H_SCL;
/* 0000,0000,0000,1000 =0x0008
0~~~ ~~~~ ~~~~ ~~~~ [C7DIR] 0:input; 1:output
~0~~ ~~~~ ~~~~ ~~~~ [C6DIR] 0:input; 1:output
~~0~ ~~~~ ~~~~ ~~~~ [C5DIR] 0:input; 1:output
~~~0 ~~~~ ~~~~ ~~~~ [C4DIR] 0:input; 1:output
~~~~ 0~~~ ~~~~ ~~~~ [C3DIR] 0:input; 1:output
~~~~ ~0~~ ~~~~ ~~~~ [C2DIR] 0:input; 1:output
~~~~ ~~0~ ~~~~ ~~~~ [C1DIR] 0:input; 1:output
~~~~ ~~~0 ~~~~ ~~~~ [C0DIR] 0:input; 1:output
~~~~ ~~~~ 0~~~ ~~~~ [IOPC7] 0:low; 1:high
~~~~ ~~~~ ~0~~ ~~~~ [IOPC6] 0:low; 1:high
~~~~ ~~~~ ~~0~ ~~~~ [IOPC5] 0:low; 1:high
~~~~ ~~~~ ~~~0 ~~~~ [IOPC4] 0:low; 1:high
~~~~ ~~~~ ~~~~ 1~~~ [IOPC3] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~0~~ [IOPC2] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~~0~ [IOPC1] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~~~0 [IOPC0] 0:low; 1:high
*/
#define L_SCL PCDATDIR = PCDATDIR & 0xFFF7; //IOPC3:L_SCL;
/*
#define Nop() asm(" nop");asm(" nop"); asm(" nop");
asm(" nop");asm(" nop"); */
unsigned int ack;
/*************************************************************************
函数名称: void Nop()
函数功能:
入口参数:
出口参数:
描述和说明:
*************************************************************************/
void Nop()
{
asm(" nop"); //
asm(" nop"); //
asm(" nop"); //
asm(" nop"); //
asm(" nop"); //
}
/******************************************************************************
函数名称:void InitIOPort_24LC1025
函数功能:初始化IIC总线I/O口,针对24LC1025,
IOPC0、IOPC1、IOPC2、IOPC3、IOPC4、IOPC5设为IO口
入口参数:无
出口参数:无
******************************************************************************/
void InitIOPort_24LC1025()
{
MCRB = MCRB & 0xFFC0; //将IOPC0....IOPC5配置为普通I/O
/* 1111,1111,1100,0000 =0xFFC0
1:primary function 0:I/O function
1~~~ ~~~~ ~~~~ ~~~~ [MCRB.15]1:TMS2; 0:Reserved
~1~~ ~~~~ ~~~~ ~~~~ [MCRB.14]1:TMS; 0:Reserved
~~1~ ~~~~ ~~~~ ~~~~ [MCRB.13]1:TDO; 0:Reserved
~~~1 ~~~~ ~~~~ ~~~~ [MCRB.12]1:TDI; 0:Reserved
~~~~ 1~~~ ~~~~ ~~~~ [MCRB.11]1:TCK; 0:Reserved
~~~~ ~1~~ ~~~~ ~~~~ [MCRB.10]1:EMU1; 0:Reserved
~~~~ ~~1~ ~~~~ ~~~~ [MCRB.9] 1:EMU0; 0:Reserved
~~~~ ~~~1 ~~~~ ~~~~ [MCRB.8] 1:XINT2/ADCSOC; 0:IOPD0
~~~~ ~~~~ 1~~~ ~~~~ [MCRB.7] 1:CANRX; 0:IOPC7
~~~~ ~~~~ ~1~~ ~~~~ [MCRB.6] 1:CANTX; 0:IOPC6
~~~~ ~~~~ ~~0~ ~~~~ [MCRB.5] 1:SPISTE; 0:IOPC5
~~~~ ~~~~ ~~~0 ~~~~ [MCRB.4] 1:SPICLK; 0:IOPC4
~~~~ ~~~~ ~~~~ 0~~~ [MCRB.3] 1:SPISOMI; 0:IOPC3
~~~~ ~~~~ ~~~~ ~0~~ [MCRB.2] 1:SPISIMO; 0:IOPC2
~~~~ ~~~~ ~~~~ ~~0~ [MCRB.1] 1:BIO; 0:IOPC1
~~~~ ~~~~ ~~~~ ~~~0 [MCRB.0] 1:W/R; 0:IOPC0
*/
PCDATDIR = PCDATDIR | 0x3E36; // IOPC1,IOPC2,IOPC3,IOPC4,IOPC5为输出
// WP1,WP2,SCL,WP3,WP4设置为输出
// WP1,WP2,WP3,WP4全禁止写
/* 0011,1110,0011,0110 =0x3E36
0~~~ ~~~~ ~~~~ ~~~~ [C7DIR] 0:input; 1:output
~0~~ ~~~~ ~~~~ ~~~~ [C6DIR] 0:input; 1:output
~~1~ ~~~~ ~~~~ ~~~~ [C5DIR] 0:input; 1:output
~~~1 ~~~~ ~~~~ ~~~~ [C4DIR] 0:input; 1:output
~~~~ 1~~~ ~~~~ ~~~~ [C3DIR] 0:input; 1:output
~~~~ ~1~~ ~~~~ ~~~~ [C2DIR] 0:input; 1:output
~~~~ ~~1~ ~~~~ ~~~~ [C1DIR] 0:input; 1:output
~~~~ ~~~0 ~~~~ ~~~~ [C0DIR] 0:input; 1:output
~~~~ ~~~~ 0~~~ ~~~~ [IOPC7] 0:low; 1:high
~~~~ ~~~~ ~0~~ ~~~~ [IOPC6] 0:low; 1:high
~~~~ ~~~~ ~~1~ ~~~~ [IOPC5] 0:low; 1:high
~~~~ ~~~~ ~~~1 ~~~~ [IOPC4] 0:low; 1:high
~~~~ ~~~~ ~~~~ 0~~~ [IOPC3] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~1~~ [IOPC2] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~~1~ [IOPC1] 0:low; 1:high
~~~~ ~~~~ ~~~~ ~~~0 [IOPC0] 0:low; 1:high
*/
}
Delay()
{
unsigned int i;
for(i=0;i<15000;i++);
//for(i=0;i<15000;i++);
}
/*******************************************************************
起动总线函数
函数原型: void Start_I2c_24lc1025();
功能: 启动I2C总线,即发送I2C起始条件.
********************************************************************/
void Start_I2c_24lc1025()
{
PCDATDIR = PCDATDIR | 0x0100; // IOPC0为输出,SDA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -