1.工程训练目标
(1)学会在Keil C251集成开发环境(以下简称Keil C251)中配置STC单片机的开发环境。
(2)学会通过Keil C251输入、编辑与编译单片机应用程序,生成单片机应用程序的机器代码文件。
(3)学会通过Keil C251模拟调试单片机应用程序。
2.关联知识
2.1节相关内容。
3.任务概述
1)任务目标与电路设计
任务目标:实现流水灯控制。当开关合上时,流水灯左移;当开关断开时,流水灯右移。左移时间间隔为1s,右移时间间隔为0.5s。
电路设计:从P3.2引脚输入开关信号,开关断开时输入高电平,开关合上时输入低电平;P1口输出信号控制8只LED,输出高电平时LED亮。
2)参考源程序
参考源程序见2.1节中的demo.c。
4.任务实施
(1)下载与安装Keil C251。
(2)给Keil C251添加单片机型号、单片机头文件与仿真驱动。
(3)新建项目文件夹project241。
(4)应用Keil C251输入、编辑与编译用户程序,生成用户程序的机器代码。
①新建名为project241.uvprojx的项目,存储类型按默认设置即可。
②新建程序文件,内容见2.1节中的demo.c,名称改为“project241.c”。
注意: 保存时应注意选择文件类型,若编辑的是汇编语言程序,以.ASM为扩展名保存;若编辑的是C51程序,以.c为扩展名保存。
③将project241.c添加到当前项目中。
④设置编译环境。
a.CPU Mode:Source(251 native)。
b.Memory Model:XSmall。
c.Code Rom Size:Large。
d.HEX format:HEX-386。
e.勾选“Create HEX File”选项。
⑤进行编译与连接,生成机器代码文件。
⑥查看当前项目文件夹中是否有project241.hex文件。
(5)调试用户程序。
①从编辑、编译界面切换到调试界面。
②调出P1与P3控制窗口。
③单击全速运行按钮,观察P1端口中“√”(高电平)的移动方向与移动时间间隔。
④设置P3.2输入为低电平(去掉P3.2位的“√”),观察P1端口中“√”(高电平)的移动方向与移动时间间隔。
5.训练拓展
(1)单步调试用户程序。
(2)跟踪调试用户程序。
(3)设置断点,利用断点调试用户程序。
1.工程训练目标
(1)学习利用STC-ISP向STC单片机下载用户程序。
(2)利用Keil μVision4集成开发环境与实验箱进行STC单片机的在线仿真。
2.关联知识
2.1节、2.2节和2.3节相关内容。
3.任务概述
1)任务目标与电路设计
任务目标:实现流水灯控制。当开关合上时,流水灯左移;当开关断开时,流水灯右移。左移间隔时间为1s,右移时间间隔为0.5s。
电路设计:从P3.3引脚输入开关信号,开关断开时输入高电平,开关合上时输入低电平;从P6输出信号控制8只LED灯,输出低电平时LED灯亮;用P4.0选通控制LED灯的电源,P4.0为高电平时切断电源,P4.0为低电平时接通电源。
2)软件设计
(1)程序说明。一是由于单片机复位后除P3.0、P3.1外的I/O端口都处于高阻状态,在使用I/O功能前,必须将I/O端口的工作模式设置为准双向端口或其他需要的工作模式;二是根据CPU时钟频率的不同,需要设置访问程序存储器与扩展RAM的等待时间。为此,为了方便编程,统一设计一个初始化程序文件,即sys_inti.c,初始化函数为sys_inti,在主程序文件中,用包含语句将sys_inti.c包含进来,在主函数中调用sys_inti即可。
(2)sys_inti.c中程序如下:
(3)project242.c中程序如下:
4.任务实施
(1)新建项目文件夹project242。
(2)利用Keil C251创建项目project242.uvproj。
(3)新建sys_inti.c系统初始化文件。
(4)新建project242.c用户程序,将project242.c添加到当前项目中,设置编译环境,生成机器代码文件project242.hex。
(5)应用STC-ISP,向实验箱中的单片机下载用户程序的机器代码文件project242.hex。
①用双公头USB线连接PC与实验箱。
②打开STC-ISP。
③选择目标单片机的型号。
④选择要下载的程序文件project242.hex。
⑤选择单片机程序运行的时钟频率(24MHz)。
⑥建立PC与单片机之间的USB通信。按住SW17(P3.2)按键,按一下SW19(电源开关)按键,当观察到扫描串行端口窗口出现“STC USB Writer(HID1)”信息时,松开SW17按键,完成PC与单片机之间的USB通信的建立。
⑦单击“下载/编程”按钮,启动用户程序的下载,程序下载完成后自动运行。
(6)在线调试用户程序。
①直接观察。默认时,SW18输出的是高电平,观察流水灯(P6控制的LED灯)的运行情况,这时流水灯应该右移,间隔时间约500ms。
②按住SW18按键,SW18输出的是低电平,观察流水灯(P6控制的LED灯)的运行情况,这时流水灯应该左移,间隔时间约1000ms。
1.工程训练目标
学会在用户程序开发中实现用户程序不停电下载。
2.关联知识
使用STC-USB通信,使用USB库函数包COMM,相应的USB库函数和头文件在此文件夹中。
3.任务概述
1)任务目标与电路设计
电路设计同2.4.2小节,在2.4.2小节任务目标的基础上,实现不停电下载程序。
2)C语言程序
本任务的程序可直接在project242.c的基础上修改(加粗部分)而成。
(1)预编译部分:
(2)主函数部分:
4.任务实施
(1)新建项目文件夹project243。
(2)将USB库函数包(COMM文件夹)复制到project243文件夹所在的目录(文件夹)中。
(3)将project242中的sys_inti.c与project242.c两个文件复制到project243文件夹中,并将project242.c重命名为project243.c。
(4)利用Keil C251新建项目project243,并存储在project243文件夹中。
(5)将project243.c文件添加到当前项目中,将COMM文件夹中的stc_usb_hid_32g库文件添加到当前项目中。
(6)打开project243.c文件,参考上述程序说明添加USB调试代码。
(7)设置编译环境,编译、生成机器代码文件project243.hex。
(8)利用普通USB下载程序方法将project243.hex文件下载到实验箱的单片机中,并调试。
(9)设置USB自定义下载功能。在STC-ISP界面的左边中部,选择“收到用户命令后复位到ISP监控程序区”选项,并设置相关参数与勾选相关选项,如图2.53所示。设置完毕后,当下载程序代码变化时,系统将自动启动自定义下载,实现不停电下载,这将大大提高工作效率。
图2.53 自定义下载设置(不停电下载)
1.工程训练目标
学会用STC-USB Link1对STC32G12K128单片机进行在线仿真。
2.关联知识
STC-USB Link1的工具外观与引脚如图2.54所示。
图2.54 STC-USB Link1工具的外观与引脚
3.任务概述
1)任务目标与电路设计
电路设计同2.4.2小节,在2.4.2小节任务目标的基础上,实现在线仿真。
2)硬件连接
硬件连接如图2.55所示。
图2.55 在线仿真硬件连线
3)C语言程序
C语言程序同2.4.2小节。
4.任务实施
(1)将STC-USB Link1工具连接到PC后,STC-ISP会立即识别并在界面中显示“STC-USB Link1(LNK1)”,如图2.56所示。实验箱中的J9用短路帽短接。
注意: 实验箱电源应接SWD仿真器的VCC。
(2)制作仿真芯片,如图2.57所示。
①运行STC-ISP,进入“Keil仿真设置”标签页。
②选择“单片机型号”为“STC32G12K128-Beta”。
③选择“使用SWD口进行仿真P3.0/P3.1”。
④单击“将所选目标单片机设置为仿真芯片”按钮,下载完成后,芯片就具有仿真功能了。
图2.56 STC-ISP 识别到STC-USB Link1工具后的界面
图2.57 制作仿真芯片
(3)运行Keil C251,打开project242项目。
(4)进入设置编译环境界面,按图2.58、图2.59所示步骤进行SWD的仿真设置。
图2.58 SWD的仿真设置(1)
图2.59 SWD的仿真设置(2)
(5)进入仿真界面,在“Command”信息框中将显示仿真版本号等信息,如图2.60所示。
图2.60 仿真版本号等信息
(6)进行在线仿真,可同时在Keil C251和实验箱中观察仿真结果。
①全速运行调试。
②单步运行调试。
③断点调试。