历史上的今天
今天是:2026年01月06日(星期二)
2023年01月06日 | 51单片机系列(1)-keil4工程创建
2023-01-06 来源:zhihu
我使用的keil uvision4进行51单片机开发。
那么创建一个keil工程有以下几步:
1、keil4软件安装:
keil4软件很容易下载,一般在淘宝卖家处购买单片机之后,会附赠相关的软件安装包和破解包,还有相关破解视频,故不赘述。
2、创建第一个工程:
进入软件之后我们定位到上方菜单栏,点击工程(如下图)

再点击新建工程

接下来就会保存工程路径,路径可以自行选择,注意文件名需要自行填写,否则无法保存,保存类型是默认的,不需要更改

接下来会弹出一个选择单片机CPU的窗口

我们使用的是51单片机,所以直接定位Atmel,我的单片机芯片型号是89C52,则定位Atmel下属的AT89C52,最后只管点击确定即可
![]()
创建完成后如下图所示

接下来需要在工程中创建文件,点击下图红圈中的图标

再点击保存(下图)

接下来会有一个保存路径的选择,其位置自动定位到所在的工程,注意还是要自行填写文件名,在此我们创建的是一个.c文件,创建为main.c,再点击保存即可

由于main.c文件并没有被添加进入工程,所以接下来我们需要将其添加进入工程,如下图,右键单击源组1,点击添加文件到“源组1”

再进入一个选择界面,你可以用两种方式添加:1、单击名称目录下的main.c文件,点击添加;2、如果名称目录文件多难以找到,就输入文件名,也可以添加。
注意点击添加后再点击关闭,才是添加成功

如下图所示,则是添加成功

3、测试工程文件,加入编写最基本的程序
首先设置编译输出hex文件,因为单片机执行的时候是通过keil生成的hex文件执行的,这是单片机的直接指挥文件,在菜单栏里面定位如下图标,点击

弹出如下页面,点击Output->红圈部分,打上勾,再点击确定即可

接下来就可以编写程序了,我们写一个例程试一下,使用流水灯实验
源代码如下
#include "reg52.h"
#include typedef unsigned char u8; typedef unsigned int u16; #define led P2 void delay(u16 i){while(i--);} void main() { u8 i; led=0xfe; delay(50000); while(1){ for(i=0;i<7;i++){ led=_crol_(led,1); delay(50000); } for(i=0;i<7;i++){ led=_cror_(led,1); delay(50000); } } } 直接复制粘贴即可。 再点击编译,如图所示的图标 再看下方编译输出栏, 注意的点:1、warning和error,都为零说明成功 2、create hex file...说明有hex文件,才可下载进入单片机 下图所示文件编译成功,可以进入下载了 4、进入下载 此时可以关闭keil,但需要记住你的hex文件的路径,一般都是在你创建的工程文件之下 然后在外部将单片机与电脑通过usb接口相连,同时打开单片机开关,给单片机供电,否则无法下载程序 再打开程序烧入软件,这类软件很好找,百度一下即可,推荐到一些电子类论坛下载,相对干净安全,我使用的是普中科技的单片机程序下载软件,图标如下 打开后界面如下 注意的点 1、一般是自动匹配串口,所以有串口号一般就能下载 2、芯片类型注意选择自己对应的,51系列就选择STC89Cxx(New)即可 3、波特率设置为9600或者19200即可,不需要过高 接下来点击打开文件,找到hex文件的路径(就在你刚刚创建的工程路径里面) 如下图,找到后双击文件或者单击打开即可 文件路径已经就绪(下图) 最后点击程序下载就大功告成了 led模块开始运作,如gif所示,流水灯成功 5、提醒 程序下载不一定一次成功, 1、可以试着把usb线拔了重新插进去试试 2、或者关闭单片机,点击下载后迅速打开单片机 工程创建的过程中,可能会出现编译栏显示灰色无法点击的情况 这个时候建议从头重新创建一次工程文件,同时文件名不要有空格和中文。![]()

![]()




史海拾趣
|
++ 用万用表判断电容器质量 ++ 视电解电容器容量大小,通常选用万用表的R×10、R×100、R×1K挡进行测试判断。红、黑表笔分别接电容器的负极(每次测试前,需将电容器放电),由表针的偏摆来判断电容器质量。若表针迅速向右摆起,然后慢慢向 ...… 查看全部问答> |
|
1、如何选择PCB板材? 选择PCB板材必须在满足设计需求和可量产性及成本中间取得平衡点。设计需求包含电气和 机构这两部分。通常在设计非常高速的PCB板子(大于GHz的频率)时这材质问题会比较重要。 例如,现在常用的FR-4材质,在几个GHz的频率时 ...… 查看全部问答> |
|
WinCE5.0中流式驱动能否加快对文件的读写定位数据指针的速度? RT! WinCE5.0中流式驱动能否加快对文件的读写定位数据指针的速度? 原本在要用程序中对一个二进制文件进行读写和查找数据,直接使用的是CreateFile(),SetFilePointer()和ReadFile()及WriteFile()函数; 该二进制文 ...… 查看全部问答> |
|
调了好长时间的OTG的HOST功能. 现在有点眉目,但是如何判断HOST功能已经正常了? 现在U盘插上去后,灯闪了一下就灭了. 打印消息说, 已探测到外部设备插入,而且识别了设备的速度,然后就等待port的状态变化... 这种现象正常吗? 我 ...… 查看全部问答> |
|
看到许多朋友抱怨LPC17xx的资料难找,发一套全套示例代码 这是一套基于LPC17XX各个模块的示例代码,开发环境是基于KEIL MDK的,我现在用LPC1756做开发,也是初次接触。 这套资料还比较齐全,给了我不少帮助,希望对你们有用。… 查看全部问答> |
|
最近STM8遇到比较郁闷的问题,现在有针对方案,但是还是想破头了想不明白。 型号是STM8S105K6: 1、定时中断TIM2溢出时间为1ms,主要用于数码管的显示(直接端口驱动,电流没有超过额定限制),用到端口PC2、PC3、PC4、PC5; 2、输出端口PC ...… 查看全部问答> |
|
void read_ram(position_type *d) { INT24U r_point=d->read_ram_pointer; unsigned char recdata; TBLPTRL = r_point&0xFF; &nb ...… 查看全部问答> |




