我爱萝丽爱萝丽 发表于 2016-9-2 01:43:32

第三课:人生第一个程序

本帖最后由 我爱萝丽爱萝丽 于 2016-9-11 02:07 编辑

人都说:师傅领进门,修行靠个人,其实很多人缺的不是修行的能力,而是领进门的师傅!我相信,一定有很多业余爱好者喜欢单片机,想要学习却无从下手,网上的资料虽多,却没有一个顾及业余爱好者、0基础受众的课程!

所以我在教学时会都会从最简单的开始讲起,如果有没考虑到的,欢迎补充提问。而且课程进度也不会很快,每天抽出几十分钟时间练习一下即可。


第三课的主要任务是学习建立Keil C51工程,和编写最简单的程序。

我爱萝丽爱萝丽 发表于 2016-9-2 02:11:12

本帖最后由 我爱萝丽爱萝丽 于 2016-9-11 02:33 编辑

1.1 新建单片机项目工程


如果你已经在第一课下载并安装了编程软件,那么就可以愉快的按照下面的步骤学习了:
(如果有英语不好的童鞋,可以百度把那几个单词记下来,总共也没几个单词)


1、新建工程



2、新建规整的文件夹方便管理,保存工程



3、弹出芯片型号选择窗口,STC单片机是开源的Intel 8051构架



4、弹出是否自动添加头文件,选择否



5、新建一个文件



6、保存



7、取名为.c文件,.c代表用C语音写的程序文件



8、点+号,右键添加文件



9、把.c文件添加到工程



10、切换输入法到英文,亲自手打敲出你的第一个代码吧。这算是最简单的一个代码了,有不能理解的随后会讲。
敲完后点击锤子按钮进行设置。
(中文输入法会敲出不能识别的乱码,切记!)



11、output 输出选项,勾选创建HEX文件



12、点击编译按钮,叮咚一声清脆的声音,0错误,0警告,撒花~一个完美的新工程诞生啦



13、打开工程文件夹,可以看到你新建工程的所有文件。其中HEX就是可以下载到单片机里面的东西哦。



14、如果对程序的字体不满意。可以百度“Keil 字体设置”,设置自己喜欢的字体和颜色。
楼主自己喜欢稍大圆滑的字体,配置如下。

我爱萝丽爱萝丽 发表于 2016-9-2 02:29:38

本帖最后由 我爱萝丽爱萝丽 于 2016-9-3 11:41 编辑

1.2 必备小知识
我们先来学习一下这个最简单的单片机代码
#include<reg51.h>

main()
{
      
      while(1)
      {
               
      }
      
}知识点(1) #include<reg51.h>
#include<> 是包涵、调用的意思。reg51.h 是51单片机的寄存器声明文件。
合起来的意思就是调用51单片机的头文件。我们初学单片机,对这个不用深究,只要知道在程序第一行这样写就行了。


知识点(2) main函数
包括main()和main下的大括号。就是主函数的意思。
当单片机一通电,程序就会从主函数里面的第一行开始,一行一行的执行,走完了以后重新开始


知识点(3)while(1)循环
上面说了,如果程序走完了,单片机就会复位重新走。我们如果不希望程序被走完呢?
那就用while(1),把程序卡住。
while(1)就代表一个无限循环,它的括号里面的程序会被反复执行,程序永远不会走完。
那单片机一直这样走,会不会把它累坏呢?哈哈,其实楼主在初学时也一直担心这个问题,现在看来担心是多余的。

我爱萝丽爱萝丽 发表于 2016-9-3 12:48:41

本帖最后由 我爱萝丽爱萝丽 于 2016-9-4 11:29 编辑

1.3 延时函数


我们要想让单片机正确的做事,必须要知道什么时间去做。比如现在客户有一个要求,按下按钮以后,灯泡亮一秒自动熄灭。
怎样知道时间过去了一秒呢?最简单的方法:软件延时。
STC单片机有一个好处,就是下载软件自带程序生成器,我们可以用这个功能方便的创建不同时间的延时函数。
打开STC-ISP软件,找到软件延时计算器;
系统频率选择12Mhz,我们以后写程序都默认这个频率;
定时时间选择1000毫秒(ms),就是1秒(s)。1毫秒(ms)等于1000微妙(us);
指令集选择Y5,代表STC15系列单片机;
点击生成代码,然后复制到你自己的程序里就可以了。

#include<reg51.h>


void Delay1000ms()                //@12.000MHz
{
      unsigned char i, j, k;

      //_nop_();
      //_nop_(); 这两个用不到,直接删掉
      i = 46;
      j = 153;
      k = 245;
      do
      {
                do
                {
                        while (--k);
                } while (--j);
      } while (--i);
}

//此为分界线,函数的具体内容写在上面;
//下面是具体的程序,写函数名字就可以调用了。

main()
{
      
      while(1)
      {
                Delay1000ms();//每一行程序结尾要加分号
      }
      
}

