⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24lc1025.c

📁 本程序是读写E2ROM24LC1025的程序
💻 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 + -