STC89C51如何用程序修改单片机内部的eeprom,最好有C语言的例子,多谢先!!

STC89C51如何用程序修改单片机内部的eeprom,最好有C语言的例子,多谢先!!,第1张

/

文件名 : 宏晶EEPROMc

描述 : 该程序实现了对STC单片机的EEPROM的 *** 作。每隔05秒钟,单片机对EEPROM进行一次

读、擦除和写 *** 作,并把数值显示到数码管上。

确认试验是否成功:电源上电后,数码管的值在递增,观察值。关闭电源,待几秒后上电,

数码管显示的值会从断电钱的那个值开始显示。

创建人 : 东流

版本号 : 20

/

#include<reg52h>

#include<intrinsh>

/以下是配置STC单片机的寄存器/

sfr ISP_DATA = 0xC2;

sfr ISP_ADDRH = 0xC3;

sfr ISP_ADDRL = 0xC4;

sfr ISP_CMD = 0xC5;

sfr ISP_TRIG = 0xC6;

sfr ISP_CONTR = 0xC7;

#define uint unsigned int

#define uchar unsigned char

#define ISP_BYTE_READ 1 //ISP字节读

#define ISP_BYTE_PROGRAM 2 //ISP直接编程

#define ISP_SECTOR_ERASE 3 //ISP扇区擦除

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/

名称 : Delay()

功能 : 延时,延时时间为 10ms del

输入 : del

输出 : 无

/

void Delay_1ms(uint i)

{

uchar x,j;

for(j=0;j<i;j++)

for(x=0;x<=148;x++);

}

/

名称 : ISP_ERASE()

功能 : EEPROM的扇区擦除

输入 : Address(擦除扇区的地址)

输出 : 无

/

void ISP_ERASE(Address)

{

ISP_ADDRL = Address;

ISP_ADDRH = Address >> 8;

ISP_CONTR = 0x83;

ISP_CMD = ISP_SECTOR_ERASE;

ISP_TRIG = 0x5a; //PDF手册中说先像 ISP_TRIG 中写入 0x5a, 然后写入 0xa5

ISP_TRIG = 0xa5;

_nop_();

_nop_();

}

/

名称 : ISP_READ()

功能 : 从EEPROM相应的地址中读出值

输入 : Address(想要读取EEPROM的地址)

输出 : Read_Data(从EEPROM读出的值)

/

uint ISP_READ(Address)

{

uchar Read_Data;

ISP_ADDRL = Address;

ISP_ADDRH = Address >> 8;

EA = 0;

ISP_CONTR = 0x83;

ISP_CMD = ISP_BYTE_READ;

ISP_TRIG = 0x5a;

ISP_TRIG = 0xa5;

_nop_();

_nop_();

Read_Data = ISP_DATA;

return Read_Data;

}

/

名称 : ISP_PROGRAM()

功能 : 实现EEPROM的字节编程

输入 : Address为编程的地址,Data_temp为想要编程的值

输出 : 无

/

void ISP_PROGRAM(Address, Data_temp)

{

ISP_DATA = Data_temp;

ISP_ADDRL = Address;

ISP_ADDRH = Address >> 8;

ISP_CONTR = 0x83;

ISP_CMD = ISP_BYTE_PROGRAM;

ISP_TRIG = 0x5a;

ISP_TRIG = 0xa5;

_nop_();

_nop_();

}

/

名称 : Main()

功能 : 主函数

输入 : 无

输出 : 无

/

void Main()

{

uint i;

uchar LED_Buffer = 0;

while(1)

{

for(i=0; i<100; i++)

{

LED_Buffer = ISP_READ(0x0000);

P0 = table[LED_Buffer % 10];

P2 = 1;

Delay_1ms(20);

P0 = table[LED_Buffer / 10 % 10];

P2 = 0;

Delay_1ms(20);

}

LED_Buffer++;

ISP_ERASE(0x0000); //注意:字节编程时必须要先要擦除整个扇区

ISP_PROGRAM(0x0000, LED_Buffer);

}

}

举个例子吧,如果说你在做一个项目,这个项目的代码很长,有5000多行,而且基本上裏面的同一个常量n就占了3000多行,如果说今后你要是想对这个常量n的值进行修改,如果在程序的开始没有定义一个#define

n,那么改起来不是很麻烦,3000多行啊,那不是要晕过去了~如果你事先定义了一个#define

n

‘常量值’,那么当你要修改程序内部的常量值时,只要修改n后面的常量值就等于把程序内部的要修改的相同常量值都改了,那就很方便了

在程序执行期间其值可以改变的量称为变量,变量类型又分为系统变量和用户自定义变量,用户自定义变量其实和系统变量含义是一样的,在学到结构化编程的时候,你就会明白自定义变量的意思了。系统变量分为四种,int整形变量,用户存放整数的变量,占4个字节的大小;float单精度浮点型,就是存放小数点的数值,占4个字节大小;double高精度浮点型,相对float而言,double保畱的小数点位数更精确,占8个字节的大小;char字符变量,主要存放字母,占1个字节的大小eg:“#define

n

10”c语言中这一句表示什么

表示n=10,在以下的程序中你可用n来表示数字10

这是一个宏定义,表示凡是在程序中出现的n变量,都被赋于值10。再纠正一下,在宏定义中,一般用大写。准确来说“#define

n

10”不是n=10的意思,

而是用10替换掉n,这是有区别的。

例如:#include

#define

n

a+b

void

main(){int

a=1,b=2;

printf

("%d",n5);}输出的是11,而不是15。

又例如:

#include

#define

n

(a+b)

#ifdef #define 是什么意思?

编译预处理结构

#ifdef

#define

#endif

为了有助于你理解举个ARM里的例子:

