前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

reg52.h文件中的sfr到底是个啥玩意?

qiguaw 2024-10-04 01:51:25 资源文章 18 ℃ 0 评论

关注不迷路ヾ(≧O≦)〃嗷~

写到现在,感觉这一个小系列终于快结束了(我有预感。本节结束不了、、ヽ(°◇° )ノ),在最初开始这个小系列时,感觉知识点就这么点,没想到能写这么多(写前几篇的时候,感觉太累了,想放弃,但是反过来想一下,这么就容易放弃,怎么能成功,就像小说中一样,我们看小说感觉主角自带主角光环,干啥都牛的一批,但我们却将主角动不动就闭关修炼的情节过滤掉,和光环比起来,过程总是显得很平凡。“吃得苦中苦方为人上人”连通往成功的苦处都经历不了,怎么能达到终点,我们学习也一样,慢慢来,慢慢积累,不放弃,定能成功ヾ(???ゞ))

从上图这个sfr讲起

结合这两张图,我们能发现一点猫腻(需要有火眼金睛才可以啊!!),比如图二中,IE对应的地址是0A8H,而图一中有 sfr IE = 0xA8;(其他的也是,自己可以对对,我就不写了) ,看到这里不由嘀咕一声,这个sfr什么鬼??那下面再交给大家一点新技能、、(注意学,很重要!!!)(都是修仙经验,赶快拿着小本本记着^~^)

这个流程自己一定要多走几遍!!!!

打开之前的演示文档,或者自己创建一个

打开reg52.h(鼠标放在左面那个箭头处,右键,选择第二个)

如图所示,添加一行(不要问我为啥添加这一行,我就是看这个顺眼ヾ(=???=)?喵?)

返回主程序,添加如图示三行(各位大佬也别说我不会命名变量了,我知道这个事啊、、)

点击编译(注意,这里一定要点击编译,不然没有仿真效果)

点击该图标,进行仿真(激动不,第一次keil uVision上的仿真啊!!)

这里只讲一下相关的操作 1 2 3,其他的可以自行百度一下

1 是单步仿真(你每点击一次,程序就运行一个程序步骤(体会一下单步的含义!!要学会望文生义ヾ(?ω?`?)))

2 是添加一个监测窗口,在这个窗口里可以监测你定义的变量数值(就是监督的意思,小伙子,要好好学习,莫要被查水表啊^~^)

3 是查看单片机中的存储器中的数值(比如查看地址为0xA8的存储器中的数值)

按照操作添加监视窗口

添加监视变量,我们之前定义的u,(不遵守法律的话,这个地方会变成你的名字奥^~^)

添加内存监视窗口

在地址中输入 D:0xA8;

这里讲一下前面为什么会加“D:”,而不是直接输入0xA8。

在这里D、 I、 X、 C分别代表着直接寻址的片内RAM、间接寻址的片内RAM、扩展的外部RAM和ROM。我们需要查看直接寻址的片内 RAM(关于直接寻址和间接寻址我还没有讲到,各位可以查一下百度),因此用D。

在仿真前先看一下内存中0xA8的数值,如图,此时为0

仿真前,看一下变量u的值,此时为0

单步仿真,点击两次

仿真是的箭头达到如下图所示位置

查看位置为0xA8的存储器的值

查看变量u的值

到这里我们分析一下,在程序中,好像没有对地址0xA8进行操作,那么该地址内的数值是怎么改变的呢??我们只对IE进行了操作,那IE又是什么呢?

在reg52.h中,好像有 sfr IE =0xA8;这样的话,好像有点头绪了,通过使用sfr,可以使我们对IE所代表的存储位置的存储器的内容进行操作(那如果定义sfr TE =0xA8,的话,会不会有同样的效果,答案是对的,我们已经试验过,只不过是用读的方式)。

这么一来,大家对程序的编写是不是有了一个大概了解了。我在最初学单片机时,在这个地方一直迷茫,我写程序也没有对地址进行操作啊,那程序是怎么在单片机中执行的呢???因为知道这里比较难懂,所以才提前写一下^~^。


这些是用keil uVision 进行仿真最基础的一部分,大家一定要练习一下。

下一节就剩下“程序是如何运行”了,这个系列终于要结束了ヾ(???ゞ)。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表