3544|8

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用c编单片机用到的地址 [复制链接]

  由于学校里面教的时候用的是汇编编的程序,c都是我自学的,所以在编程序的时候遇到一个很怪的问题怎么都想不通
比如我们用汇编的时候直接用TCON,但是用c编的时候却要在申明变量的时候指定TCON的地址 SFR TCON=OX88H;
但是在用标准c编程序的时候却是直接申明一个变量就是了,就算是编译器自动付值地址;那在用 SFR 的时候也应该是申明一个指针变量才对啊???(SFR *TCON=88H)
我仔细看了一下 SFR 确实是声明一个寄存器变量,而且后面程序引用的时候还是TCON=xxxx(为TCON付值),那就明确他不是一个地址了,既然不是地址那在申明的时候又为什么能够为它付一个地址值了?
我打开‘reg51.h'看到的也是SFR TCON=OX88H 的申明;
这就不明白了。到底TCON 是变量还是变量地址,如果是地址为什么不用申明地址指针,还在后面直接引用;不是地址的话那又为它付地址值,

最新回复

--------------这是他定的标准,你何必无故去怀疑呢?楼主,哈哈,就像C语言为什么会这么写。  详情 回复 发表于 2008-10-4 13:19
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
datasheet 说是 特殊功能积存器啊

 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
SFR TCON=88H
这就是C51的独特之处,这表示对TCON声明地址.
以后使用 TCON=xxxx就是对TCON进行赋值了.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
我的矛盾就是为什么在用标准c 的时候申明部分变量与地址的申明是不同的,但是单片机里面却可以是变量与地址都用一次就行了,想不通啊
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

5
 
很难理解吗?
SFR 就是定义了一个指定了硬件地址的变量,一条特殊的语句.和51的硬件是紧密相关的,只能是0x00到0xff.是C51独有的.
C语言中变量不允许(或者说不推荐)直接指定地址,而是由编译器来指定变量地址.
这是C51和C的区别.
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
51单片机,一般在头文件中已经把特殊功能寄存器的地址定义好了,我们在使用的时候直接读写寄存器名就行了,
你在用汇编写的时候,是把数据直接送到寄存器的地址还是把数据送到寄存器成名呢?如果你是直接把数据 mov 到了寄存器名称,那么看看你的头文件,那里有没有给寄存器定义地址
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
打开reg51.h,reg52.h,特殊功能寄存器在51系列中也属于地址因为累加器也是一个地址,因为0x??不好记,而你学习的时候已经学过单片机有累加器,所以可以把特殊功能寄存器的地址先定义你已知的名称你就可以很快速掌握这个编程工具,是不是你想开发一个编程器SFR定义一个地址是怎样操作,你就不可能再用SFR定义一个硬件地址,如果用汇编的话,有的已经编程器的任务,如果想知道很清楚,就用机器码?在内存中放好数据连接好电线,打开电源程序就可以知道你的数据是不是放的正确.不过这个时代已经成为历史.
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
LZ,你理解成:C51就是这样

这就可以了

呵呵
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 lbing7 的回复:
LZ,你理解成:C51就是这样

这就可以了

呵呵


--------------这是他定的标准,你何必无故去怀疑呢?楼主,哈哈,就像C语言为什么会这么写。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表