知识点(4) 延时函数原理
可以看到自动生成的延时函数里有很多密密麻麻的东西,不要感到恐惧,其实它就是靠反复执行那些无用的东西浪费时间,才有了延时效果。
现在先不用管是怎么写的,现在只需会用就行了。


知识点(5) 声明函数
在函数调用之前,要先声明,所以要放在主函数之前。


知识点(6) 调用函数
只有在程序中调用了函数,它才会实际生效。

知识点(7) 程序注释
这段函数什么意思?如果怕自己忘了或别人看不懂,可以在函数中添加注释,注释可以用汉字。
格式:
//注释内容
具体原理是:“//”符号后面的东西Keil软件就当做不存在,只有人类才能看见哦


现在的程序就是在反复执行延时1秒的函数,赶快编译试一下吧!



我爱萝丽爱萝丽 发表于 2016-9-3 13:29:13

本帖最后由 我爱萝丽爱萝丽 于 2016-9-11 02:39 编辑

1.4 单片机的引脚


当当当当~~~请出我们本次课程的主角:STC 最简单的8脚单片机!



这个单片机的各个引脚是什么功能呢?
打开STC-ISP软件,找到封装脚位选项,可以看到具体描述:



知识点(8) VCC、GND
GND是地,代表电源的负极,VCC就是电源正极了。根据不同的芯片型号,可以接3~5V。


知识点(9) P3.0、P3.1、……
P代表端口的意思,单片机有多个端口,如P0、P1、P2、P3等。
每个端口有8只引脚,对于端口3,有P3.0、P3.1、P3.2、P3.3、P3.4、P3.5、P3.6、P3.7。
这个单片机只有可怜的几个引脚,所以就只能用其中一部分啦。
这些引脚还有一些别的名称,那是额外的功能,暂时无需知道。

在第一课中,我们已经制作出了试验电路,三色灯珠接在单片机的引脚上,如何控制它们?下节课自见分晓!




ggssccmyzb 发表于 2022-4-7 13:13:30

继续学习中

零点起步 发表于 2020-11-30 15:29:40

楼主辛苦了,不过好像单片机跑这程序更辛苦,哈哈

摸吧 发表于 2020-10-11 13:14:45

看一下学习来了,但是看不太懂从那里入手{:1_4:}

大林子 发表于 2020-7-23 13:00:25

学习学习好帖子

pmsy 发表于 2020-6-18 10:21:57

人生第一个c程式,装到那个灯里面测试了,"白光长亮"!相信随后内容会越来越丰富!

maizx5 发表于 2020-6-3 21:55:24

学到很多,之前因为粗心都没注意

时间匆匆 发表于 2017-8-28 16:37:18

从今天起把每一课看一遍,重新学习一下51等等,,,,,,,,主要是牛币从今天起把每一课看一遍,重新学习一下51等等,,,,,,,,主要是牛币

lcr24502 发表于 2017-8-15 10:59:19

太好了,学习,学习一下,谢谢

神奇的牛 发表于 2017-7-14 12:48:14

认认真真学习了两遍,还抄了笔记。感谢大神的无私奉献。{:1_1:}

小肥猪你别跑 发表于 2017-7-11 14:50:57

厉害了楼主......................

微风的想念 发表于 2016-9-2 06:59:43

学习学习

ssz 发表于 2016-9-2 07:03:30

学习学习http://www.moz8.com//mobcent//app/data/phiz/default/23.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/23.png

xiao小菜鸟 发表于 2016-9-2 07:08:14

楼主辛苦2点多还在写教程

疯一样的男子 发表于 2016-9-2 07:13:00

前排占座,认真学习

转角1068 发表于 2016-9-2 07:21:00

我爱萝丽爱萝丽 发表于 2016-9-2 02:29
1.2 必备小知识

楼主辛苦了,不过好像单片机跑这程序更辛苦,哈哈

竹蜻蜓 发表于 2016-9-2 07:30:11

http://www.moz8.com//mobcent//app/data/phiz/default/60.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/60.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/60.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/60.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/60.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/60.png

ludeku 发表于 2016-9-2 07:42:07

继续学习

815023524 发表于 2016-9-2 07:43:45

楼主辛苦,楼主辛苦,楼主辛苦,

shikun888 发表于 2016-9-2 07:46:02

感谢萝莉老师凌晨2点还在写程序辛苦了

大雨 发表于 2016-9-2 07:53:14

好!受教了

Loki 发表于 2016-9-2 08:01:26

作为强迫症,在颜色上调了很久,每次都要确定才能看到效果差评!

佳友 发表于 2016-9-2 08:32:22

学习完毕,等待更新

武杰杰 发表于 2016-9-2 08:47:22

也想搞一个

天山一棵松 发表于 2016-9-2 08:50:58

好东西

突突 发表于 2016-9-2 08:59:12

就缺你这样的师傅

小马哥无人机 发表于 2016-9-2 10:44:42

照顾了许多人呐

rensanny 发表于 2016-9-2 11:25:33

群主,想上传一个keil_cn汉化包,方便英语不通的,怎么上传啊。
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 第三课:人生第一个程序