首页 > 代码库 > 第一个单片机程序(C言语编写)
第一个单片机程序(C言语编写)
忙活了半天,预备任务做了那么多,终于要编写我们的程序代码了。假如学过 C 言语的话,你应当很轻松的跟着我的编程本人写出来,假如没学过 C 言语也没紧要,你先照着我的抄,我会在适宜的地位写出来对 C 言语语法的说明,如许抄几回后再看看说明,就应当很明确了,抄的时分必定要仔细,特别标点符号弗成以搞错。
第一个单片机程序:
#include <reg52.h> //包括特别功用存放器界说的头文件 sbit LED = P0^0; //位地址声明,留意:sbit 必需小写、P 大写! void main(){ //任何一个 C 程序都必需有且仅有一个 main 函数 LED = 0; //分号表现一条语句完毕 }
先从程序语法下去剖析一下:
main 是主函数的函数名字,每个 C 程序都必需有且仅有一个 main 函数。
void 是函数的前往值类型,本程序没有前往值,用 void 表现。
{}在这里是函数开端和完毕的标记,弗成省略。
每条 C 言语语句以;完毕的。
逻辑下去看,程序如许写就可以了,然则在实践单片机使用中,存在一个成绩。比方我们的程序空间可以包容 100 行代码,然则我们实践上的程序只用了 50 行代码,当运转完了50 行,再持续运转时,第 51 行的程序不是我们想运转的程序,而是不肯定的未知内容,一旦履行下去程序就会失足从而能够招致单片机主动复位,所以我们平日在程序中参加一个死轮回,让程序逗留在我们愿望的这个形态下,不要乱运转,有以下两种写法可以参考:
参考程序一:
#include <reg52.h> sbit LED = P0^0; void main(){ while(1){ LED = 0; } }
参考程序二:
#include <reg52.h> sbit LED = P0^0; void main(){ LED = 0; while(1); }
程序一的功用是程序在重复不时的有限次履行 LED = 0;这条语句,而程序二的功用是履行一次,然后程序直接逗留下来等候,绝对程序一来说程序二愈加简练一些。针关于图 2-6,我们这个程序可以把小灯点亮,然则这个程序却点不亮我们板子上的小灯,这是为什么呢?
这里人人就要培育一个认识了,我们做单片机编程,实践上算是硬件底层驱动程序开辟,这种程序的开辟,是离不开电路图的,必需依据我们的电路图来停止程序的编写。假如我们设计电路板的电路图和图 2-6 一样的话,程序可以胜利点亮小灯,然则假如纷歧样,就能够点不亮。
我们的开辟板上,还有一个 74HC138 作为 8 个 LED 小灯的总开关,而 P0.0 仅仅是个离开关。好像我们家里老是有一个供电总闸,然后每一个电灯又有一个专门的开关,我们方才的程序仅仅翻开了谁人电灯的开关,然则没有翻开谁人总电闸,所以程序需求加上这局部代码。
由于这节课要引见的内容比拟多,所以我们把 74HC138 的道理以及为什么要加额定的代码鄙人节课一致引见,这节课我们直接加上这局部代码,人人晓得有这么一回事就可以了。
#include <reg52.h> //包括特别功用存放器界说的头文件 sbit LED = P0^0; //位地址声明,留意:sbit 必需小写、P 大写! sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main(){ ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序中止在这里 }
写了这么多烦琐的语句,刚开端人人能够认为很费事,为什么有的书上程序很复杂就可以点亮小灯,我们这里却这么费事呢。人人要理解一点,就是我们做这个进修板,固然仅仅供给给人人复杂进修运用,然则我们也得依照实践产物的开辟形式去设计,所以综合思索要素许多,人人学到后边就会明确它的设计价值了,这里人人只需跟着我们去做就可以了。
程序编好了,我们要对我们的程序停止编译,生成我们需求的可以下载到单片机里的文件,在编译之前,我们先要勾选一个选项,Project-->Options for Target Target1...,或许直接点图 2-17 中红框内的快捷图标:
图 2-17 工程选项图标
在弹出的对话框中,点击 Output 选项页,勾选个中的“Create HEX File”复选框,然后点 OK,如图 2-18 所示。
图 2-18 创立 HEX 文件
设置好今后呢,点击“Project-->rebuild all target files”,或许鼠标点击图 2-19 中红框内的快捷图标,就可以对程序停止编译了。
图2-19 编译程序
编译完成后,在我们的 Keil 下方的 Output 窗口会呈现响应的提醒,人人留意看图 2-20,这个窗口通知我们编译完成后的状况,data=http://www.mamicode.com/9.0,指的是我们的程序运用了单片机外部的 256字节 RAM 资本中的 9 个字节,code=29 的意思是运用了 8K 代码 Flash 资本中的 29 个字节。
当提醒“0 Error(s), 0 warning(s)”表现我们的程序没有毛病和正告,就会呈现“creating hex file from “LED”...,意思是从以后工程生成了一个 HEX 文件,我们要下载到单片机上的就是这个HEX 文件。假如呈现有毛病和正告提醒的话,就是 Error 和 warning 不是 0,那么我们就要对程序停止反省,找出成绩,处理好了再停止编译发生 HEX 才可以。
图2-20 编译输入信息
到此为止,程序就编译好了,下边我们就要把编译好的程序文件下载到单片机里了。
本文出自 “11999752” 博客,请务必保留此出处http://12009752.blog.51cto.com/11999752/1843323
第一个单片机程序(C言语编写)