#ifdef _DMA1_Channel1

#define DMA1_Channel1 ((DMA_Channel_TypeDef ) DMA1_Channel1_BASE)

#endif /_DMA1_Channel1 /

这是ST库函数里面的一段

如果你自己编程要用到DMA1_Channel1 这个地址也就是((DMA_Channel_TypeDef ) DMA1_Channel1_BASE),只需要在你自己的函数的头文件里面

加上一句话 #define _DMA1_Channel1

然后把这个库函数包含进来就OK了

ifdef是什么意思

#ifdef是一句电脑程序语句。

可以用它区隔一些与特定头文件、程序库和其他文件版本有关的代码。

可翻译为:如果宏定义了语句1则执行程序2。

#ifdef __APPLE__是什么意思

#ifdef 是预编译命令

意思是如果程序中定义了 __APPLE__ 这个符号,则编译下列语句(#endif 或者#else之前的)

#ifdef _MSC_VER 是什么意思?

你问的VC++程序里面的吧,是用来标明程序版本号的,没什么很实际的用途。

define是什么意思

define

英 [dɪ'faɪn] 美 [dɪ'faɪn]

vt 定义;使明确;规定

n (Define)人名;(英)德法恩;(葡)德菲内

[ 过去式 defined 过去分词 defined 现在分词 defining ]

英文解释及例句:

V-T If you define something, you show, describe, or state clearly what it is and what its limits are, or what it is like 给…下定义; 解释

例:

The Convention Against Torture defines torture as any act that inflicts severe pain or suffering, physical or mental

《反酷刑条约》把酷刑定义为任何造成严重身心疼痛和受苦的行为。

有的时候为了程序的通用性,可以使用#define预处理宏定义命令,它的具体作用,就是方便程序段的定义和修改。

举个例子吧,如果说你在做一个项目,这个项目的代码很长,有5000多行,而且基本上裏面的同一个常量N就占了3000多行,如果说今后你要是想对这个常量N的值进行修改,如果在程序的开始没有定义一个#define N,那么改起来不是很麻烦,3000多行啊,那不是要晕过去了~如果你事先定义了一个#define N ‘常量值’,那么当你要修改程序内部的常量值时,只要修改N后面的常量值就等于把程序内部的要修改的相同常量值都改了,那就很方便了

在程序执行期间其值可以改变的量称为变量,变量类型又分为系统变量和用户自定义变量,用户自定义变量其实和系统变量含义是一样的,在学到结构化编程的时候,你就会明白自定义变量的意思了。系统变量分为四种,int整形变量,用户存放整数的变量,占4个字节的大小;float单精度浮点型,就是存放小数点的数值,占4个字节大小;double高精度浮点型,相对float而言,double保畱的小数点位数更精确,占8个字节的大小;char字符变量,主要存放字母,占1个字节的大小

define的单词意思“定义”。您所说的应该是C系语言中的宏定义。

define,无参宏定义的一般形式为:#define 标识符 字符串

define 函数定义一个常量。

常量类似变量,不同之处在于:

在设定以后,常量的值无法更改。

常量名不需要开头的美元符号 ($)。

作用域不影响对常量的访问 。

常量值只能是字符串或数字。

作用:

被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。

宏定义的作用范围仅限于当前文件,即file1c中定义 #define PI 314,在file2c中该宏定义不起作用;通过将#define PI 314定义在monh中,file1c和file2c分别#include "monh"的方式,该宏定义在file1c和file2c中都起作用。

在C或C++语言中,“宏”分为有参数和无参数两种。

define

[英][dɪˈfaɪn][美][dɪˈfaɪn]

vt

规定; 使明确; 精确地解释; 画出…的线条;

vi

(给词、短语等)下定义,构成释义;

网络

解释; 限定; 下定义;

第三人称单数:defines现在分词:defining过去式:defined过去分词:defined

1

Please listen while I define your duties

在我规定你的职责时,请仔细听好。

2

It 's important to define the o terms

如何定义“紧缩”和“增长”很重要。

define as是什么意思

define as

定义为

双语例句

1

These o elements are easy to define as Eclipse core expressions inthe plug-in xml file

这两个元素可以很容易地定义为插件xml文件中的Eclipse核心表达式。

2

The beauty of our country or at least all of its south of North Scotland isas hard to define as it is easy to enjoy

我们国家的美,至少北苏格兰以南所有的地方之美欣赏容易,描绘难。(直择:欣赏起来容易,说明白难。)

#ifdef 在VC中是什么意思啊

当标识符被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。

其中#else部分也可以没有,即:

#ifdef

程序段1

#denif

这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。

您好 !

安卓手机Root后要直接在手机内部目录

修改安卓ROM系统里的apk程序

建议您安装使用RE, 在RE界面内更改framework-resapk

希望这能帮到您 !!

程序编译完成后就不能修改了

即使是免费软件,没有开放源代码,修改也是违法的。

为了防修改,发布软件时一般都会加壳,就这一项,够破解一阵子了

脱壳后,反汇编等,非高手都搞不定

程序不像word文档那样,可以随便改,有时一个字节的改变可能就没法用了

这个要分是用什么ROm的芯片还是单片机做的。如果是可编程控制器做的随时都可以用编程器改写程序。如果是可擦写的F EPROM写的程序,可以用紫外灯擦除原程序后继续使用编程器来再次写入。对于双列直插型的存储体,如果加密的还需要先解密才能再次写入。

以上就是关于STC89C51如何用程序修改单片机内部的eeprom,最好有C语言的例子,多谢先!!全部的内容,包括:STC89C51如何用程序修改单片机内部的eeprom,最好有C语言的例子,多谢先!!、【C语言】“define”是什么意思代表什么有什么用、#ifdef #define 是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10167125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存