51单片机内部EEPROM的应用
51单片机 原理
51单片机原理
51单片机,又称作8051单片机,是一种微控制器,广泛应用
于嵌入式系统中。
它是由英特尔公司在1980年推出的,并成
为了应用最广泛的单片机架构之一。
51单片机采用哈佛架构,具有8位数据总线和16位地址总线。
它内部集成了CPU、RAM、ROM、I/O口等组成部分。
在工
作时,通过外部时钟源供给给单片机提供时钟信号。
CPU是51单片机的核心部件,用于执行程序指令。
51单片机
的指令集支持多种操作,包括算术、逻辑、移位、跳转等。
数据的存储和处理则在RAM中进行,程序的存储则在ROM中。
RAM是51单片机的临时存储器,用于存储程序中的变量和计算结果。
ROM则是只读存储器,用于存储程序指令。
在单片
机启动时,ROM中的程序会被加载到RAM中,并由CPU执行。
I/O口是51单片机与外部设备进行交互的接口。
它可以被配置为输入或输出,用于连接各种传感器、执行器、显示器等外围设备。
通过I/O口,51单片机可以与外部世界进行数据交换和控制。
为了编程和调试51单片机,我们通常使用专用软件和编程器。
这些工具可以将用户编写的程序烧录到51单片机的ROM中,并通过与单片机的通信接口进行通信。
总的来说,51单片机是一种功能强大且应用广泛的微控制器。
它可以用于控制各种嵌入式系统,如家用电器、车辆电子、工业自动化等领域,为我们的生活和工作提供了便利。
三线制Microware同步串行EEPROM在MCS—51单片机上的运用
Th p ia i n o e Ap l to fEEPROM 、ih M ir wa e S —a l n M CS一5 c v t c o r e lBl o s 1
Si gl -Chi ir c m put r n e- pM co o e
C S
S K DI D O
V CC N C
OR G GN D
E P O 之 间通 信 的 同步 信 号 ,数 据 在 它 的上 升 沿 ER M
锁定有效 ;
D : 据输入 ; I数 D 数据输 出 ; O: O G:Mi ohp公 司 产 品 特 有 引 脚 。 该 引脚 接 R c ci r V c时 ,器 件 的 内部 存 储 组 织 结 构 以 1 位 为 一 个 单 c 6
分 类 号 :P 7 T 23
文 献 标 识 码 : B
文 章 编 号 :0 6—6 7 ( 0 2 0 —0 0 10 9 7 2 0 ) 8 0 9—0 3
1 三 线 制 Mirwae串 行 总 线 co r
三 线 制 Mi o ae同 步 串 行 总线 接 口是 N t n l c wr r ai a o S m cn uo 公 司 在 其 生 产 的 C P系 列 和 H C 系 列 e iod t r O P 微 控 制 器 上 采 用 的 一 种 串行 总线 ,它 使 用 的 三 根 信 号线 分 别 为 数 据 输 入 线 S 、数 据 输 出线 S I 0和 时 钟 信 号线 S K。由 于 三 线 制 Mi o a c wr r e总线 只 需 3 ~4根 数 据 线 和 控 制 线 即 可 扩 展 具 有 三 线 制 Mir ae总 co r w 线 的 各 种 I 0器 件 ,而并 行 总 线 扩 展 方 法 却 需 要 8 / 根 数 据 线 、8~1 6根 地 址 线 和 2~3位 的 控 制 线 ,因
51内部eeprom读写,实现掉电存储
主函数:#include<reg52.h>#include"EEPROM.h"#include"smg.h"void main(){num=byte_read(DEBUG_Data_Memory_Begin_Sector_addr);//字节读(程序开始时读取EEPROM中数据)if(num>=60)num=0;//防止首次上电时读取出错??while(1){if(num<60){display(num);num++;delay(5);delay1(DELAY_CONST);sector_erase(DEBUG_Data_Memory_Begin_Sector_addr);//擦出扇区byte_program (DEBUG_Data_Memory_Begin_Sector_addr,num);//字节编程}if(num==60)num=0;}}EEPROM.h:/*STC89C51RC,STC89LE51RC 0x2000 共八个扇区STC89C52RC,STC89LE52RC 0x2000 共八个扇区STC89C54RD+,STC89LE54RD+ 0x8000 共五十八个扇区STC89C55RD+,STC89LE55RD+ 0x8000 共五十八个扇区STC89C58RD+,STC89LE58RD+ 0x8000 共五十八个扇区*/#include<reg52.h>#include<intrins.h>//sfr定义特殊功能寄存器sfr ISP_DATA =0xe2;//ISP/IAP 操作时的数据寄存器,从Flash 读出的数据放在此处,向Flash 写的数据也需放在此处sfr ISP_ADDRH =0xe3;//ISP/IAP 操作时的地址寄存器高八位sfr ISP_ADDRL =0xe4;//ISP/IAP 操作时的地址寄存器低八位sfr ISP_CMD =0xe5;//ISP/IAP 操作时的命令模式寄存器,须命令触发寄存器触发方可生效sfr ISP_TRIG =0xe6;//ISP/IAP 操作时的命令触发寄存器sfr ISP_CONTR =0xe7;//ISP/IAP 控制寄存器/* 定义命令*/#define uchar unsigned char /*8bit无符号整型*/#define uint unsigned int /*16bit无符号整型*/#define READ_AP_and_Data_Memory_Command 0x01 /*字节读数据存储区*/#define PROGRAM_AP_and_Data_Memory_Command 0x02 /*字节编程数据存储区*/#define SECTOR_ERASE_AP_and_Data_Memory_Command 0x03 /*扇区擦除数据存储*/#define DEBUG_Data_Memory_Begin_Sector_addr 0x2000//扇区地址#define DELAY_CONST 60000//延时#define WAIT_TIME 0x01uchar num;/* 打开ISP,IAP 功能*/void ISP_IAP_enable(void){EA=0;/* 关中断*/ISP_CONTR=ISP_CONTR & 0x18; /* 0001,1000 */ISP_CONTR=ISP_CONTR|WAIT_TIME;ISP_CONTR=ISP_CONTR|0x80; /* 1000,0000 */}/* 关闭ISP,IAP 功能*/void ISP_IAP_disable(void){ISP_CONTR=ISP_CONTR&0x7f;/* 0111,1111 */ISP_TRIG=0x00;EA=1;/* 开中断*/}/* 字节读*/uchar byte_read(uint byte_addr){ISP_ADDRH = (uchar)(byte_addr >> 8);ISP_ADDRL = (uchar)(byte_addr & 0x00ff);ISP_CMD = ISP_CMD&0xf8;/* 1111,1000 */ISP_CMD = ISP_CMD|READ_AP_and_Data_Memory_Command;/* 0000,0001 */ISP_IAP_enable();ISP_TRIG = 0x46;ISP_TRIG = 0xb9;_nop_();ISP_IAP_disable();return (ISP_DATA);}/* 扇区擦除*/void sector_erase(uint sector_addr){uint get_sector_addr=0;get_sector_addr=(sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇区地址*/ ISP_ADDRH = (uchar)(get_sector_addr >> 8);ISP_ADDRL = 0x00;ISP_CMD = ISP_CMD&0xf8;/* 1111,1000 */ISP_CMD =ISP_CMD|SECTOR_ERASE_AP_and_Data_Memory_Command;/* 0000,0011 */ ISP_IAP_enable();ISP_TRIG = 0x46;/* 触发ISP_IAP命令*/ISP_TRIG = 0xb9;/* 触发ISP_IAP命令*/_nop_();ISP_IAP_disable();}/* 字节编程*/void byte_program(uint byte_addr, uchar original_data){ISP_ADDRH = (uchar)(byte_addr >> 8);ISP_ADDRL = (uchar)(byte_addr & 0x00ff);ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */ISP_CMD = ISP_CMD |PROGRAM_AP_and_Data_Memory_Command; /* 0000,0010 */ISP_DATA = original_data;ISP_IAP_enable();ISP_TRIG = 0x46; /* 触发ISP_IAP命令*/ISP_TRIG = 0xb9; /* 触发ISP_IAP命令*/_nop_();ISP_IAP_disable();}void delay1(uint counter){uint temp=0;for(temp=counter;temp>0;temp--){_nop_();_nop_();_nop_();}}Smg.h:/****************************************************************************** ***** 标题: 试验数码管上显示数字( 单片机直接实现位选共阴极) ** 用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管******************************************************************************** ****/#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar code smg_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码0-9.uchar code smg_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制查表的方法控制void delay(uint i){uchar j;for(i;i>0;i--)for(j=200;j>0;j--);}void display(uint dat)//数码管显示函数{uint i;uint LedOut[10];LedOut[0]=smg_duan[dat%10000/1000];//(若要显示小数点,则|0x80)LedOut[1]=smg_duan[dat%1000/100];LedOut[2]=smg_duan[dat%100/10];LedOut[3]=smg_duan[dat%10];for( i=0; i<4; i++){P0=LedOut[i];P2=smg_wei[i];//使用查表法进行位选delay(10);//扫描间隔时间,数码管每位显示的时间,太长会数码管会有闪烁感}}。
51单片机优缺点及应用领域介绍
51 单片机优缺点及应用领域介绍
一、51 单片机
应用最广泛的8 位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel 推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。
51 单片机之所以成为经典,成为易上手的单片机主要有以下特点:
特性
1、从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。
不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
2、同时在片内RAM 区间还特别开辟了一个双重功能的地址区间,使用
极为灵活,这一功能无疑给使用者提供了极大的方便。
用EEPROM扩展单片机ROM实验
实验九用EEPROM扩展单片机ROM实验一、实验目的1.用EEPROM 27C64扩展51单片机ROM(27C64为外ROM)。
2.用proteus设计、仿真基于AT89C51单片机ROM的扩展实验。
3.借助proteus VSM的虚拟逻辑分析仪,观测单片机访问外ROM(即27C64)时地址、数据和控制总线的信号状态。
二、电路设计1.从PROTEUS库中选取元件①AT89C51.BUS:总线式的单片机;②RES:电阻;③7SEG-BCD- GRN:带BCD译码七段绿光数码管;④CAP、CAP-ELEC:电容、电解电容;⑤CRYSTAL:晶振;⑥74LS373:8D锁存器;⑦27C64:EEPROM存储器。
2.放置元器件3.放置电源和地4.连线5.元器件属性设置6.电气检测三、源程序设计、生成目标代码文件1.流程图2.源程序设计(1)通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。
若编译失败,可对程序进行修改调试直至汇编成功。
(1)加载单片机目标代码文件对AT89C51单片机先右击后左击,打开其属性编辑窗口,在“Program File”栏中添加目标代码文件2764.HEX;在“Clock Frequency”栏中输入晶振频率为120HZ。
(2)加载27C64目标代码文件对2764先右击后左击,打开其属性编辑窗口,在映像文件“Image File”栏中输入外ROM程序的目标代码文件P2764.HEX。
四、PROTEUS仿真1.加载目标代码文件2.仿真单击按钮,启动仿真。
启动仿真后,因单片机的EA脚接电源,从单片机内ROM地址0H开始执行指令LJMP 1000H。
因内ROM的最大地址为0FFFH,而外ROM 27C64的地址从0H到1FFFH,当指令地址大于0FFFH时就自动转到外ROM中去执行程序,所以执行LJMP 1000H是跳转到外ROM 27C64的地址1000H处执行外ROM 27C64中的程序。
51单片机的组成
51单片机的组成51单片机的组成51单片机是一种非常普及的单片机,其名字来源于其指令集中的51条指令。
51单片机的组成主要包括芯片内部逻辑设计、存储、外设及与外部器件通信等几个部分。
1. 芯片内部逻辑设计51单片机内部逻辑设计是由微控制器内核、地址总线、数据总线、控制总线、时钟电路等几部分构成的。
微控制器内核是整个51单片机的核心。
它包含一个CPU及其指令集、寄存器、标志寄存器以及一些特殊功能寄存器。
地址总线用于指定程序和数据在存储器中的位置,地址总线的宽度为16位,最大抵达到2^16=65536,即可以对64K的存储空间进行寻址。
数据总线用于CPU与其他器件之间的数据传送,数据总线的宽度为8位,即每次可以传送一个字节大小的数据。
控制总线用于传送指南信号,包括读写控制信号、中断控制信号等。
时钟电路为51单片机提供了一个系统时钟,时钟的频率可以通过输入时钟信号的频率分频器来调节。
2. 存储51单片机中有很多存储器,比如程序存储器(ROM)、数据存储器(RAM)和非易失性存储器(EEPROM)等。
ROM是51单片机存储程序的地方,用于存放CPU指令和程序数据。
ROM一般是只读存储器,无法在运行中写入和修改。
程序存储器的大小为2K到64K。
RAM是51单片机存储数据的地方,用于存放程序运行中的数据、变量和寄存器的值等。
RAM的大小一般在128字节到8K之间,一般只存储运行时的数据。
EEPROM是一种非易失性存储器,用于持久存储用户程序和数据。
EEPROM可以使用电子擦除或编程器写入,而且数据不会因为断电而丢失。
3. 外设51单片机的外设包括IO口、定时器、串口、中断控制器、ADC、DAC等。
它们扩展了51单片机的应用。
IO口(Input Output Port)是外设中最简单也是最常用的一种外设,通过IO口,51单片机可以与外部器件进行交互,比如控制电器或读取传感器的值等。
定时器是一种定时功能外设,可以实现定时、计数和PWM等功能,用于控制系统时间和各种周期性动作。
STC单片机内部EEPROM的应用
ISP_IAP_enable()?/* 打开IAP 功能*/
for(i=0?i<len?i++)
{
/* 写一个字节*/
ISP_ADDRH=(unsigned char)(in_addr >> 8)?
ISP_TRIG=0xb9?/* 触发ISP_IAP 命令字节2 */
_nop_()?
}
/*
字节读
*/
unsigned char byte_read(unsigned int byte_addr)
{
ISP_ADDRH=(unsigned char)(byte_addr>>8)? /* 地址赋值*/
stc单片机EEPROM读写(一)
EEPROM 操作函数:
#define RdCommand 0x01
#define PrgCommand 0x02
#define EraseCommand 0x03
#define Error 1
#define Ok 0
#define WaitTime 0x01
#define PerSector 512
unsigned char xdata Ttotal[512]?
/*
打开ISP,IAP 功能
*/
void ISP_IAP_enable(void)
D7 D6 D5 D4 D3 D2 D1 D0
ISPEN SWBS SWRST - - WT2 WT1 WT0
启动到ISP 区或用户程序区,这在“STC 单片机自动下载”一节,亦有所应用。
如:
ISP_CONTR=0x60? 则可以实现从用户应用程序区软件复位到ISP 程序区开始运行
51单片机内部EEPROM读写
51单⽚机内部EEPROM读写#include <reg52.h>#include <intrins.h>//定义类型,⽅便代码移植typedef unsigned char UINT8;typedef unsigned int UINT16;typedef unsigned long UINT32;typedef char INT8;typedef int INT16;typedef long INT32;static UINT8 i=0;/*定义寄存器 ISP*/sfr ISP_DATA= 0xe2; // Flash数据寄存器sfr ISP_ADDRH= 0xe3;// Flash⾼字节地址寄存器sfr ISP_ADDRL= 0xe4;// Flash低字节地址寄存器sfr ISP_CMD= 0xe5;// Flash命令模式寄存器sfr ISP_TRIG= 0xe6;// Flash命令触发寄存器sfr ISP_CONTR= 0xe7;// ISP/IAP 控制寄存器#define NOP() _nop_()#define EEPROM_START_ADDRESS 0X2000#define LED_PORT P2//微秒级延时void DelayNus(UINT16 t){UINT16 d=0;d=t;do{NOP();}while(--d > 0);}//毫秒级延时void DelayNms(UINT16 t){do{DelayNus(1000);}while(--t > 0);}//EEPROM使能void EEPROMEnable(void){ISP_CONTR=0x81;//使能并设置好等待时间}//EEPROM禁⽤void EEPROMDisable(void){ISP_CONTR=0x00;//禁⽌EEPROMISP_CMD = 0X00;//⽆ISP操作ISP_TRIG = 0X00;//清零ISP_ADDRH = 0X00;//清零ISP_ADDRL = 0X00;//清零}//eeprom 设置读写地址(相对地址)void EEPROMSetAddress(UINT16 addr){addr+=EEPROM_START_ADDRESS;//初始化地址ISP_ADDRH=(UINT8)(addr>>8);//设置读写地址⾼字节ISP_ADDRL=(UINT8) addr; //设置读写地址低字节}//EEPROM启动void EEPROMStart(void){ISP_TRIG=0x46;ISP_TRIG=0xB9;}//EEPROM读取单个字节UINT8 EEPROMReadByte(UINT16 addr){ISP_DATA=0X00;ISP_CMD=0X01;EEPROMEnable();EEPROMSetAddress(addr);EEPROMStart();DelayNus(10);//读取⼀个字节需要10usEEPROMDisable();return (ISP_DATA);}//EEPROM写⼊单个字节UINT8 EEPROMWriteByte(UINT16 addr,UINT8 byte) {EEPROMEnable();ISP_CMD=0X02;EEPROMSetAddress(addr);ISP_DATA=byte;EEPROMStart();DelayNus(60);EEPROMDisable();}//EEPROM扇区擦除UINT8 EEPROMSectorErase(UINT16 addr){ISP_CMD=0X03;EEPROMEnable();EEPROMSetAddress(addr);EEPROMStart();DelayNus(10);//EEPROMDisable();}void main(void){EEPROMSectorErase(0);EEPROMWriteByte(0,0x0f);i=EEPROMReadByte(0);LED_PORT = i;while(1);}现象:。
51单片机原理及应用
51单片机原理及应用51单片机是一种常见的微控制器,以其高性能和广泛应用而受到广大工程师的青睐。
本文将介绍51单片机的原理和应用。
51单片机的原理可以从其硬件结构和工作流程两方面来讲解。
首先是硬件结构。
51单片机包括中央处理器(CPU),存储器(包括存储器管理单元、内部RAM和ROM),输入/输出端口(I/O口),定时器/计数器,串行通信接口等。
CPU是整个系统的核心,负责指令的执行和数据的处理。
存储器用于存储程序和数据,其中ROM存储程序代码,RAM用于暂存数据。
I/O口用于与外部设备进行信息交互。
定时器/计数器用于产生精确的时间延迟和计数操作。
串行通信接口用于与其他设备进行数据传输。
其次是工作流程。
51单片机的工作流程一般包括初始化、输入/输出控制和运算处理三个阶段。
初始化阶段主要是对各个模块的配置和初始化,例如设置时钟频率、串口波特率等。
输入/输出控制阶段通过读取输入设备(如按键、传感器等)的状态,控制外部设备(如LED灯、马达等)的状态。
运算处理阶段通过执行指令,对数据进行处理和计算。
至于应用方面,51单片机具有广泛的应用领域。
主要应用包括控制系统、嵌入式系统、通信系统、工业自动化等。
在控制系统中,51单片机可以用于控制家电、机器人、机械设备等。
在嵌入式系统中,51单片机可以应用于智能家居、智能交通、智能仪表等。
在通信系统中,51单片机可以用于电话、网络和无线通信设备等。
在工业自动化中,51单片机可以用于工厂生产线控制、仪器仪表控制等。
总结起来,51单片机的原理和应用都是非常重要的。
通过了解其硬件结构和工作流程,可以更好地理解其工作原理。
而了解其应用领域,则可以为工程师在实际项目中的选择和设计提供参考。
51单片机的基本参数
51单片机的基本参数单片机是一种集成电路芯片,其中包含了微处理器、存储器、输入输出接口等功能模块。
51单片机作为一种广泛应用于嵌入式系统开发的芯片,其基本参数对于开发者而言具有重要意义。
本文将介绍51单片机的基本参数,帮助读者更好地了解和应用该芯片。
1. 集成的微处理器51单片机,又称为8051单片机,其集成了一颗8位的微处理器,采用哈佛体系结构。
该微处理器具备高效的指令集和强大的运算能力,适用于各种嵌入式应用场景。
2. 存储器容量51单片机内部集成了多种类型的存储器,包括ROM、RAM和EEPROM。
其中,ROM用于存储程序代码,RAM用于存储数据,EEPROM用于存储不易丢失的配置信息。
具体的容量因型号而异,可以有2KB、4KB、8KB、16KB等不同的选项。
3. 时钟频率51单片机的工作频率对于其性能和响应速度至关重要。
不同型号的51单片机有不同的工作频率范围,常见的有12MHz、16MHz、20MHz等选项,开发者可以根据实际需求选择适合的时钟频率。
4. 输入输出接口51单片机内部集成了丰富的IO口,用于实现与外部设备的数据交互。
其中,一部分IO口可配置为输入模式,另一部分可配置为输出模式。
这些输入输出接口的数量和类型因型号而异,可以根据具体需求进行选择和配置。
5. 通信接口为了满足与其他设备的通信需求,51单片机通常支持多种通信接口,如串口、SPI和I2C等。
这些接口可以通过配置使用不同的通信协议,方便与其他设备进行数据交换和通信。
6. 中断系统中断是51单片机实现多任务处理和异步事件响应的关键机制。
51单片机具备灵活的中断系统,支持多级中断和外部中断。
开发者可以通过编程设置中断优先级和中断响应函数,实现对外部事件的快速响应。
7. 电压和功耗51单片机通常工作在3.3V或5V的电压下,不同型号的芯片可能有略微差异。
此外,功耗也是需要考虑的因素,低功耗设计可以延长系统的使用寿命和电池续航时间。
51单片机原理
51单片机原理
51单片机是一种8位的微处理器,常用于嵌入式系统和微控制器应用中。
它由美国Intel公司于1980年推出,采用Harvard结构,具有高性能和低功耗的特点。
51单片机的核心部件是CPU,CPU有一个称为ALU (Arithmetic Logic Unit,算术逻辑单元)的功能模块,负责进行运算和逻辑判断。
ALU通过控制信号来执行不同的操作,如加法、减法、与门、或门等。
CPU还包括寄存器和控制单元。
在51单片机中,数据是以位或字节的形式存储的,可以通过内部地址总线和数据总线进行读写操作。
内部RAM(Random Access Memory,随机存取内存)用于临时存储数据,而ROM(Read Only Memory,只读存储器)则用于存储程序代码。
51单片机还具有多个I/O口,可以与外部设备进行数据交换。
其中,GPIO(General Purpose Input/Output,通用输入/输出)口可以配置为输入或输出,用于连接按钮、LED、电机等外部设备。
为了方便程序开发和调试,51单片机通常与编程器相连,通过编程器可以将编写好的程序代码下载到单片机中。
常用的编程语言包括汇编语言和C语言。
除了基本的CPU和存储单元,51单片机还常常包含定时器、
串口通信模块、中断控制器等功能模块,以满足不同应用的需求。
总的来说,51单片机作为一种常用的微处理器,具有可编程性强、易扩展、功耗低等特点,广泛应用于各种嵌入式系统和控制系统中。
第1章 MCS-51单片机结构
第1章 MCS-51单片机结构
1.2.2
外部数据存储器
用于存放随机读写的数据。 外部I/O口地址影像区。 MCS-51单片机的外部数据存储器和外部I/O口实行统一编址 , 并使用相同的RD WR作选通控制信号,均使用 MOVX 指令访 问。 MCS-51 单片机最多可扩展64KB外部数据存储器
1.2.3 内部数据储存器
MCS-51仅能实现两个8位二进 制数的算术逻辑运算!
第1章 MCS-51单片机结构
2. 控制器
(1)组成: 定时与控制部件,复位电路,程序计数器 (PC),指令寄存器、指令译码器,数据指针 (DPTR),堆栈指针(SP)等 (2)作用:产生计算机所需的时序,控制程序自动执行。
外RAM, EPROM, 外I/O CPU
第1章 MCS-51单片机结构
程序存储器中的几个特殊地址的使用:
地址
0000H 0003H 000BH 0013H 001BH 0023H
用途
复位操作后的程序入口 外部中断0服务程序入口 定时器0中断服务程序入口 外部中断1服务程序入口 定时器1中断服务程序入口 串行口中断服务程序入口
串行口中断入口 T1中断入口 T0中断入口 中断入口 INT1
在8051/8751/89C51 片内,分别内置最低地 址空间的4KB ROM/EPROM程序储存器(内部程序储 存器),而在8031片内,则无内部程序储存器, 必须外部扩展EPROM。MCS-51单片机中64KB内、外 程序储存器的地址是统一编排的。
第1章 MCS-51单片机结构
8031单片机无内部程序存储器,地址从0000H~ EA 应始终接地, FFFFH都是外部程序存储空间。 对于内部有ROM的单片机(51、52系列) , EA 引脚接高电平,使程序从内部ROM开始执行。当PC 值超出内部ROM的容量时,会自动转向外部程序存 储器空间。外部程序存储器地址空间为1000H~ FFFFH。 访问程序存储器使用MOVC指令。 单片机执行程序时由PC 指示地址, 复位时PC内 容为0000H, 由此, 程序必须从0号单元开始存放.
简述51系列单片机的内部组成结构
简述51系列单片机的内部组成结构51系列单片机是一种非常常见的单片机产品,被广泛应用于各种电子设备中。
它具有强大的功能和灵活的可编程性,能够满足不同应用场景的需求。
那么,究竟51系列单片机的内部是如何组成的呢?我们来了解一下51系列单片机的基本结构。
51系列单片机由中央处理器、存储器、输入输出端口、定时器、中断系统等多个部分组成。
其中,中央处理器是51系列单片机的核心部件,负责执行指令和进行数据处理。
存储器用于存储程序代码和数据,包括ROM、RAM 和特殊功能寄存器等。
输入输出端口用于与外部设备进行数据交互,可以实现数据输入、输出和控制功能。
定时器可以生成指定时间间隔的定时信号,用于定时操作和计时功能。
中断系统可以在特定条件下中断正常的程序执行,执行相应的中断服务程序。
接下来,我们详细介绍一下51系列单片机的内部组成结构。
首先是中央处理器部分,它由一个8位的CPU核心组成,具有丰富的指令集和寄存器。
这些指令可以执行各种算术和逻辑操作,以及数据传输、位操作等功能。
CPU核心还包括时钟发生器和系统控制逻辑,用于产生时钟信号和控制系统的运行。
其次是存储器部分,51系列单片机的存储器主要包括ROM和RAM。
ROM是只读存储器,用于存储程序代码和常量数据。
RAM是随机存储器,用于存储变量和临时数据。
此外,51系列单片机还具有一些特殊功能寄存器,用于存储各种控制和状态信息。
再次是输入输出端口部分,51系列单片机有多个I/O口,用于与外部设备进行数据交互。
每个I/O口都有一个特定的地址和控制寄存器,可以设置输入输出方向和电平状态。
通过读写这些寄存器,可以实现数据输入、输出和控制功能。
51系列单片机还具有定时器部分,用于生成精确的定时信号。
定时器可以根据设定的参数生成不同频率和周期的定时信号,用于各种定时操作和计时功能。
此外,定时器还可以用于产生脉冲信号、PWM 信号等。
最后是中断系统部分,51系列单片机具有多个中断源和中断向量。
单片机课程设计-IIC总线式EEPROM存储器应用设计
目录1 设计要求 (2)2 设计目的 (2)3 器件EEPROM的介绍 (2)3.1 EEPROM简介 (2)3.2 EEPROM24XX系列功能概述 (3)4 IIC协议的介绍 (3)4.1 IIC协议总线特征 (3)4.2 IIC协议工作原理 (3)4.3 IIC协议总线基本状态 (3)4.4 寻址约定 (5)5 EEPROM读写功能实现 (5)5.1写操作 (5)5.1.1 字节写操作 (6)5.1.2 页写入操作 (6)5.2 确认查询 (7)5.3 读操作 (7)5.3.1 当前地址的读操作 (8)5.3.2 随机读操作 (8)5.3.3 连续读操作 (9)6 具体设计过程 (10)6.1 程序流程设计 (10)6.2执行结果 (13)6.3 系统组成模块结构及功能 (15)6.3.1 函数定义 (15)6.3.2 主函数设计 (17)6.3.3 源程序 (19)7 设计心得体会 (27)8 参考文献 (28)IIC总线式EEPROM存储器应用设计1 设计要求利用51单片机和IIC总线式EEPROM芯片24C02进行存储器设计。
按下KEYWRITE1键,向24C02存储器写入数据1和2;按下KEYWRITE2键,向24C02存储器写入数据3和4;按下KEYREAD键,从24C02存储器读出刚写入的数据数据;写入数据显示在左两位,读出数据显示在右两位。
如图1.1所示。
图1.1 系统仿真运行图2 设计目的通过设计,了解IIC协议的基本原理,并对EEPROM读写功能的实现有个系统的概念,对其实现过程比较清楚。
同时,在设计中,巩固我们所学的理论知识。
3 器件EEPROM的介绍3.1 EEPROM简介EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。
EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。
51单片机读写内部EEPROM详解
#define uchar unsigned char
#define uint unsigned int
特殊功能寄存器声明****************
sfr ISP_DATA=0xe2;
sfr ISP_ADDRH=0xe3;
sfr ISP_ADDRL=0xe4;
uchar dat;
ISP_CONTR=0x81;
ISP_CMD= 0x01;/用户可以对"Data Flash/EEPROM区"进行字节读ISP_ADDRL = addr;
ISP_ADDRH=addr>>8;
EA= 0;
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
_nop_();
dat=ISP_DATA;
uchar dcx(uint addr);
voidQ0();
/*
*/
/*
void main(void)
uchar V;
V = dcx(0x2002);//开机读取EEPROM区2002h数据,还原关电前LED的亮灭 状况
if(V==2){LED1=0;LED2=1;}
else if(V==6){LED1=0;LED2=0;}
验证第二、第三个程序时需按程序内主程序中的操作说明进行烧录单片
机,以验证是否成功操作单片机内部EEPROM。
程序1:
/***************************************************************
作品:EEP ROM实验,开机还原关电前LED的亮灭状况
ISP_ADDRH=addr>>8;
51单片机IO口应用详解
51单片机IO口应用详解MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照单片机引脚图:这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。
P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
ALE 地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。
参见图2(8051扩展2KB EEPROM电路,在图中ALE与4LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。
由于ALE是以晶振六分之一的固定频率输出的正脉冲,当系统中未使用外部存储器时,ALE脚也会有六分之一的固定频率输出,因此可作为外部时钟或外部定时脉冲使用。
51单片机的基本结构及其主要组成部分
51单片机的基本结构及其主要组成部分51单片机是一种非常常见的嵌入式微控制器芯片,其被广泛应用于各种电子设备中。
其基本结构及其主要组成部分既是设计开发嵌入式系统的基础,也是学习51单片机的关键。
一、51单片机基本结构51单片机的基本结构主要包括存储器、CPU、输入输出接口以及时钟电路四个部分。
1. 存储器存储器是51单片机系统的一个重要组成部分。
其中包括的存储器主要有ROM、RAM和EEPROM,ROM用来存储程序代码,RAM用来存储变量和中间结果,EEPROM则可实现数据的存储。
2. CPUCPU是整个51单片机系统的核心部分,其主要功能是执行指令,负责程序的控制和各种数据的处理。
在51单片机中,CPU主要通过时钟信号不断地获取并执行程序指令。
3. 输入输出接口输入输出接口是将51单片机与外界连接的一个重要部分,也是实现嵌入式系统功能的关键。
其中包括并口、串口、SPI接口、I2C接口等等,用于处理外设的输入和输出信号。
4. 时钟电路51单片机的时钟电路用来提供时钟信号给CPU,并且用于控制各种外围设备和CPU执行指令的同步。
二、51单片机主要组成部分1. 程序存储器程序存储器是指ROM,其存储了单片机的程序代码。
在51单片机中,程序存储器可以分为两种类型:OTP(一次可编程)ROM和Flash ROM (可被反复擦写)。
在OTP ROM中,编程后的程序无法修改,而Flash ROM则可被反复擦写。
2. 数据存储器数据存储器是指RAM和EEPROM,用来存储程序中的变量和中间结果。
其中RAM用来存储临时数据,EEPROM则用于数据的存储,这些数据在掉电情况下也不会丢失。
3. 中央处理器中央处理器(CPU)是单片机最核心的部分,它负责执行程序中的指令并且控制其它硬件设备的工作。
4. 输入输出接口输入输出接口是将单片机与外部设备相互连接的途径。
在这些接口中,包括并口、串口、SPI、I2C等。
这些接口是为特定的设备开发的,包括LCD显示器、键盘及调制解调器等。
51单片机EEPROM的读写
51单片机EEPROM的读写STC单片机的内部EEPROM是用DATAFLASH模拟出来的,不是真正的EEPROM存储器,不能用普通的方法来操作下面是一些注意点:1.字节写之前要先将这个字节所在扇区的其它有效数据读取到RAM暂存(这步不是必须的)2.暂存完之后再对整个扇区(512字节)进行擦除操作,擦拭完后,整个扇区每个地址中数据都变成0xFF3.将欲写入的N个字节数据,用字节写函数写入EEPROM4.将暂存到RAM的其它有用的EEPROM值再用字节写函数写回EEPROM5.STC用FLASH模拟出来的EEPROM的字节写功能只能将1变成0,而不能将0变成1,只有扇区擦除后数据才是全1,例如:在地址0x21f0处第1次写11010110,第2次写111010,读出结果是这2个值的相与10010所以如果一个地址处的值不是0xff时写入新的数据是不对的,要先执行扇区擦除,变为0xff,对于单个字节的写入,我们可以先检查该地址处的数据是否为0xff,是的话就不用擦除扇区了----------------------------------------------------------------------STC89C52单片机内部EEPROM 的读写过程1 配置ISP_CONTR寄存器,使能第7位ISPEN,让ISP_IAP功能生效,并配置低3位的等待时间2 写指令: 读/写/擦除扇区这3个命令3 赋值: ISP_ADDRH和ISP_ADDRL的地址值4 关闭总中断EA,因为下面要写的2个触发指令必须是连续操作的,不能被中断5 执行公用的ISP_IAP 触发指令,触发后读写操作才能进行6 打开中断EA, 关闭ISP_IAP功能:清相关寄存器#include "my51.h"/******************定义命令字节******************/#define read_cmd 0x01 //字节读数据命令#define wirte_cmd 0x02 //字节编程数据命令#define erase_cmd 0x03 //扇区擦除数据命令/****************特殊功能寄存器声明****************/sfr ISP_DATA = 0xe2;sfr ISP_ADDRH = 0xe3;sfr ISP_ADDRL = 0xe4;sfr ISP_CMD = 0xe5;sfr ISP_TRIG = 0xe6;sfr ISP_CONTR = 0xe7;/*定义Flash 操作等待时间及允许IAP/ISP/EEPROM 操作的常数******************///#define enable_waitTime 0x80 //系统工作时钟<30MHz 时,对IAP_CONTR 寄存器设置此值//#define enable_waitTime 0x81 //系统工作时钟<24MHz 时,对IAP_CONTR 寄存器设置此值//#define enable_waitTime 0x82 //系统工作时钟<20MHz 时,对IAP_CONTR 寄存器设置此值#define enable_waitTime 0x83 //系统工作时钟<12MHz 时,对IAP_CONTR 寄存器设置此值//#define enable_waitTime 0x84 //系统工作时钟<6MHz 时,对IAP_CONTR 寄存器设置此值void ISP_IAP_disable(void) //关闭ISP_IAP{EA=1; //恢复中断ISP_CONTR = 0x00;ISP_CMD = 0x00;ISP_TRIG = 0x00;}void ISP_IAP_trigger() //触发{EA=0;//下面的2条指令必须连续执行,故关中断ISP_TRIG = 0x46; //送触发命令字0x46ISP_TRIG = 0xB9; //送触发命令字0xB9}void ISP_IAP_readData(u16 beginAddr, u8* pBuf, u16 dataSize) //读取数据{ISP_DATA=0; //清零,不清也可以ISP_CMD = read_cmd; //指令:读取ISP_CONTR = enable_waitTime; //开启ISP_IAP,并送等待时间while(dataSize--) //循环读取{ISP_ADDRH = (u8)(beginAddr >> 8); //送地址高字节I SP_ADDRL = (u8)(beginAddr & 0x00ff);//送地址低字节ISP_IAP_trigger(); //触发beginAddr++; //地址++*pBuf++ = ISP_DATA; //将数据保存到接收缓冲区}ISP_IAP_disable(); //关闭ISP_IAP功能}void ISP_IAP_writeData(u16 beginAddr,u8*pDat,u16 dataSize) //写数据{ISP_CONTR = enable_waitTime; //开启ISP_IAP,并送等待时间ISP_CMD = wirte_cmd; //送字节编程命令字while(dataSize--){ISP_ADDRH = (u8)(beginAddr >> 8); //送地址高字节ISP_ADDRL = (u8)(beginAddr & 0x00ff);//送地址低字节ISP_DATA = *pDat++; //送数据beginAddr++;ISP_IAP_trigger(); //触发}ISP_IAP_disable(); //关闭}void ISP_IAP_sectorErase(u16 sectorAddr) //扇区擦除{ISP_CONTR = enable_waitTime; //开启ISP_IAP;并送等待时间ISP_CMD = erase_cmd; //送扇区擦除命令字ISP_ADDRH = (u8)(sectorAddr >> 8);//送地址高字节ISP_ADDRL = (u8)(sectorAddr & 0X00FF);//送地址低字节ISP_IAP_trigger(); //触发ISP_IAP_disable();//关闭ISP_IAP功能}void main() //测试{u8 buf[3]={0}; //接收数据缓冲区u8dat[5]={b(111010),b(1001),b(1),b(1011),b( 1110)};//我写成二进制是为观察led灯ISP_IAP_sectorErase(0x2000); //扇区擦除,一块512字节ISP_IAP_writeData(0x21f0,dat,sizeof(dat));//写EEPROMISP_IAP_readData(0x21f0,buf,sizeof(buf)); //读取P1=buf[2];//在地址0x21f0处第1次写11010110,第2次写111010,读出结果是这2个值的相与10010while(1); //所以如果一个地址处的值不是0xff时写入新的数据是不对的,要先擦除为0xff}#ifndef _MY51_H#define _MY51_H#include <reg52.h>//#include <math.h>#include <intrins.h>#include <stdio.h>#include "mytype.h"/*************二进制输入宏****************************/#ifndef _LongToBin_#define _LongToBin_#define LongToBin(n) \( \((n >> 21) & 0x80) | \((n >> 18) & 0x40) | \((n >> 15) & 0x20) | \((n >> 12) & 0x10) | \((n >> 9) & 0x08) | \((n >> 6) & 0x04) | \((n >> 3) & 0x02) | \((n ) & 0x01) \)#define bin(n) LongToBin(0x##n##l)#define BIN(n) bin(n)#define B(n) bin(n)#define b(n) bin(n)#endif/*************单个数据位的置位宏*********************/#ifndef _BIT_#define _BIT_#define BIT(n) (1<<n)#define bit(n) BIT(n)#endif#define high 1 //高电平#define low 0 //低电平#define led P1 //灯总线控制sbit led0=P1^0; //8个led灯,阴极送低电平点亮sbit led1=P1^1;sbit led2=P1^2;sbit led3=P1^3;sbit led4=P1^4;sbit led5=P1^5;sbit led6=P1^6;sbit led7=P1^7;sbit ledLock=P2^5; //led锁存的状态,0锁定 ,1不锁定sbit beep=P2^3; //蜂鸣器void delayms(u16 ms);//void delayXus(u8 us); //函数执行(8+6x)个机器周期, 即t=(8+6x)*1.085///////////////////////////////////////// ////////////////////////////////////#endif。
51单片机原理及应用
51单片机原理及应用51单片机(AT89C51)是一种高性能、低功耗的CMOS8位微控制器,它集成了CPU核心、ROM、RAM、I/O端口、定时器/计数器、串行通信接口等功能模块。
它是基于哈佛结构的架构,具有较高的运行速度和强大的功能。
1.CPU核心:51单片机采用了8051型CPU核心,其指令集丰富,包括基本的算数逻辑操作、数据传输操作、位操作以及控制操作等。
2.存储器:51单片机内部带有4KB的可编程ROM,用于存放程序代码;同时还有128字节的RAM用于存放数据。
3.I/O端口:51单片机共有四组I/O端口,分别为P0、P1、P2和P3,每个端口都是8位的双向口。
4. 定时器/计数器:51单片机内部带有两个独立定时器/计数器,分别为Timer 0和Timer 1,它们可以用于计时、定时和外部计数等操作。
5.串行通信接口:51单片机内部带有一个串行通信接口(UART),可以实现串行数据的收发操作。
1.嵌入式系统开发:51单片机具有强大的IO口和丰富的功能模块,可用于开发各种嵌入式系统,如家电控制、电子锁、智能家居等。
2.工业自动化:51单片机广泛应用于工业领域,可以实现各种传感器的数据采集、控制执行器动作、工业过程监控等功能。
3.车载电子:51单片机可以用于车辆电子系统的设计与控制,如车载仪表盘、车内电子设备控制、车载导航系统等。
4.家庭电子:51单片机可以用于各种家庭电子产品的设计与控制,如电视、音响、游戏机等。
5.学术研究:51单片机常用于电子、计算机等相关专业的教学与研究,学生可以通过对其原理及应用的学习,提高自己的电子设计与开发能力。
需要注意的是,由于51单片机已经推出多年,技术相对较老,目前市场逐渐被更先进的32位单片机所取代。
但由于其成熟可靠、易学易用的特点,仍然在一些特定领域得到广泛应用。
总之,51单片机具有强大的功能和广泛的应用领域,熟悉其原理及应用对于掌握嵌入式系统的设计和开发具有重要意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STC89C51、52内部都自带有2K字节的EEPROM,54、55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次以上,先来介绍下ISP与IAP的区别和特点。
知识点:ISP与IAP介绍
ISP:In System Programable 是指在系统编程,通俗的讲,就是片子已经焊板子上,不用取下,就可以简单而方便地对其进行编程。
比如我们通过电脑给STC单片机下载程序,或给AT89S51单片机下载程序,这就是利用了ISP技术。
IAP:In Application Programable 是指在应用编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。
通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。
这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。
大家要注意千万不要尝试去擦除这段ISP引导程序,否则恐怕以后再也下载不了程序了。
STC单片机内部有几个专门的特殊功能寄存器负责管理ISP/IAP功能的,见表1。
表1 ISP/IAP相关寄存器列表
名称地址功能描述D7 D6 D5 D4 D3 D2
D1 D0 复位值
ISP_DATA E2h Flash数据寄存
器1111 1111
ISP_ADDRH E3h Flash高字节地址寄存
器0000 0000
ISP_ADDRL E4h Flash低字节地址寄存
器0000 0000
ISP_CMD E5h Flash命令模式寄存器-- -- -- -- -- MS2 MS1
MS0 xxxx x000
ISP_TRIG E6h Flash命令触发寄存
器xxxx xxxx
ISP_CONTR E7h ISP/IAP 控制寄存器ISPEN SWBS SWRST -- -- WT2 WT1
WT0 000x x000
ISP_DATA:ISP/IAP操作时的数据寄存器。
ISP/IAP从Flash读出的数据放在此处,向Flash写入的数据也需放在此处。
ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位。
ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位。
ISP_CMD:ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。
命令模式如表2所示。
表2 ISP_CMD寄存器模式设置
D7 D6 D5 D4 D3 D2 D1 D0 模式选择
保留命令选择
-- -- -- -- -- 0 0 0 待机模式,无ISP操作
-- -- -- -- -- 0 0 1 对用户的应用程序flash区及数据flash区字节读
-- -- -- -- -- 0 1 0 对用户的应用程序flash区及数据flash区字节编程
-- -- -- -- -- 0 1 1 对用户的应用程序flash区及数据flash区扇区擦除
程序在系统ISP程序区时可以对用户应用程序区/数据Flash区(EEPROM)进行字节读/字节
编程/扇区擦除;程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除。
STC89C51RC/RD+系列单片机出厂时已经固化有ISP引导码,并设置为上电复位进入ISP程序区,并且出厂时就已完全加密。
ISP_TRIG:ISP/IAP操作时的命令触发寄存器。
在ISPEN(ISP_CONTR.7) =1时,对ISP_TRIG 先写入46h,再写入B9h,ISP/IAP命令才会生效。
STC89C52RC,STC89LE52RC单片机内部可用Data Flash(EEPROM)的地址如表3所示,其它型号单片机请查阅相关资料。
表3 STC89C52RC、STC89LE52RC单片机内部EEPROM地址表
第一扇区第二扇区第三扇区第四扇区
起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址
2000H 21FFH 2200H 23FFH 2400H 25FFH 2600H 27FFH
第五扇区第六扇区第七扇区第八扇区
起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址
2800H 29FFH 2A00H 2BFFH 2C00H 2DFFH 2E00H 2FFFH
每个扇区为512字节,建议大家在写程序时,将同一次修改的数据放在同一个扇区,方便修改,因为在执行擦除命令时,一次最少要擦除一个扇区的数据,每次在更新数据前都必须要擦除原数据方可重新写入新数据,不能直接在原来数据基础上更新内容。