- 说明:本章讲解的程序的编译、下载、运行和仿真适用于开发板配套的所有例程。
-
- 编译工程
这里特别说明一下,本章的讲解的重点是Keil软件的使用,因此,我们直接在“main.c”文件中输入“实验2-1-1:点灯实验”的代码,至于代码的编写和原理在后续的章节会讲解的。
图1:3种编译方式
我们可以看到,Keil C51的编译按钮共有3个,从左到右分别是: Translate,Build,Rebuild三个编译按钮,他们的区别如下:
- Translate(按钮1):是编译当前打开的活动文档。
- Build(按钮2):增量编译,编译工程中上次修改的文件及其他依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,他会直接调用Rebuild All。
- Rebuild(按钮3):全部重新编译。
通常,我们用的是Build和Rebuild。编译后,注意观察信息窗口输出的信息,若输出信息提示无错误表示编译成功。
图2:编译信息
编译成功后会生成HEX文件“led_blinky.hex”,HEX文件位于工程的“Project\Objects”文件夹。有了HEX文件,我们即可使用STC-ISP软件将HEX文件烧写到开发板中运行。
-
- 下载运行
程序烧写的步骤包括配置STC-ISP软件参数、打开HEX文件和烧写,详细流程如下。
- 配置STC-ISP软件参数
打开STC-ISP软件,主要设置项目如下图所示。
图3:配置STC-ISP软件参数
- 选择单片机型号
这里要根据实际使用的单片机型号选择,如开发板主控单片机是STC8A8K64D4,应选择:STC8A8K64D4;如开发板主控单片机是STC8A8K48D4,应选择:STC8A8K48D4。
- 选择串口号
选择开发板USB转串口枚举的COM口,可以在电脑的设备管理器中查看COM口端口号,这一点在《第二章:搭建开发环境》中的“安装USB转串口驱动”小节讲过,不清楚如何查看COM口端口号的读者可以参看这一节。
- 设置晶振频率为24MHz
本教程配套的例子使用的时钟源均为片内时钟,频率为24MHz,因此IRC频率应设置为24MHz,否则,程序下载后无法正常运行。
- 勾选“复位脚用做I/O口”
STC8A8K64D4单片机片内集成了复位电路,用户可以通过此设置项选择使用片内复位或者外部复位,使用片内复位时,无需搭建外部复位电路。
- 使用片内复位:勾选此项。勾选此项,程序下载后,STC8A8K64D4单片机的P5.4口可以作为普通的IO口使用。
- 使用外部复位:不勾选。不勾选此项,程序下载后,单片机P5.4口则被使能为外部复位引脚,此时P5.4口不能再作为普通IO口使用,而对开发板再次下载程序就需要使用外部复位电路给P5.4复位引脚复位信号以实现下载。开发板有外部复位电路,需短接开发板J26端子的RESET与P54,实现外部复位下载。
- 勾选“每次下载前都重新装载目标文件”
勾选后,每次点击“下载/编程”按钮,STC-ISP软件会重新读取选定的HEX文件。这一条在开发的过程中一定要勾选,否则,当我们重新编译程序后,生产的HEX文件内容已经改变,但是下载时仍然下载的是STC-ISP软件缓存的HEX文件,而不是重新编译生产的HEX文件。
- 打开待下载的HEX文件
如下图所示,点击“打开程序文件”按钮,在弹出的窗口中导航到HEX文件目录,选中HEX文件后打开即可。
图4:打开待下载的HEX文件
- 烧写
开发板支持自动冷启动下载和手动冷启动下载,可通过J4端子的跳线切换这2种下载方式,开发板出厂默认设置的是自动冷启动下载。
- 自动冷启动下载
通过开发板上的J4端子将下载方式设置为自动冷启动,之后点击STC-ISP软件上的“下载/编程”按钮即可启动下载。下载完成后,信息窗口会提示下载成功与否,如下图所示。
图5:自动下载操作流程
下载成功后,观察开发板,会看到指示灯D3闪烁。
- 手动冷启动下载
手动冷启动下载需要我们在下载的时候按一下冷启动按键,具体步骤如下:
点击STC-ISP软件上的“下载/编程”按钮,点击后,STC-ISP软件开始检测单片机,,这时,我们需要按一下开发板上的冷启动下载按键S2,启动下载。下载完成后,信息窗口会提示下载成功与否,如下图所示。
图6:手动下载操作流程
下载成功后,观察开发板,会看到指示灯D3闪烁。
-
- 仿真运行
仿真调试对于开发人员来说,是一扇通向嵌入式系统内部的窗户。通过仿真,开发人员可以单步执行程序、观察程序运行结果与中间值,从而可以大大提高单片机的编程效率和效果。
- 说明:仿真时会占用单片机的串口1(P3.0和P3.1引脚),请务必确保待仿真的程序中不可以有对串口1的操作。
STC8A8K64D4系列单片机仿真时需要分别对Keil C51和STC-ISP软件进行配置,详细的步骤如下。
-
-
- 配置Keil C51
-
图7:Keil C51中的配置
如上图所示,Keil C51中需要配置的项目如下:
- 点击魔术棒,打开工程配置窗口。
- 在“Debug”页面,设置完下面两项后点击“Settings”按钮。
- 勾选“Use”并选择“STC Moniotor-51 Driver”。
- 勾选Run to main():勾选后,仿真时,程序会自动运行到main()函数。
- 点击“Settings”按钮后会打开端口设置窗口,在该窗口中选择“COM”并设置正确的COM口号和波特率(设置为115200bps)。
设置完成后,点击“OK”按钮保存设置。
-
-
- 配置STC-ISP软件
-
STC-ISP软件中需要将STC8A8K64D4设置为仿真芯片,如下图所示。
图8:设置STC8A8K64D4为仿真芯片
- 说明:如果设置的下载方式是手动冷启动下载,点击“将所选目标单片机设置为仿真芯片”按钮后,需要按一下冷启动按键S2。
-
- 仿真
-
完成上述的设置后,点击Keil C51中的仿真按钮即可进入仿真界面。
图9:点击仿真按钮,进入仿真
仿真界面如下,因为之前我们勾选了Run to main():勾选后,仿真时,程序会自动运行到main()函数。
- 说明:如果设置的下载方式是手动冷启动下载,点击仿真按钮后,需要按一下冷启动按键S2。
图10:仿真界面
仿真时,常用的运行按钮如下图所示,通过这些按钮,我们可以单步、全速运行或者复位程序。
图11:仿真常用的运行按钮
上图中,1~4为单步执行按钮,他们的作用如下:
- step into:每点击一次该按钮执行一行程序,遇到函数则会进入函数继续单步执行。
- step over:每点击一次该按钮执行一行程序,遇到函数时会把函数当成一行执行。这个单步执行的用处是很大的,读者试想一下这样的场景就会明白:程序中有延时函数(循环实现的软件延时),仿真时,点击该按钮,可以一次执行完整个延时函数,从而方便单步调试。
- step out:当我们单步执行进入到某个子函数内,如果想跳出子函数,点击该按钮即可运行完子函数剩余的语句,并返回到上一层函数。
- Run to cursor line:运行到光标处,点击后,程序运行到光标所处的位置。
按钮5和按钮6的作用如下:
- RST:复位到仿真初始状态。
- Run:全速运行程序。
仿真调试时,仅仅依靠单步执行显然是不够的。当程序代码比较多,我们需要观察程序中某条语句或者某段代码的执行情况时,一种更方便的方法是在待观察的地方设置断点,当程序运行到断点处时会自动暂停,这样分析问题就会方便很多。
Keil C51中设置断点相关的按钮如下图所示。
图12:设置断点相关的按钮
- Insert/Remove Breakpoint:点击后会在光标所处的行添加断点,再次点击会移除断点(也可以直接在行前单击左键添加和移除断点)。
- Enable/ Disable Breakpoint:使能/禁用光标所处的已设置的断点。
- Disable All Breakpoint:禁用所有的断点。
- Kill All BreakPoint:清除所有的断点。