本帖最后由 ohy3686 于 2018-2-24 16:58 编辑
【经典51懒人5步速成法-03】程序开发流程与设计要点
广东职业技术学院 欧浩源
单片机的程序开发在电脑上完成,程序的运行则在芯片中进行。开发和运行分别是在不同的平台上进行的,所以,程序开发之后需要下载到芯片之中。常规的嵌入式或者其他单片机的开发都需要有调试过程,最好有仿真器能够进行在线跟踪。然而,51单片机的开发大多数情况下都是ISP下载,也就是说你只能下载程序运行观察结果,不能够进行仿真调试。虽然这个对于开发来说不太有利,也是不规范的,但是51单片机的资源不多,完成可以胜任。
在程序设计过程中,需要注意2点:
<1> 要引入相关芯片的头文件。
<2> 中断服务函数的特殊写法。
1、51单片机的继承开发环境
基本上都是用keil集成开发环境。
2、开发流程。
<1> 建立新工程或者打开已有工程:Project菜单项。
<2> 如果是新建工程,单击“New uVision Project”菜单项,输入工程名字。
<3> 为新工程选择芯片类型。
<4> 给新建的工程中添加代码文件,如果没有代码文件可以新建一个空文件。
<5> 配置工程的选项参数,主要的设置输出HEX文件。
<6> 编写代码,根据不同的芯片引入对于的头文件。
<7> 编译代码,有时候允许有警告存在。
<8> 打开ISP下载软件,导入HEX代码文件。
<9> 将程序代码烧写到芯片中,在断电状态下单击“下载”按钮,然后上电,程序就自动下载到芯片了。
3、程序设计要点
<1> 引入头文件
在单片机的程序设计中,很多时候需要操作特殊功能寄存器,而这些寄存器实际上就是芯片中的一个内存地址。我们要记住这些地址很难,而且代码编写也比较复杂。为了方便**和使用,我们给每一个特殊功能寄存器都起了一个名字。如果在程序设计中你想直接使用这些名字,那么你就需要引入对应当芯片头文件,例如51单片机,你需要引入“reg52.h”文件。
特殊功能寄存器P0的地址为80H,引入这个头文件之后,你就可以使用P0这个名字了
P0 = 0x02;
<2> 中断服务函数的格式
在51单片机中有5个中断源,每个中断源都有固定的入口地址(也就是中断向量)和中断号。我们在程序设计的过程中,不需要记住中断向量地址,但需要知道每个中断源对应的中断号(参考【经典51懒人5步速成法-01】)
一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数。初始化函数就是一个普通的函数,而中断服务函数却有特殊的格式要求:
A. 中断函数没有返回值,也不能带参数。
B. 函数名后面要跟一个关键字interrupt,说明这是一个中断服务函数。
C. 在关键字interrupt后面要跟上中断号,说明这个中断服务函数是为那个中断服务的。
中断服务函数的格式为:
void 函数名() interrupt 中断号
{ ----函数体---- }
例如,定时器0的中断服务函数,我们C语言可以这样写:
4、小结
对于单片机或嵌入式的程序设计,有很多代码是可以重用的,甚至可以直接复制。如果你能够在平时的学习和开发中不断归纳积累,整理出一个属于自己的程序库,那对于日后的项目开发简直是事倍功半。我们在下一节中就51单片机的三大外设的可重用代码进行一个小小的总结。
|