第三课:人生第一个程序
本帖最后由 我爱萝丽爱萝丽 于 2016-9-11 02:07 编辑人都说:师傅领进门,修行靠个人,其实很多人缺的不是修行的能力,而是领进门的师傅!我相信,一定有很多业余爱好者喜欢单片机,想要学习却无从下手,网上的资料虽多,却没有一个顾及业余爱好者、0基础受众的课程!
所以我在教学时会都会从最简单的开始讲起,如果有没考虑到的,欢迎补充提问。而且课程进度也不会很快,每天抽出几十分钟时间练习一下即可。
第三课的主要任务是学习建立Keil C51工程,和编写最简单的程序。
本帖最后由 我爱萝丽爱萝丽 于 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-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-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-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。
这个单片机只有可怜的几个引脚,所以就只能用其中一部分啦。
这些引脚还有一些别的名称,那是额外的功能,暂时无需知道。
在第一课中,我们已经制作出了试验电路,三色灯珠接在单片机的引脚上,如何控制它们?下节课自见分晓!
继续学习中 楼主辛苦了,不过好像单片机跑这程序更辛苦,哈哈 看一下学习来了,但是看不太懂从那里入手{:1_4:} 学习学习好帖子 人生第一个c程式,装到那个灯里面测试了,"白光长亮"!相信随后内容会越来越丰富! 学到很多,之前因为粗心都没注意 从今天起把每一课看一遍,重新学习一下51等等,,,,,,,,主要是牛币从今天起把每一课看一遍,重新学习一下51等等,,,,,,,,主要是牛币 太好了,学习,学习一下,谢谢 认认真真学习了两遍,还抄了笔记。感谢大神的无私奉献。{:1_1:} 厉害了楼主...................... 学习学习 学习学习http://www.moz8.com//mobcent//app/data/phiz/default/23.pnghttp://www.moz8.com//mobcent//app/data/phiz/default/23.png
楼主辛苦2点多还在写教程
前排占座,认真学习 我爱萝丽爱萝丽 发表于 2016-9-2 02:29
1.2 必备小知识
楼主辛苦了,不过好像单片机跑这程序更辛苦,哈哈 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
继续学习
楼主辛苦,楼主辛苦,楼主辛苦, 感谢萝莉老师凌晨2点还在写程序辛苦了 好!受教了
作为强迫症,在颜色上调了很久,每次都要确定才能看到效果差评! 学习完毕,等待更新 也想搞一个
好东西
就缺你这样的师傅
照顾了许多人呐
群主,想上传一个keil_cn汉化包,方便英语不通的,怎么上传啊。