作为国货之光,STC单片机以其价格便宜、内置接口多等特性在一些大厂不屑一顾的角落茁壮成长。今天我们来学习一下基于KeilC51的开发环境搭建,然后编写一个简单的闪灯程序。 先对一些术语去一下魅: 英文简写 英文全写 中文 简介 MCU MicrocontrollerUnit 微控制器单元 又称单片机(SinglechipMicrocomputer) IDE IntegrateDevelopmentEnvironment 集成开发环境 一种集成了代码编辑器、编译器、链接器等的开发工具。 ISP InSystemProgramming 在系统可编程 一种在不移除的前提下烧录程序到已经焊接在电路板上的MCU的方法 ICSP InCircuitSerialProgramming 串口在系统可编程 ISP的一种烧录软件 我们使用STCISP作为烧录软件。 STCISP下载地址如下:http:www。stcmicro。comrjxz。html。STCISP我没有从STC官网下载,那个网站实在是太那个啥了,一言难尽。我选择的是v6。86E版本,最新的版本我的浏览器不让下,说是有毒,官网也是如此。 下载解压完后,不用安装,直接运行,界面如下: 界面非常的朴实无华,正好是酷炫吊炸天的反面。 STCISP这个软件除了烧录程序,还有它用,等会儿我们再说。Keil软件 IDE我们使用KeilC51,下载地址如下:https:www。keil。comdemoevalc51。htm 下载Keil的时候,Keil网站可能会要求你填入姓名、电子邮件等信息,不愿意填的话可以胡编点填上。这点,STC的官网比国外芯片商的官网好,下载软件时不用填入姓名电话等信息。 下载完了不用破解,评估版本一样用,就是会对编译后的文件的大小做限制,不能超过一定的大小。学习用的话,可以先用着,等到代码超限了后再破解。破解的时候得需要让你关闭杀毒软件,还得管理员权限运行,风险相当高。如果你不怕这些风险,破解了,保存破解后生成的那个。LIC文件,以后同一台机器就不用再次破解了。 帝国主义的软件一向是不把我们中国人造的小小单片机看在眼里的,在Keil软件中新建工程默认是没有STC单片机的: 这时候就轮到我们前面的STCISP这个软件出马了。非精简版的STCISP软件有一个功能Keil仿真设置: 点那个添加型号和头文件到Keil中按钮,然后选择Keil的安装目录点击确定按钮就可以了。我的安装目录如下: 刚才那个添加型号和头文件到Keil中主要是替我们干了下面两件事:添加stc。cdb文件到Keil安装目录中。我的安装目录是D:Keilv5UV4,你的可能是C:Keilv5UV4或者其他目录,你可以进去看下。 更改TOOLS。INI文件。更改D:Keilv5目录下的TOOLS。INI文件: 在TOOLS。INI文件中添加如下内容CDB0UV4STC。CDB(STCMCUDatabase): 闪灯程序新建工程 现在,在Keil中新建工程,点击Device就可以愉快地选择STCMCU了: 在电脑上找个地方新建一个文件夹blinkdemo,你也可以起个其他的名字。然后在Keil里依次点击菜单ProjectnewuVisionProject新建工程,新建工程时选择我们刚才新建的blinkdemo文件夹作为工程目录: 我的单片机型号是STC15W408AS,你可以根据你的单片机型号做相应选择: 新建工程时,如果问你是否复制,你选是: 新建工程后,Project窗口中内容如下: 把Target1改为我们工程的名字blinkdemo。 把SourceGroup1改为Source。 如果你不知道咋改名,选中目标,点一下键盘上的F2就可以改名了。 改名后Project窗口内容如下: 你也可以不改名,一样编译没问题。但我习惯改,这样看着舒心一些。生成头文件 下面添加工程所需头文件。 在STCISP软件中,打开头文件选项卡,在单片机系列下拉列表中选择你的单片机型号,点击保存文件按钮将头文件保存到工程目录中,头文件的名字可以命名为STC89xxx。h或者任何其他你喜欢的名字: 工程基本设置 在工程属性中做如下设置。 将系统频率设置为12MHz,你也可以设置成其他的,我的单片机最高可以支持到35MHz,但对于小项目来说,一般12MHz就够用了: 在Output选项中勾选Hex文件,让系统编译后生成。hex文件: 设置头文件路径。在C51选项卡中点击。。。按钮,选中头文件所在目录,此处,我们选择工程所在目录。 添加main。c文件 在Project窗口的Source文件夹上点一下鼠标右键选择AddNewitemtoGroup‘Source: 给文件起名为main。c: 新建完成后Project窗口内容如下: 生成延时函数 闪灯程序需要一个延时函数,可以让STCISP这个软件给我们生成。 填入相应的参数,点击生成C代码即可生成延时函数: 这里我想要的延时时间为500ms。系统频率要与前面的设置的频率一致。 将生成的延时函数复制到main。c中:voidDelay500ms()12MHz{unsignedchari,j,k;nop();nop();i23;j205;k120;do{do{while(k);}while(j);}while(i);}完整的闪灯程序 完整的main。c代码如下:includeintrins。hfixnop()errorincludeSTC89xxx。hvoidDelay500ms();12MHzvoidmain(void){while(1){P10xFF;Delay500ms();P10x00;Delay500ms();}}voidDelay500ms()12MHz{unsignedchari,j,k;nop();nop();i23;j205;k120;do{do{while(k);}while(j);}while(i);} 其中头文件intrins。h用于包含延时函数中的nop()函数,不加的话会出现编译错误。 点击工具栏中的Build按钮或者按一下键盘上的F7键开始编译。编译结果如下: 零错误、零警告,Perfect!烧录程序 接下来,我们使用STCISP这个软件将我们辛苦编译出来的程序烧写到单片机中。 STC单片机支持串口在线可编程(ICSP),可以通过串口烧录程序。电脑中插入一个USB转串口适配器。电脑中会多出一个串口。在STCISP中选择这个串口: 点击打开程序文件选择工程目录下Objects文件夹中的blinkdemo。hex文件作为烧录文件: 内部晶振频率还是选择12MHz。 设置是否使用复位引脚,这里选择使用,因此去掉了复位脚作IO口的勾选。 下载的时候,需要手动复位或重启单片机。否则会一直显示正在检测目标单片机: 总结 今天我们学习了基于KeilC51的STC单片机开发环境搭建。 主要知识点如下:如何向Keil软件中添加STC单片机如何生成给定型号单片机的头文件如何生成延时函数 各软件下载地址如下: KeilC51:https:www。keil。comdemoevalc51。htm STCISP:http:www。stcmicro。comrjxz。html