单片机的c语言中,#include <AT89X52.h>作用?它和#include<reg52.h>区别?

为什么在程序前面加上头文件:#include<AT89X52.h>#include<reg52.h>然后用sbit指令定义:sbitPA0=P0^0;sbitPA1=P0... 为什么在程序前面加上头文件:#include <AT89X52.h>
#include<reg52.h>
然后用sbit指令定义:
sbit PA0= P0^0;
sbit PA1= P0^1;
就报错呢?
error c231:'P0':redefinition
删掉#include <AT89X52.h>这个头文件就好了。

#include <AT89X52.h>这个头文件的作用是什么?我看有的程序上加上这个了,有的就没加,我用的单片机是at89s52,所以我就加上了,结果编译出了一堆错误。
它和#include<reg52.h>有什么区别?用哪个好点?
展开
 我来答
tattackor
2015-10-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:860万
展开全部
1、AT89X52.h指的就是s或c都可以用。C和S在看门狗、定时器上面有一定的区别,因而实际应用该单片机时要包含对应的头文件。而reg52.h是所有52单片机公共部分所通用的头文件,一般应用情况都能满足。
2、reg51.h和reg52.h实质上是没有区别的,都是一些特殊功能寄存器的申明。当然,51里有的52中都有,但反过来就未必了。这是因为52是51的升级版。at89x52.h中有些特殊功能寄存器没有申明,可能会不符合很多人的习惯。建议用reg52.h,reg51.h。可以打开那几个头文件对比一下具体有哪些区别。
叉烧包005
2013-06-07 · 超过14用户采纳过TA的回答
知道答主
回答量:158
采纳率:0%
帮助的人:52.5万
展开全部
你是用keil? 很简单你把鼠标移到<AT89X52.h>才、,右键技能看到里面的内容了。你所报的错是因为,<REG52.H>和<AT89X52.h>头文件中,一些相同的寄存器被定义两次。希望被采纳,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feibx123
2013-06-07 · TA获得超过164个赞
知道小有建树答主
回答量:239
采纳率:0%
帮助的人:149万
展开全部
只是头文件而已,可以调用头文件里所定义的东西,你定义了2中单片机,就会报错。。和调用数学公式一样,需要+一个数学公式头文件。你也可以自己写一个程序,如何直接+上你写的文件,就可以调用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-06-07 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38375
国家科技进步奖

向TA提问 私信TA
展开全部
区别是52有定时器2,51没有
更多追问追答
追问
没问51,看清楚再回答!这两个都是52
追答
哦sorry,AT89X52是ATMEL专用头文件,定义的东东较多,REG52只定义了一些基本的寄存器和引脚。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式