新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一個24C讀寫函數,支持檢測器件型號

        一個24C讀寫函數,支持檢測器件型號

        作者: 時間:2016-11-29 來源:網絡 收藏
        這個程序我檢測過24C02,24C16,24C04,24C64,24C32,均未出錯。也沒有毀損器件內部數據的問題。可靠性比較好。在我的編程器中已經使用。此程序write by 萬致遠,在sdcc v3.1.0中無錯誤/warning編譯。死太慘89C52中通過。

        上代碼:

        本文引用地址:http://www.104case.com/article/201611/323429.htm
        /* FILE 24C.CWrite by 萬致遠*/#include #include #include #include #include <24c.h>#define AT24C02_DeviceAdd_W 0xa0	//器件地址(寫)#define AT24C02_DeviceAdd_R 0xa1	//器件地址(讀)#define ADD_TYPE_8	0#define ADD_TYPE_16	1#define AT24C01		0#define AT24C02		1#define AT24C04		2#define AT24C08		3#define AT24C16		4#define AT24C32		5#define AT24C64		6#define AT24C128	7#define AT24C256	8#define AT24C512	9#define AT24C1024	10#define SCAN_ERROR	0xFFULONG __code Length_Chip[11]={0x7f,0xff,0x1ff,0x3ff,0xfff,0x7ff,0x1fff,0x3fff,0x7fff,0xffff,0x1ffff};//各類ROM的容量表~	BYTE __code TEST_DATA[2]={0xAA,0xBB};	//測試數據#define W_DELAY 4   //4 ms DELAY 		//----------------------------------------------//24C操作函數,頁寫。//IIC_ADDR器件地址//Address 16BIT地址//TYPE	地址模式//Data指針//Len長度//本函數不支持翻頁,請自行翻頁,控制IIC_AddrBOOL RW24(BYTE IIC_Addr,UINT Address,BOOL Type,BYTE *Data,BYTE Len){BYTE i=0;//----------------------------選中芯片程序開始-----------I2C_Start();	// 啟動I2C總線I2C_Write8Bit(IIC_Addr & 0xFE);					// 發送器件地址(寫)1111 1110if( I2C_Check_Ack() == 0 )                		// 檢測從機應答{I2C_Stop();return 0;	  }if (Type==ADD_TYPE_8){//8位地址的話I2C_Write8Bit(Address);   				// 發送將要處理的數據的地址,8位}else{//16位地址的話I2C_Write8Bit(((Address & 0xFF00)>>8));			//發送高八位地址if( I2C_Check_Ack() == 0 )                		// 檢測從機應答{I2C_Stop();return 0;	  }I2C_Write8Bit((Address & 0xFF));	//低八位地址發送}if( I2C_Check_Ack() == 0 )                		// 檢測從機應答{I2C_Stop();return 0;	  }//---------------------------------結束-------------------if((IIC_Addr & 0x01)==1){//是讀操作*Data=0xFF;									//FF=NULLI2C_Start();				         		// 再次啟動IIC總線I2C_Write8Bit(IIC_Addr);					//發送讀出地址if( I2C_Check_Ack() == 0 )                // 檢測從機應答{I2C_Stop();return 0;	  }*Data = I2C_Read8Bit();		         	   // 讀取第一個數據Data++;for(i=1;i
        				
                    
                        
        			
        							
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 北海市| 新建县| 罗甸县| 枣阳市| 汝州市| 郸城县| 元朗区| 临清市| 沙湾县| 双辽市| 陆丰市| 永善县| 乐清市| 光泽县| 临邑县| 泾源县| 娱乐| 安泽县| 黄骅市| 安国市| 新平| 康马县| 客服| 阜康市| 元阳县| 大方县| 信阳市| 上饶县| 苏州市| 苏尼特左旗| 西丰县| 尼勒克县| 东辽县| 渝北区| 陕西省| 繁昌县| 安顺市| 林芝县| 故城县| 额济纳旗| 贺州市|