手把手教您怎么编写第一个单片机程序

2023-05-16

手把手教您怎么编写第一个单片机程序

\\\插播一条:文章末尾有惊喜哟~///

51单片机的开发环境是Keil软件。Keil软件虽然是一个收费软件,但从uVision2到目前的uVison4版本都有破解版,在网上都能够找到下载。笔者举荐大家使用uVisong4破解版本,益处不用多说。Keil uVision4软件的压缩包里附有安装和破讲解明,本文不再赘述。开发一个单片机程序,一般都要经过这几个步骤:建设工程->建设C文件->添加C文件到工程->编写C代码->设置宗旨工程的选项->编译工程产生HEX文件->将HEX文件下载到单片机。本文将一步一步手把手教您开发一个LED闪烁的简略且实用的C51程序。让您从0根底起步进修开发51单片机。安装Keil uVison4之后,第一次运行出现如图1的界面,从上往下数,依次是菜单栏、第一条工具栏、第二条工具栏,接下来左边白色局部为工程文件区(显示文件、函数、语言模板和相关书籍),右边灰色局部为文本区(编写源文件),最下边为编译信息栏(显示编译时产生的相关信息)。

一.建设工程点击“Project”菜单项,选“New uVision Project?”,跳出创建新工程对话框,选择工程放置位置,在这里笔者选择F盘,并在根目录创建LED这个文件夹,用来放置工程文件,如图2:

翻开LED文件夹,然后给新工程取个名字(能够任意取),在这里笔者取工程名字为“LED”,如图3:

点击“保存”按钮,跳出器件选择对话框,如图4:

找到Atmel单片机,选择AT89S52,同时右边的描述栏里显示了该器件的根本信息,如图5:

点击“OK按钮,”跳出提示对话框,如图6:

提示对话框问您“是否将8051规范启动代码复制到工程文件夹并添加到工程?”,依据您的须要选择,一般不须要,在这里笔者选择“否”。此时,可看到keil uVision4界面左边的工程窗口里多了一个宗旨文件夹“Target 1”,其下有一个源文件组文件夹“Suorce Group 1”,如图7。此时,新工程已经建设,但还只是一个空的工程。

二.建设C文件和保存C文件

从图7可看到,“Suorce Group 1”这个源文件夹下还没有任何文件。接下来就是创建一个C文件。点击“File”菜单,选择“New”,文档区便出现了一个默认文件名为“Text 1”的空白文档,如图8:

在该文档上随便输写一个空格,然后点击“File”菜单,选择“Save”,跳出保存对话框,如图9,输写文件名为“LED.c”,点击“保存”按钮。这一步须要注意的是这个C文件必需保存在刚刚创建的工程文件夹下,否则在后面编译时会出错。C文件的文件名一般和工程名一致。扩展名必需为“.c”。这个C文件就是您后面要编写C语言源代码的源文件,此时已经在你的工程文件夹里了。

三.添加C文件到工程

虽然“LED.c”这个文件已经在您的工程文件夹里,但还不属于你的工程文件,假如您不把它添加到工程里去,它的存在对您这个工程没有任何意义。接下来就是把C文件添加到您的工程里,让它变成您的工程文件。右键点击左边工程窗口里的“Suorce Group 1”这个源文件夹,选“Add File to Group ‘Suorce Group 1’?”,跳出添加源文件对话框,找到刚刚建设的“LED.c”文件,点击“Add”按钮后,再点击“Close”按钮退出,不要反复点击

这时能够看到“Suorce Group 1”这个源文件下多了一个源文件“LED.c”,同时,右边的文档区的文件名也变更了。

四.编写C代码

在空白的文档区输写如下C代码:

///

#i nclude//包含头文件

sbit led=P2^0;//定义位变量led,使其关联单片机管脚P2.0

void Delayms(unsigned int t);//声明延时函数

/

int main(void)//主函数(C语言程序入口函数)

{

while(1)

{

led=0;//P2.0拉低,点亮LED

Delayms(500);//调用延时函数,延时500毫秒

led=1;//P2.0拉高,熄灭LED

Delayms(500);//调用延时函数,延时500毫秒

}

return 0;

}

//

void Delayms(unsigned int t)//定义延时函数

