创建工程
将STC型号导入keil并使用
STC可以从官网下载,也可我这的网盘:
链接:https://pan.baidu.com/s/1bO85DPN3IFaXGhiKSwyOrA?pwd=7f4h
提取码:7f4h
打开STC,选择“keil仿真设置”,选择“添加型号和头文件到keil中 \ 添加STC仿真器驱动到keil中”
然后会有指引:
创建工程
1、点击“Project”,点击“New ...(阿巴阿巴) Project"
2、勾选“STC MCU Database”,选择对应型号。然后OK。
比如使用的是“STC12C5A60S2”
3、一般选择“是”。
4、选中下面高亮的"Add New Item to..."
5、在弹出页面中,点击“C File”,一般取名叫main
6、成功会看到左边出现“main.c”
附:上面4和5步骤是在往Source Group 1添加一个c文件,还可以像下面这么添加:
(a)点击File,点击New(或者Ctrl+N)创建一个新文件
(b)Ctrl + S,取个名字保存(最好是这个默认的文件夹下,好找)
(c)右键Source Group 1,点击“Add Existing..."
(d)在弹出的窗口中,选中你要添加的文件,点击“Add”,然后“Close”
LED闪烁
单片机上电时,所有IO口默认都是高电平
点亮一个LED
需求:八个LED灯,点亮其中一个
分析:单片机上电时,默认所有IO都都是高电平。如果想让其中一个LED点亮,则需要该LED灯的另一端是低电平。要想修改LED另一端的电平,修改对应的端口寄存器即可。比如,让第八个LED点亮,只需要寄存器 P2 = 0xFE;
#include <REGX52.H>
int main()
{
while(1)
{
P2 = 0xFE; // 1111 1110
}
}
编译试试,编译在下面这个地方
编译成功,成功创建目标,无错误。
重在上手,烧到开发板上试试。
烧录
为了生成可以烧到单片机的十六进制文件,我们需要调整一些配置。
1、点击魔法棒:
2、target中修改单片机频率成你使用的单片机频率,STC12C5A60S2是12MHz
3、output里勾选”Create HEX File"后点击OK
4、再次点击build,看看哪里不一样了
生成了一个hex file(十六进制文件)
接下来只需要将这个十六进制文件烧录进去即可。
5、打开STC,选择单片机型号并配置
问题补充
(一)找不到REGX52.H头文件
引入头文件REGX52.H,右键发现不能打开该文件,那编译肯定会出错。
解决方案:
1、点击魔法棒
2、以此点击“C51”和“..."
3、弹出的窗口,点击选中处
4、弹出的窗口,点击三个点
5、找到你自己的keil5安装路径,依次选中C51、INC、Atmel(因为Atmel型号和STC型号比较像),然后点击”选择文件夹“
6、后面就依次点击OK就行。然后发现可以打开了
(二)REGX51.H 与 REGX52.H
——一般来说,选中`"REGX51.H"`头文件还是`"REGX52.H"`头文件,主要取决于你所使用的单片机型号。
"REGX51.H"`是51系列单片机的通用头文件。它定义了51系列单片机的特殊功能寄存器(SFR)和特殊位。使用标准的8051或其兼容的单片机,那么应该使用`"REGX51.H"`头文件。
"REGX52.H"`则是52系列单片机的专用头文件。它包含了52系列单片机的专用寄存器定义和特殊功能寄存器定义,只适用于52系列单片机。STC12C5A60S2这样的增强型8051单片机,尽管其指令代码与传统8051兼容,但由于其拥有更多的功能和资源,因此更适合使用`"REGX52.H"`头文件。
像STC12C5A60S2这样的增强型8051单片机,应该选择`"REGX52.H"`头文件,因为它会提供更完整和准确的寄存器定义。