STC头文件的使用
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里),直接定义好各个寄存器初值,这样开机就不需要初始化了
这两种哪种更好,更合乎规范呢? #include< > 引用的是编译器的类库路径里面的头文件。
编译器定义的自带头文件引用在 C:\Keil\c51\INC\ 下面,则 #include<stdio.h> 引用的就是 C:\Keil\c51\INC\stdio.h 这个头文件,不管你的项目在什么目录里,
#include" " 引用的是你程序目录的相对路径中的头文件。
用双引号将要包含的文件的文件名括起来。这种方法指示预处理程序先到当前目录下寻找文件,再到预定义的缺省路径下寻找文件。 补充一点,刚刚发现,sfr这个作用范围似乎也只有一个.C文件,如果一个寄存器在多个.C文件当中被赋值的话,就得在每个.C文件里都写一遍?如果是写到头文件里的话,只需要include就可以 有几次写成各个独立文件的程序在KEIL内编译总出问题,一气之下都搞在一起什么问题都没了。所以许老师的写风还是很值得研究的,看他的程序还是感觉很有些根基的,建议初学的哥哥们重视,多读高手作品提高最快。 w6955 发表于 2018-6-9 19:07
有几次写成各个独立文件的程序在KEIL内编译总出问题,一气之下都搞在一起什么问题都没了。所以许老师的写风 ...
程序小没问题,程序复杂就不行了,写一起不是办法 1996 发表于 2018-6-9 19:31
程序小没问题,程序复杂就不行了,写一起不是办法
恰恰相反,简单点的程序写成分开的没问题,大的程序就不行了这个可能是keil的一个毛病。没办法就把他们合成到一起,没事了。所以后来简单一点就分开写,大的就合起一部分。 w6955 发表于 2018-6-9 20:51
恰恰相反,简单点的程序写成分开的没问题,大的程序就不行了这个可能是keil的一个毛病。没办法就把他们合 ...
你看过32的程序么:L ,写成一个试试,GPIO初始化都半屏幕 本帖最后由 w6955 于 2018-6-9 21:07 编辑
keil C51有这个问题,AVR的没见到这个问题。再有32位机为什么不用库?
页:
[1]