找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8278|回复: 16
打印 上一主题 下一主题
收起左侧

新手请教51单片机头文件问题

  [复制链接]
跳转到指定楼层
楼主
新手请教,请各位大侠,专家指点 多谢
51系列单片机 ,用C语言编写
要写头文件,有的写#include<reg51.h>   有的写#include<AT89X51.H.>  
这两个文件有什么区别么?分别用在哪个场合?
我现有AT89C2051 用C写头文件用#include<reg51.h> 好还是#include<reg2051.h> 好?
AT89C51与AT89C2051 I/O口差别大 AT89C2051没有P0, P2口 P1.0与P1.1口用途也不一样
AT89C2051头文件用#include<reg51.h>会不会出异常?


IMG_20170202_213745.jpg (490.63 KB, 下载次数: 120)

IMG_20170202_213745.jpg

IMG_20170131_232429.jpg (6.38 MB, 下载次数: 110)

IMG_20170131_232429.jpg

20081018192841387.gif (69.17 KB, 下载次数: 89)

20081018192841387.gif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 5#
ID:137736 发表于 2018-10-14 17:40 | 只看该作者
把头文件打开对照着看看。如果只用通用的核心部分,头文件选择不对也能工作。最好头文件一致,否则出不可预料的问题。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

来自 7#
ID:362076 发表于 2018-10-14 23:43 | 只看该作者
头文件主要是对单片机片内寄存器地址的声明和定义,以及一些位定义等,如果两个单片机的寄存器地址是一样的,当然可以共用同一个头文件,传统的51就是这样,甚至随着代数更新,例如P口,也是有寄存器地址保持不变的,目的是尽可能向旧版本保持兼容,但是当使用一些单片机的特殊资源的时候,就需要手动添加寄存器(sfr语句),或者修改、更换头文件,例如,在STC增强型51中使用P4口的时候,传统的reg51.h里没有对于P4口的位定义,这个时候就需要手动添加(或者更改适配头文件)。

再举个例子,当使用STC15系列单片机的时候,比如IAP15W4K48S4,就需要包含STC15.H这个头文件;在使用STC12C2052的时候,就需要包含STC12C2052.h,这些都是根据你使用的单片机进行更改的。






我想你应该明白了,如果还有困惑,我再补充一个例子,当使用STC89C52的时候,严格来说,应该包含的是STC89C5xRC.H,而不是reg52.h。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

沙发
ID:161488 发表于 2017-2-3 12:51 | 只看该作者
不是自己可以定义么
回复

使用道具 举报

板凳
ID:10193 发表于 2017-2-4 07:53 | 只看该作者
把头文件打开对照着看看,就知道区别在哪里了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:328014 发表于 2018-10-14 16:51 | 只看该作者
reg51.h需要定义sbit比较麻烦
回复

使用道具 举报

6#
ID:409602 发表于 2018-10-14 20:27 | 只看该作者
接口都是自己定义的吧
回复

使用道具 举报

8#
ID:387733 发表于 2018-10-15 09:18 | 只看该作者
现在新发展的51单片机一般都会向下兼容传统51单片机,所以对于一般应用,如果只使用传统51单片机的功能和端口,reg52.h 完全可以用的。其实对于简单应用,不用头文件也可以的。
回复

使用道具 举报

9#
ID:372912 发表于 2018-10-20 18:48 | 只看该作者
#include<AT89X51.H.>里面I/O口是已经定义好了,比如你用#include<reg51.h> 还要定义I/O口的地址,但是#include<AT89X51.H.>,所以说#include<AT89X51.H.>的范围更广一些,或者说更好用一些,前提是,你得熟悉他的文件里的各种设置
回复

使用道具 举报

10#
ID:388197 发表于 2018-10-20 23:12 | 只看该作者
任何51内核的单片机包含<reg52.h>都不会有问题.
头文件里一般都是定义一些特殊功能寄存器.就跟买个新手机的说明书一样.
刚开始学的时候看不明白头文件很正常,不必再这上面花太多时间,看看例程照着葫芦画瓢即可.
等你慢慢熟练一些寄存器的作用,回头去看,会发现可以轻松看懂.甚至可以看着手册写自己风格的头文件.
回复

使用道具 举报

11#
ID:297670 发表于 2018-10-21 08:10 | 只看该作者
AT89X51.h里面已经定义好了io口,你可以直接调用!reg52.h需要自己定义!
回复

使用道具 举报

12#
ID:653173 发表于 2020-4-6 18:13 | 只看该作者
ISIS为啥仿真不起呢?第四位不亮,第二位闪烁亮;a        f        b        g        c        dp        d        e分别为
P1.7        P1.6        P1.5        P1.4        P1.3        P1.2        P1.1        P1.0
回复

使用道具 举报

13#
ID:721169 发表于 2020-4-6 20:10 来自手机 | 只看该作者
初学者看热闹
回复

使用道具 举报

14#
ID:723682 发表于 2020-4-6 22:09 | 只看该作者

现在新发展的51单片机一般都会向下兼容传统51单片机,所以对于一般应用,如果只使用传统51单片机的功能和端口,reg52.h 完全可以用的。其实对于简单应用,不用头文件也可以的。
回复

使用道具 举报

15#
ID:573999 发表于 2020-4-8 21:44 | 只看该作者
一般就reg51.h够了,除开MCU有一些特别的功能寄存器就自己加相关的宏定义到程序中
回复

使用道具 举报

16#
ID:464541 发表于 2020-4-9 09:55 | 只看该作者
最好单片机与头文件相对应
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表