如何使用单片机模拟读写24C01EEPROM数据
eeprom读写程序详解
eeprom读写程序详解
EEPROM(Electrically Erasable Programmable Read-Only Memory) 是一种可编程只读存储器,可以在电信号的作用下进行擦写和改写。它通常用于存储单片机或其他嵌入式系统中的数据、设置参数、配置文件等。
对于 EEPROM 的读写程序,需要考虑以下几个方面:
1. 读操作:
读操作通常包括以下步骤:
- 等待上次读操作完成。
- 获取要读取的数据的单元地址。
- 将 EEPGD 位和 CFGS 位清零。
- 启动读操作控制位 RD。
- 等待本次读操作完成。
- 将该单元地址中对应的数据返回。
在读取 EEPROM 数据时,为了避免芯片在一瞬间无法获取到数据,需要给芯片一定的时间来稳定获取数据。因此,在读取操作中需要加入等待步骤。
2. 写操作:
写操作通常包括以下步骤:
- 等待上次写操作完成。
- 获取要写的数据的单元地址。
- 将要写的数据写入 EEPROM 的单元中。
- 将 EEPGD 位和 CFGS 位清零。
- 启动写操作控制位 WP。
- 等待写操作完成。
在写操作中,为了确保数据的可靠性,需要将要写的数据写入EEPROM 的单元中,并等待写操作完成。同时,在写操作过程中,需要注意避免对无关的单元进行写操作,以免损坏 EEPROM 芯片。
3. 中断处理:
在 EEPROM 的读写操作中,通常需要加入中断处理机制,以便在读写过程中及时响应和处理异常情况。例如,在读取 EEPROM 数据时,如果 EEPROM 芯片出现故障,可能会导致读取失败。为了避免这种情况,可以在读取操作中加入中断处理机制,在读取失败时及时报警或采取相应的应对措施。
C51编写的AT24C02详细的读写程序
C51_AT24C02读写程序:
/*
void start() //开始信号
void stop() //停止信号
void Ack() //发确认信号
void NoAck() //发无确认信号
void init()//初始化信号,拉高SDA和SCL两条总线
bit write_byte(uchar date)//写一字节,将date 写入AT24C02 中
uchar read_byte()//读一字节,从AT24C02 中读一字节
bit busy() //应答查询,stop()后,启动A T24C02内部写周期,启动查询
//初始化EEPROM子程序内容为0XFF,nPage(0~31)
void Init_Flash(uchar nPage) //8 bytes/1 page init 0xFF
void write_add(uchar address,uchar date)//向AT24C02 中写数据
//从AT24C02中给定的地址nAddr起,将存放在以指针nContent开头的存储空间中的nLen 个字节数据,连续写入AT24C02
void write_flash(uchar *nContent,uchar nAddr, uchar nLen)
uchar read_add(uchar address)//从AT24C02 中读出数据
//从AT24C02中给定的地址nAddr起,读取nLen个字节数据存放在以指针nContent开头的
存储空间。
void read_flash(uchar *nContent,uchar nAddr, uchar nLen)
51单片机读写内部EEPROM详解
#endif
/**********************************
PIN口定义
**********************************
#define LCD1602_DATAPINS P0
sbit LCD1602_E二P 2八7;
xcx(0x2002,6);//对EEPROM区2002h写入6
*/
/*
函数:擦除某一扇区(每个扇区512字节)
入口:addr=某一扇区首地址
*/
void cc(uint addr)
//打开IAP功能(ISP_CONTR.7)=允许编程改变Flash设置Flash操作等待时 间
//0x83(晶振v5M)0x82(晶振v10M)0x81(晶振v20M)0x80(晶振<40M)
cwk.baidu.com(0x2000);//擦除第1个扇区(2000h~21FFh
xcx(0x2002,2);//对EEPROM区2002h写入2
if(!K2)
while(!K2);
LED1=0;LED2=0;
cc(0x2000);//擦除第1个扇区(2000h~21FFh
xcx(0x2002,6);//对EEPROM区2002h写入6
sbit K2= P3八3;//按钮2
EEPROM---AT24Cxx应用介绍
EEPROM---AT24Cxx应⽤介绍
结论:1、读写AT24CXX芯⽚,根据容量有多种⽅式:⼀、容量为AT24C01~AT24C16,⾸先发送设备地址(8位地址),再发送数据地址(8位地址),再发送或者接受数据。
⼆、AT24C32/AT24C64~AT24C512,⾸先发送设备地址(8位地址),再发送⾼位数据地址,再发送地位数据地址,再发送或者接受数据。
三、容量AT24C1024的芯⽚,是把容量⼀和容量⼆的⽅法结合,设备地址中要⽤⼀位作为数据地址位,存储地址长度是17位。
2、它的设备地址根据容量不同有区别:
1)、AT24C01~AT24C16:这⼀类⼜分为两类,分别为AT24C01/AT24C02和AT24C04~AT24C16;他们的设备地址为⾼7位,低1位⽤来作为读写标⽰位,1为读,0为写。
*1*、AT24C01/AT24C02。AT24C01/AT24C02的A0、A1、A2引脚作为7位设备地址的低三位,⾼4为固定为1010B,低三位A0、A1、A2确定了AT24CXX的设备地址,所以⼀根I2C线上最⼤可以接8个AT24CXX,地址为1010000B~1010111B。
*2*、AT24C04~AT24C16的 A0、A1、A2只使⽤⼀部分,不⽤的悬空或者接地(数据⼿册中写的是悬空不接)。举例:AT24C04只⽤A2、A1引脚作为设备地址,另外⼀位A0不⽤悬空,发送地址中对应的这位(A0)⽤来写⼊页寻址的页⾯号,⼀根I2C线上最⼤可以接4个,地址为101000xB~101011xB
经典的24C01--24C256读写操作程序
#pragma ot(6 SIZE)#include #include #define ERRORCOUNT 10sbit SDA=P0^0;sbit SCL=P0^1;enum eepromtype {M2401 M2402 M2404 M2408 M2416 M2432 M2464 M24128 M24256};enum eepromtype EepromType;//DataBuff为读写数据输入/输出缓冲区的首址//ByteQuantity 为要读写数据的字节数量//Address 为EEPROM的片内地址//ControlByte 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W) 其中R/W=1 //表示读操作 R/W=0为写操作 A2 A1 A0为EEPROM的页选或片选地址;//EepromType为枚举变量 需为M2401至M24256中的一种 分别对应24C01至24C256;//函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;//ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1//SDA和SCL由用户自定义,这里暂定义为P0^0和P0^1;//其余的用户不用管,只要把只子程序放在你的程序中并调用它就可以了;/***********************************************************************************/bit RW24XX(unsigned char *DataBuff unsigned char ByteQuantity unsigned int Address unsigned char ControlByte enum eepromtype EepromType){void Delay(unsigned char DelayCount);void IICStart(void);void IICStop(void);bit IICRecAck(void);void IICNoAck(void);void IICAck(void);unsigned char IICReceiveByte(void);void IICSendByte(unsigned char sendbyte);unsigned char data j i=ERRORCOUNT;bit errorflag=1;while(i--){IICStart();IICSendByte(ControlByte&0xfe);if(IICRecAck())continue;if(EepromType>M2416){IICSendByte((unsigned char)(Address>>8));if(IICRecAck())continue;}IICSendByte((unsigned char)Address);if(IICRecAck())continue;if(!(ControlByte&0x01)){j=ByteQuantity;errorflag=0; //********clr errorflagwhile(j--){IICSendByte(*DataBuff++);if(!IICRecAck())continue;errorflag=1;break;}if(errorflag==1)continue;break;}else{IICStart();IICSendByte(ControlByte);if(IICRecAck())continue;while(--ByteQuantity){*DataBuff++=IICReceiveByte();IICAck();}*DataBuff=IICReceiveByte(); //read last byte dataIICNoAck();errorflag=0;break;}}IICStop();if(!(ControlByte&0x01)){Delay(255);Delay(255);Delay(255);Delay(255);}return(errorflag);}/*****************以下是对IIC总线的操作子程序***//*****************启动总线**********************/void IICStart(void){SCL=0; //SDA=1;SCL=1;_nop_();_nop_();_nop_();SDA=0;_nop_();_nop_();_nop_();_nop_();SCL=0;SDA=1; //}/*********
24C系列串行EEPROM与单片机的接口设计及应用
型号多 , 以及工作电压允许范围宽 、 容量扩展配置
Ab t a t sr c :
I1 c a a t r t s f c mmo 2 C 2 wi s r l EP 0M ae nr d c d T e 1e h r c e s c o o i i n 4 - r e i E R e a r i t u e . h o
i e ae e os e ens a E P O 2 C 4 n T 95 i lci M c cm u r i i n rc t d t e r l E R M(4 6 )adA 8¥ s g p ioo pt t n tf m h b w e i 1 ne h r e wh
E PO , E R M) 其内容可由软件进行随机读写以实现 数据的更新 , 并可在芯片断电的情况下长期保存
片内信息 , 兼备了 R M 和 R M 的基本特点. A O 串行 E P O 使 用 内 部 集 成 电 路 (n r ER M Ie t
收稿 日期 :2 1 0 3 0 0— 6— 0
要 :介 绍了常用 的 2 C系列 串行 E P O 4 E R M所具备 的特点 , 出 了在 随机语 音录制 系统 中串行 E P O 给 E R M
(4 6 ) 2 C 4 与单 片 机 A 8 ¥ 1的接 口方 法 , 重 分 析 了 如 何 根 据 IC总 线 所 要 求 的操 作 时 序 应 用 串 行 T95 着 2 E P O 以单字节读 写操作为例 , E R M. 实现了单片机对 串行 E P O 的读写操作. ERM
STM32 读写 EEPROM 24C02方法
number--;
//Read a byte from the EEPROM *s = I2C_ReceiveData(I2Cx);
printf("\r\n The I2C1 has received data %x \r\n", *s); s++;
int main(void) {
RCC_Configuration(); GPIO_Configuration();
USART_Configuration(); I2C_Configuration(); NVIC_Configuration();
I2C1_Buffer_Tx[0] = 0x44; I2C1_Buffer_Tx[1] = 0x55;
//Test on EV7 and clear it while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_RECEIVED));
//In the case of a single data transfer disable ACK before reading the data I2C_AcknowledgeConfig(I2Cx, DISABLE);
注意事项: 1.USART1:PA9 为 TX,PA10 为 RX I2C1:PB6 为 SCL,PB7 为 SDA I2C2:PB10 为 SCL,PB11 为 SDA
24C64EEPROM的读写的C语言程序.
d = d << 1;
}
Delay_10_uS(;
I2C_SDA = 1;
Delay_10_uS(;
I2C_SCK = 1;
Delay_10_uS(;
bit_ack = I2C_SDA;
I2C_SCK =0;
Delay_10_uS(;
return bit_ack;
}
uchar I2C_Receive_Byte(void
I2C_Send_Byte( AT24C64_address %256 ;
I2C_Send_Byte( *(uchar*mcu_address ;
I2C_Stop(;
Delay_N_mS(10; /* waiting for write cycle to be completed */
((uchar*mcu_address++;
*(uchar*mcu_address = I2C_Receive_Byte(;
I2C_Nack(;
I2C_Stop(;
((uchar*mcu_address++;
AT24C64_address++;
}
}
return 1;
}
void I2C_Stop(void
{
Delay_10_uS(;
K24C系列EEPROM烧写操作流程
K24C系列EEPROM烧写操作流程
一:烧录器型号
适用于K24C系列EEPROM的烧录器有:周立功EasyPro系列,SmartPro系列、LPC Pro 等
二:烧写步骤
1)确认烧录器、软件版本支持烧录该型号之组件。
2)将烧录器与电脑连接,并上电。
3)将EEPROM装入烧录器的插座中(注意方向)。
4)鼠标双击桌面上的快捷图标SmartPRO Programmer, 见下图
5)弹出下图对话框,选择烧录器的型号,并点击OK。若无需选择直接跳过这一步。
6)选择好型号后,您可以看到以下界面。
7)“芯片”菜单,点击“选择芯片”,或在快捷工具栏中点击“选择”。见下图
参见下图红色标记处。
9)打开“选项”菜单,点击“系统设置”,或点击快捷工具栏内的“设置”,参见下图
10)在设置对话框内选中所需设置,点击“确定”。
11)点击“编辑”菜单,选择“编辑缓冲区”或“填充缓冲区”,或点击“打开”菜单其中:“编辑缓冲区”您可以进行所有字节编辑,填写您所需数据。光标停留处可
以通过键盘输入。
“填充缓冲区”您可以对所有字节进行编辑,但填充的数据是单一的。
当然您可以通过“打开”文件菜单,导入您所需要的hex文件。
12)若您对每个芯片设置不同的ID,可以点击“芯片”菜单,选择“芯片编号”
13)在“芯片编号”对话框中填写您要设定的不同ID的地址段,变化量(自增步长),初始值,自增方式。例如,我要求每个芯片除了00000040h---00000045h的数据不同,其余地址数据都相同,那么在“自增首址”中填入00000040h,“自增末址”中填入00000045h,自增步长为“1”,初始文件为“00”。既第一个芯片的00000040h
IIC总线24C02读写
实验说明:
T24C01A/AT24C02为I2C总线型EEPROM存储器,容量为1K/2K位(128/256*8),前读/写时序遵循I2C总线协议
标准。A T24C01A/A T24C02内部设有一个控制寄存器,其每一位的含义如下:
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 A
2 A1 A0 R/W
其中A2/A1/A0用于选择总线上待访问的I2C器件,R/W=1读操作,R/W=0写操作;从上述时序可以看出,I2C总线上最多可以扩展23=8片同样的1K/2K容量EEPROM存储器或者可以扩展1片容量为16K Bits的EEPROM存储器。如果扩展8片2K以内容量的EEPROM 存储器,每片存储器将对应一个地址,这个由于实验仪上的A T24C01A/AT24C02的A2/A1/A0引脚全部接地,等效为实验仪上的AT24C01A/AT24C02的地址为0,所以在实验中读写控制字分别为:0xa1/0xa0
实验要求
利用实验仪上的I2C总线器件AT24C01A/AT24C02,编写I2C总线读写程序并自行验证程序的正确性。
c语言:
/* 实验四十二IIC总线24C02读写*/
/* C51 */
#include
#include
/* **********************************************************
24C01/02 为IIC总线EEPROM存储器, 容量为1k位(128 * 8)
************************************************************/
AT24C32 AT24C56读写程序
转载一个AT24C01~AT24C256读写通用程序(只做了少许改动),附件里面有关于AT24系列读写资料!希望对大家有所帮助,共同进步!/* 以下为AT24C01~AT24C256的读写程序,各人可根据自己的需要应用。在buf1中填入需要写入的内容,buf2的大小可根据需要定义。addr可根据使用的芯片选择,可从任何位置读写,只要在该芯片的范围内。enumer=ATxxx,根据使用的芯片赋值。各函数中的形式参数不需改变。本程序只要在调用的程序中定义实际参数即可,下述各子程序不必改动。*/#include <reg52.h>#include <intrins.h>#define ERROR 10 //允许ERROR的最大次数 sbit SDA=P3^0;sbit SCL=P3^1;enum eepromtype {AT2401,AT2402,AT2404,AT2408,AT2416,AT2432,AT2464,AT24128,AT24256};/*器件的型号*/enum eepromtype enumer; //定义一个枚举变量unsigned char code buf1 []={1,3,5,7,9,10,11,12,13,15}; /* 发送缓冲区 */unsigned char buf2 [10]; /* 接收缓冲区 *//* 一个通用的24C01-24C256共9种EEPROM的字节读写操作程序,此程序有五个入口条件,分别为读写数据缓冲区指针,进行读写的字节数,EEPROM首址,EEPROM控制字节,以及EEPROM类型。此程序结构性良好,具有极好的容错性,程序机器码也不多:DataBuff为读写数据输入/输出缓冲区的首址Length 为要读写数据的字节数量Addr 为EEPROM的片内地址 AT24256为0~32767Control 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,表示读操作,R/W=0为写操作,A2,A1,A0为EEPROM的页选或片选地址;enumer为枚举变量,需为AT2401至AT24256中的一种,分别对应AT24C01至AT24C256;函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;ERROR为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1SDA和SCL由用户自定义,这里暂定义为P3^0和P3^1; *//*对于1K位,2K位,4K位,8K位,16K位芯片采用一个8位长的字节地址码,对于32K位以上的采用2个8位长的字节地址码直接寻址,而4K位,8K位,16K位配合页面地址来寻址*//* ----- AT24C01~AT24C256 的读写程序 ------ */bit RW24xx(unsigned char *DataBuff,unsigned char Length,unsigned int Addr,unsigned char Control,enum eepromtype enumer){ void Delay(unsigned char DelayCount); /* 延时 */void Start(void); /* 启动总线 */void Stop(void); /* 停止IIC总线 */bit RecAck(void); /* 检查应答位 */void NoAck(void); /* 不对IIC总线产生应答 */void Ack(void); /* 对IIC总线产生应答 */unsigned char Receive(void); /* 从IIC总线上读数据子程序 */void Send(unsigned char sendbyte); /* 向IIC总线写数据 */unsign
24c01存储器读写代码
** 入口参数:无
** 出口参数:无
**************************************************************************/ void iic_init(void)
{
PINSEL0 |= (PINSEL0 & (~0xF0)) | 0xa <<20;
I22SCLH = (11059200/400000 + 1) / 2; /* 设定I2C2时钟
*/
I22SCLL = (11059200/400000)/2;
I22CONCLR = 0x6c ;
I22CONSET = 0x40 ;
/*I2C2中断开启控制*/
VICIntSelect = 0x00000000; /* 设置所有通道为IRQ中断*/
VICVectPriority30 = 5 ; /* I2C2通道分配到IRQ slot0,最高优先级*/
VICVectAddr30 = (uint)IRQ_I2C2; /* 设置I2C2中断向量
*/
VICIntEnable = (1 << 30); /* 使能I2C2中断
*/
}
/**************************************************************************
** 函数名次:延时程序。
** 入口参数:延时时间。
** 出口参数:无
**************************************************************************/ void DelayNS (int32 dly)
STM32作为主机I2C,读写24C02EEPROM
STM32作为主机I2C,读写24C02EEPROM
1、时钟和数据的传输:开始和停止条件,数据在SCL的高电平期间有效,在SCL的低电平期间改变。
2、开始条件:在SCL高电平期间,SDA产生一个下降沿
3、停止条件:在SCL高电平期间,SDA产生一个上升沿
4、应答:成功接收到数据(地址和数据),产生一个应答位(在第9个时钟周期,将SDA拉低)
下面是源程序:原理上说,下面程序再移植时,只要将数据类型变化,可以应用到任何处理器
AT24c02.h
#ifndef __24CXX_H
#define __24CXX_H
#include "i2c.h"
/************************************************************** *
- 说明:以下参数是AT24Cxx的寻址空间,C0x ,X 表示XK 如C01表示1K
- 127表示2^7 1Kbit/8=128Byte 128字节
- 255表示2^8 2Kbit/8=256Byte 256字节
- 512表示2^9 4Kbit/8=512Byte 512字节
-
*************************************************************** /
#define AT24C01 127
#define AT24C02 255
#define AT24C04 511
#define AT24C08 1023
#define AT24C16 2047
#define AT24C32 4095
STM32F0单片机用 I2C HAL 库读写24C02
STM32F0单片机快速入门九: 用I2C HAL 库读写24C02
发表评论
1.24C02介绍
24C02 现在基本是开发板的标配,对于需要掉电存储的应用来说确是不二选择。现在单片机因为内部集成了Flash存储器,一般也都支持数据的掉电保存,但相对于24C02 这种EEPROM 来说,使用单片机内部的Flash 有一些需要注意的问题:
1.Flash 写入数据之前需要先执行擦除操作,而且擦除以扇区为单位。
2.Flash读写次数比EEPROM 少很多。
3.容易误操作,把Flash 内部的代码擦除掉。
4.影响中断的响应时间。
24C02 有256 字节的数据,一般说来也够用了。它的地址是可以通过引脚配置的,这样一条I2C 总线上就可以挂多个24C02。如下:
我们把A2,A1,A0 都接地,这样地址为A0。然后SCL,SDA 脚接MCU 的PB8 和PB9。需要注意SCL,和SDA 需要加上拉电阻。
1.代码
下面我们在一个I2C 例程上面修改代码来实现24C02 的读写。大家可以看到使用库函数的好处,基本上不用看STM32F030 的手册,很快就能实现我们想要实现的功能。
我们用Keil 打开下面这个工程:
STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\I2C\I2C_TwoBoards_ComPolling\MDK-AR M\Project.uvprojx
Step 1, 把I2C 地址改为跟我们硬件一致:
Step 2, 根据实际使用的I2C 模块和引脚进行配置:
单片机读写24C01
单片机读写24C01~24C16程序
51单片机 2009-08-14 10:13 阅读150 评论0
字号:大中小
单片机读写24C01~24C16程序
AT89S52 晶振频率为11.0592MHz 指令周期:1.0852us
功能说明:24C01-16程序,能读写:24C01、24C02、24C04、24C08、24C16
读出的数据送P1 口显示
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit sda=P3^7;//;模拟I2C 数据传送位
sbit scl=P3^6;//;模拟I2C 时钟控制状态标志
void delay1(uint z)//延时为1ms
{
uchar x,x1;
for(;z>0;z--)
{
for(x=0;x<114;x++)
{
for(x1=0;x1<1;x1++);
}
}
}
void delay()//5us延时
{
_nop_();
_nop_();
_nop_();
}
void star()//开始
{
sda=1;
delay();//5us延时
scl=1;
delay();//5us延时
sda=0;
delay();//5us延时
}
void stop()//停止
{
sda=0;
delay();//5us延时
scl=1;
delay();//5us延时
sda=1;
delay();//5us延时
}
void ack()//应答
{ uchar z=0;
while((sda==1)&&(z<50))z++;//条件判断,sda=1,则没有应答。如果没有应答则延时:z<50,z++;后返
STM32 模拟IIC读写24C02程序代码
STM32 模拟IIC读写24C02程序代码
最近用到STM32F103V来读写A T24C02 EEPROM 于是从原来51单片机的程序代码的基础上修改了下,移植到了STM32,测试工作正常。
引脚定义和配置:
#define SCL GPIO_Pin_6 //24C02 SCL
#define SDA GPIO_Pin_7 //24C02 SDA
void GPIO_Configuration(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = SCL; //24C02 SC L
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SDA; //24C02 SDA 作为输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何使用单片机模拟读写24C01EEPROM数据
实验目的:
熟悉使用单片机模拟读写24C01EEPROM
1、首先向24C01EEPROM写入数据
2、在从24C01EEPROM中读取数据,并用LED显示
硬件设置:
1、SW4开关全部闭合
2、SW2开关1闭合,其它断开
3、SW3开关7和8闭合,其它断开
#include
__CONFIG(0x3545);
//FLASH代码不保护,RB6和RB7为调试模式,FLASH不写保护,数据代码不保护//RB3为数字IO口,低电压复位使能,上电延时开,看门狗开,4M晶体XT振荡器#defineucharunsignedchar
#defineuintunsignedint
#defineSCLTRISC3
#defineSDATRISC4
定义写入EEPROM数据
ucharcode[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
定义读取EEPROM数据变量
ucharack,data[8];
//函数名:delayus(uchartime);
//入口参数:TIme
//出口参数:无
//函数作用:微妙延时