刚从89系列转到8H看到很多头文件不明白怎么办
本帖最后由 DebugLab 于 2024-8-22 09:34 编辑大家晚上好,首先感谢各位热心网友耐心读完我的帖子。我之前在学校都是从AT89开始学习单片机编程,并且还用汇编开始,后来转移到STC89系列,功能几乎一模一样,只是STC89支持串口下载。我都只学到定时器中断,后面的串口通讯和ADC0804和DAC都要用模块的,我都没有玩过。1602用AT89试过,就是根据规格书参照例程输入相关指令,基本上没什么难度。像跑马灯、数码管独立按键和矩阵按键一些基本的用法了解,能够看到教程里面的程序。现在一下子转移到STC8H,一个简单的程序都很多头文件,我一下子手忙脚乱,很多语句我都看不懂怎么办?我担心学不会。像截图中这个简单的跑马灯,在STC8H里面,都不知道这些头文件干嘛用的。而STC89系列就很简单,没有这么多头文件,只有一个“include<reg52.h>”最多也就是加了#define uint unsigned int等等这些宏定义我都懂。就是到了STC8H一下子就手忙脚乱,我都对STC89系列还放不下,担心STC8H学不会。大家刚开始转过来有没有同样的困惑?像图片中这个,头文件格式都与之前的不一样,是不是因为头文件保存的路径不一样?像这个都头文件全部保存在一个文件夹里面,如图所示。
我对AT89和STC89有种依依不舍的感觉,之前网上下载的视频教程很多都还没开始看。 头文件一样都是一个啊。都是一个stc8h.h,多的是其它定义,usb是usb功能。 其实学习STC89和STC8H,方法是一样的
STC89功能简单:外设资源少(头文件需要定义的内容少),运行速度慢(12T单片机),支持主频较低
STC8功能复杂:外设资源多(头文件需要定义的内容多),运行速度快(1T单片机),可达45MHz
如上图两处箭头处
写法1: #include <头文件名.h> :尖括号一般用于系统自带的标准头文件,像stdio.h、intrsins.h等等
用尖括号时,编译器会从系统库文件夹中查找该头文件,如果没有找到机会报错
写法2: #include "头文件名.h":双引号一般用于自定义头文件,比如delay.h 、I2C.h等等
用双引号,编译器会从项目文件夹根目录查找该文件
因为官方例程,都是伴随着新型号单片机而推出的
新单片机刚推出时,很多人的Keil中还没有添加STC8H的头文件(新单片机头文件,需要用STC-ISP软件添加到Keil中)
比如当Keil库中没有stc8H.h头文件,无论是用 #include <STC8H> 还是 #include "STC8H.h",都会报错
为了适应所有情况(有些人添加了头文件到KEIL中,有些没有),在例程包COMM文件夹中放一个STC8H.h头文件
例程所有代码,都用#include 包含comm文件中的这个STC8H.h头文件,就不会有问题
#include "../comm/stc8h.h",是使用了相对地址,
如上图中,
两个点+反斜杠,代表:从当前目录返回上一级
comm+反斜杠,代表:在comm文件夹中
整体的意思,就是从当前目录(项目所在文件夹(跑马灯文件夹)),返回上一级目录,在comm文件夹中,查找stc8h.h
用STC-ISP软件,将STC8H头文件添加到KEIL中以后,就可以直接用 #include <stc8h.h> 或 #include "stc8h.h"
布丁橘长 发表于 2024-8-22 01:16
其实学习STC89和STC8H,方法是一样的
STC89功能简单:外设资源少(头文件需要定义的内容少),运行速度慢( ...
你打开头文件看看,只是多了很多定义 布丁橘长 发表于 2024-8-22 01:16
其实学习STC89和STC8H,方法是一样的
STC89功能简单:外设资源少(头文件需要定义的内容少),运行速度慢( ...
解答 专业 {:5_332:} 这是用了usb库函数,需要的一些定义,可以不用
新建工程,直接用stc8h.h,初始化时候P_SW2|=0x80,再PxMx=0x00(x代表多个),就和89系列一样用了 DebugLab 发表于 2024-8-22 09:18
这是用了usb库函数,需要的一些定义,可以不用
新建工程,直接用stc8h.h,初始化时候P_SW2|=0x80,再PxMx=0 ...
好的,非常感谢,如果我把P1M1=0x00;P1M0=0x00 就是把P1口全部设置成准双向IO口对不对?如果把P1M1=0x01;P1M0=0x01 就是把P0.1设置成推挽输出对吗? 布丁橘长 发表于 2024-8-22 01:16
其实学习STC89和STC8H,方法是一样的
STC89功能简单:外设资源少(头文件需要定义的内容少),运行速度慢( ...
{:4_175:}非常感谢,我回头好好看看。 Bee_XXM 发表于 2024-8-22 09:32
好的,非常感谢,如果我把P1M1=0x00;P1M0=0x00 就是把P1口全部设置成准双向IO口对不对?如果把P1M1=0x01 ...
推挽P1M1=0x00,P1M0=0x01
页:
[1]
2