{

unsigned int i,j;

for(i=0;i

for(j=0;j/大约延时1毫秒

}

///

这是一个常用的指示灯闪烁的程序,输写完成以后,先不要马上编译,还须要作一些设置。

五.工程选项设置

这一步主要是设置时钟频次和产生HEX文件这两项。进入工程选项有两个途径:从“Project”菜单进入和直接点击工具栏快速按钮进入。这里使用工具栏快速按钮进入,点击第二条工具栏的第7个按钮(Target Opsions?,跳出选项对话框,默认选项卡为“Target”,如图12,将晶振频次设为你宗旨板所使用的晶振频次,这里设为12.0;再点击“Output”选项卡,将“Create HEX File ”复选框打勾,这个项设置绝不能忽略,否则您的工程就没有 HEX文件产生。其他选项保持默认。最后点击“OK”按钮,完成选项设置。

图12

六.编译工程产生HEX文件

点击第二条工具栏的第三个按钮(Rebuild),工程便进入编译链接状态,“Build Output”信息栏就会出现相关的编译信息,如图13。从该信息栏能够知道程序的大小,使用了的多少内部RAM和外部RAM、生成多少个代码、是否生成HEX文件、有多少个错误和警告等信息。假如有错误,宗旨文件将不会被创建,只有双击错误信息,光标就会跳到C文档错误代码的行号或错误代码的附近,方便您排查错误。

图13

七.将HEX文件下载到单片机

编译通过的C代码,在工程文件夹下就会生成很多文件,其中有两个文件是最重要的,一个是扩展名为“.c”文件“LED.c”,这是移植程序用的C源文件,是程序的核心,拥有这个文件就相当于拥有整个程序;另一个是扩展名为“.hex”的文件“LED.hex”,这是下载程序用的文件。这两个文件都能够用记事本翻开。“LED.hex”文件是采用Intel hex文件格式存储程序代码的。下载程序的时用下载软件翻开这个hex文件,将文件里的程序代码提取出来写入单片机的程序存储区里。

单片机入门-KEIL4软件安装教程

我们用此时新版本的 uVision 4? KEIL开发环境,使用的版本是破解版,仅供大家进修使用。如做商业开发,请购置正版,能够获得更多 keil软件原厂技术支持。即将安装软件如下,一个keil安装?

SugarlesS

在keil_C51设计中几种精确延时的方法

摘要实际的单片机应用系统开发过程中,由于程序功能的须要,经常编写各种延时程序,延时时长从数微秒到数秒不等,对于许多C51开发者特别是初学者编制非常精确的延时程序有一定难度。

彩蛋:最近有同学跟我要单片机的资料,我特意花几个月时间,总结了我10年产品研发经验,资料包几乎覆盖了C语言、单片机、模电数电、原理图和PCB设计、单片机高级编程等等,非常适合初学者入门和进阶。除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,不是市面上打包卖的那种课程,我认为教程多未必是好事,10年前我自学快,除了自身执行力以外,还有就是教程少。不要害羞做伸手党,等你一个小红点。后期我也会组建一些纯技术交流的小圈子,让大家能认识更多的大佬,有个好的圈子,你对行业的认知一定是最前沿的。8c89b454d86513f0bc2e3a65e4e9a94c.png93cff5c94637565256d35338183ba0a6.pngcecb1c2fbf27cd07b9b7677f0d9dd990.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教您怎么编写第一个单片机程序 的相关文章

  • c语言宏定义一个MAX函数

    1 span class token macro property span class token directive hash span span class token directive keyword define span sp
  • C++ -- 异常:try、throw、catch

    异常 申请内存的时候 xff0c 内存不够用 空间配置器申请失败 xff0c 不做处理 拷贝时内存错误 除数分母不能为0 等情况 会抛出异常 try throw catch 1 使用示例 1 xff09 除数为零 xff0c 情况 未处理情
  • C++ -- 笔试题

    1 下列对派生类的描述中错误的说法是 D A 派生类至少有一个基类 B 派生类可作为另一个派生类的基类 C 派生类除了包含它直接定义的成员外 xff0c 还包含其基类的成员 D 派生类所继承的基类成员的访问权限保持不变 2 当派生类中有和基
  • Linux 用户切换、修改用户名、修改密码

    一 用户切换 34 34 xff1a 普通用户提示符 34 34 xff1a root用户提示符 1 普通用户到root 方式一 xff1a 命令 xff1a su 然后输入root密码 此种方式只是切换了root身份 xff0c 但She
  • C++中的.和::和:和->的区别

    在学习C 43 43 的过程中我们经常会用到 和 和 xff1a 和 gt xff0c 在此整理一下这些常用符号的区别 1 A B则A为对象或者结构体 xff1b 2 A gt B则A为指针 xff0c gt 是成员提取 xff0c A g
  • AirSim学习日志 5-LQR实现无人机轨迹跟踪

    1 LQR控制器算法原理推导 1 1 状态反馈控制 连续线性系统的状态空间表示为 x
  • 英语常用短语

    1 xff0e 经济的快速发展 the rapid development of economy 2 xff0e 人民生活水平的显著提高 稳步增长 the remarkable improvement steady growth of pe
  • PX4进入系统控制台以及运行程序

    这里提供进入控制台两种办法 1 运行 Tools mavlink shell py dev ttyACM0 是我进入Px4系统控制台的命令 xff0c 进入之后应该是这样 Pixhawk src Firmware Tools mavlink
  • 哈哈,终于知道CSDN怎么改头像了

    话说之前一直郁闷 xff0c 说改头像的功能还没修好 xff0c 一直说服务器错误 今天偶尔发现 xff0c 右上角有个设置 xff0c 原来在这里可以改 我还发了几封邮件给CSDN的admin xff0c 居然只知道道歉 xff0c 不告
  • Hello Sky! pixhawk第一个例程学习解读

    学习px4的第一个程序 xff0c 这个例子作为官方给出解释的例程 xff0c 对于新手上手来说 xff0c 是很好的范例 接下来我对照程序源码 xff08 已经经过自己的修改和添加注释 xff09 进行讲解 1 PX4 INFO是标准的L
  • ShadowSSDT Hook

    ShadowSSDT表的获取 这里的ShadowSSDT表的获取是通过函数KeAddSystemServiceTable来获取的 使用这个函数的原因 xff1a 1 这个函数是已经导出的 xff0c 可以在代码中直接使用 2 这个函数里面使
  • 2013&2014

    2013总结 2013 毕业了 xff0c 算是正式工作半年 xff0c 2013年7月开始 xff0c 算是我的生活 xff0c 工作之外的时间都是自己的 一 收获 1 压力测试 差不多算是一个月的时间 xff0c 疯狂的一个月 xff0
  • BCTF总结

    缘由 上周 xff0c 我们小组Sigma参加了 百度杯 BCTF比赛 xff0c 经历了难忘的双休 xff0c 这次的BCTF跟以前参加的国内类似的安全比赛有些不同 xff0c 时间只有48小时 xff0c 题目不多 xff0c 但难度大
  • BCTF_海报探秘(300)

    这个题目来自上周的BCTF比赛 xff0c 题目是海报探秘 xff08 300 xff09 xff0c 一张png图片中隐藏了KEY xff0c 解出KEY xff0c 具体报告 xff0c 请下载 xff1a http download
  • 博客转移

    最近好久不来CSDN了 xff0c 自己搭建了一个博客 欢迎各位去新博客留言 http www l0g1n cn 以前学习汇编的博客 http www asmedu net blog user usermain jsp neighborId
  • 《Windows程序设计》之BLOKOUT1

    LRESULT CALLBACK WndProc HWND hwnd UINT message WPARAM wParam LPARAM lParam static BOOL fBlocking fValidBox static POINT
  • 天猫抢红包小工具源码

    时间很仓促 xff0c 写的很乱 xff0c 也就能用明天一天了 主要还是学习这个过程 include lt Windows h gt include lt stdio h gt include lt iostream gt include
  • vs2010开发qt程序debug正常,release出错

    在debug模式下 xff0c 配置的动态链接库是qtmaind lib QtGuid4 lib QtCored4 lib 这些链接库 xff0c 在release模式下是不适用的 xff0c 进入到qt的目录下 xff0c 发现了有一些不
  • cout与wcout

    一直以来只知道有cout用来输出 xff0c 今天用cout输出wchar时出现问题了 xff0c 输出结果是一段地址 xff0c 才发现了wcout的存在 使用wcout输出中文时 xff0c 又出现问题 xff0c 中文输出不了 xff

随机推荐