keil c 中的sfr定义和defne的定义有什么区别

如题... 如题 展开
 我来答
百度网友8e1a48c92
推荐于2018-04-14 · TA获得超过1322个赞
知道小有建树答主
回答量:445
采纳率:0%
帮助的人:502万
展开全部
sfr 是KEIL中用来定义硬件寄存器地址的关键字,具有定义硬件特性。举个例子:
sfr P0 =0x80
(C语言,这样就定义了51系列MCU中0x80地址,在编程时可以用P0符号代替地址0x80,具有定义硬件特性)
在汇编中和DATA相似,举例子:
P0 DATA 80H
(汇编语言,说明和上面一样)

define 是KEIL中预处理命令,作为define后面字串的文本代替,一般没有定义硬件的特性,,在使用时,前面必须加上 # 号,编译器在编译时,先查找代码中的宏定义自串,然后在用在宏后面的数据去替代,例子:
#define pi 3.1415926
(以后使用中,可以用pi来代替3.1415926)
在使用define定义宏的时候,是没有数据类型指定的,而在调用的时候被相关数据类型转换。

Good Luck.
车景涛
2008-09-15
知道答主
回答量:6
采纳率:0%
帮助的人:1万
展开全部
sfr是定义单片机固有的的寄存器,接口.像P1,TCON这样的.define是定义外部接口 并用字符代替
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友aaf474f66
2008-09-14 · 超过54用户采纳过TA的回答
知道答主
回答量:219
采纳率:0%
帮助的人:171万
展开全部
我理解为SFR用来直接描述硬件地址,而define是文字替换。
SFR不是ANSI C 里规定的,只有在keil里看到过,codeworrior里没看到过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大头鱼俭俭
2008-09-20 · 超过15用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:0
展开全部
sfr 说明被定义的是且只能是特殊功能寄存器,special function register!
define 定义的是则比较宽泛咯!可以指令·空间·常量等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dc3c312
2018-07-11
知道答主
回答量:65
采纳率:0%
帮助的人:4.3万
展开全部
define 是KEIL中预处理命令,作为define后面字串的文本代替,一般没有定义硬件的特性,,在使用时,前面必须加上 # 号,编译器在编译时,先查找代码中的宏定义自串,然后在用在宏后面的数据去替代,例子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式