矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2729|回复: 7

STC头文件的使用

[复制链接]
     
发表于 2018-6-9 15:45:52 | 显示全部楼层 |阅读模式
        STC的开发板买了好几年,最近才开始学,普通的使用方法,基本上是学会了,最近在看大道必成的示波器,以及许老师的ESR表,都是开源的,但是对于头文件和寄存器的配置这一块,还是搞不太懂
        一,
        #include <123.h>和#include “123.h”这两种写法有什么区别,对应什么情况使用?
        二,
        例如 #define uint unsigned int 这种语句,作用范围是不是只有一个.C文件?
        三,
        许老师的程序里,是把 sfr 这个对寄存器的定义直接写到.C文件里的,头文件只有reg52.h,大道必成的是写到STC12C5A60S2.h文件里的,如果两边都写了,编译时候提示重复定义,过不去,写到.C文件里固然方便,但是程序太长看着难受,而且这个头文件一般都是直接添加官方给的,对比两个程序我发现,大道必成的程序里有很多初始化函数,初始化函数里又对寄存器重新赋了值,开机,初始化,运行,这么一个顺序,而许老师的写法里就找不到初始化函数(屏幕的除外)
        这个问题我是这样理解的,不知对不对:
        方案1:使用官方默认的头文件,然后,编写一个初始化程序,重新对寄存器赋值,main函数开头就一堆初始化函数,然后再while(1)
        方案2:不使用官方头文件,直接编写一个自己的头文件(或者是写到.C里),直接定义好各个寄存器初值,这样开机就不需要初始化了
这两种哪种更好,更合乎规范呢?
     
发表于 2018-6-9 17:40:10 | 显示全部楼层
#include< > 引用的是编译器的类库路径里面的头文件。
      编译器定义的自带头文件引用在 C:\Keil\c51\INC\ 下面,则 #include<stdio.h> 引用的就是 C:\Keil\c51\INC\stdio.h 这个头文件,不管你的项目在什么目录里,
#include" " 引用的是你程序目录的相对路径中的头文件。
      用双引号将要包含的文件的文件名括起来。这种方法指示预处理程序先到当前目录下寻找文件,再到预定义的缺省路径下寻找文件。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2018-6-9 15:50:45 | 显示全部楼层
补充一点,刚刚发现,sfr这个作用范围似乎也只有一个.C文件,如果一个寄存器在多个.C文件当中被赋值的话,就得在每个.C文件里都写一遍?如果是写到头文件里的话,只需要include就可以
回复 支持 反对

使用道具 举报

     
发表于 2018-6-9 19:07:47 | 显示全部楼层
有几次写成各个独立文件的程序在KEIL内编译总出问题,一气之下都搞在一起什么问题都没了。所以许老师的写风还是很值得研究的,看他的程序还是感觉很有些根基的,建议初学的哥哥们重视,多读高手作品提高最快。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-9 19:31:22 | 显示全部楼层
w6955 发表于 2018-6-9 19:07
有几次写成各个独立文件的程序在KEIL内编译总出问题,一气之下都搞在一起什么问题都没了。所以许老师的写风 ...

程序小没问题,程序复杂就不行了,写一起不是办法
回复 支持 反对

使用道具 举报

     
发表于 2018-6-9 20:51:42 | 显示全部楼层
1996 发表于 2018-6-9 19:31
程序小没问题,程序复杂就不行了,写一起不是办法

恰恰相反,简单点的程序写成分开的没问题,大的程序就不行了这个可能是keil的一个毛病。没办法就把他们合成到一起,没事了。所以后来简单一点就分开写,大的就合起一部分。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-9 20:55:35 | 显示全部楼层
w6955 发表于 2018-6-9 20:51
恰恰相反,简单点的程序写成分开的没问题,大的程序就不行了这个可能是keil的一个毛病。没办法就把他们合 ...

你看过32的程序么 ,写成一个试试,GPIO初始化都半屏幕
回复 支持 反对

使用道具 举报

     
发表于 2018-6-9 21:05:31 | 显示全部楼层
本帖最后由 w6955 于 2018-6-9 21:07 编辑

keil C51有这个问题,AVR的没见到这个问题。再有32位机为什么不用库?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 15:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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