你现在位置:首页>技术论文>软件知识>正文
8051单片机模块化编程技巧
日期:2011-6-27 11:04:02 点击:
来源:本站整理
作者:
点击【】放大字体.
程序设计就是用计算机所能接受的语言把解决问题的步骤描述出来,也就是把计算机指令或语句组成一个有序的集合。一个好的应用程序不仅是执行效率高,而且还要结构清晰、便于调试。所以人们都采用结构化程序设计方法来编制应用程序。对于每一个初学者来说更应该养成习惯,从简单的程序编制开始就采用这种模块化结构。

  目前在8051 单片机应用开发中主要有两种编程语言:汇编语言和C51 语言。C51 语言是一种结构化的编程语言,采用C51 编写的应用程序结构清晰、模块化程度高、可读性强、并容易移植。但C51 语言也有缺点,就是编译后生成的目标代码空间要比汇编的大。

——可——编——程——控-制-器-技——术——门——户

  而且目前单片机的教材还是侧重于汇编语言。因此学习用单片机汇编语言程序进行结构化设计还是很有必要的。我们知道C51 语言是函数式语言,其程序由函数构成,每一个源程序有且只有一个主函数main() 和若干个函数组成。其中每一个函数都用于完成某一特定任务。也就是说,一个项目若具有几个功能,实现这些功能就会需要由若干个任务来完成,那么它的源程序中就会有若干个或以上的函数。而在汇编语言中,源程序中只有程序和子程序。那么我们能否以子程序为基本单位,用一个子程序实现一种功能来做到模块化编程呢?实践证明是可行的。但在编制程序中不要忘记汇编语言的特点,注意子程序之间对单片机资源的使用,避免不同子程序交叉共用同一资源引起程序的错误执行。子程序嵌套调用的级数等。本文以“60秒倒计时电路”为例谈一谈51 单片机汇编语言模块化编程的一点技巧。

plcjs.技.术_网

  一、60秒倒计时电路及编程

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

  1. 功能要求

WW.W_PLCJS_COM-PLC-技.术_网

  所谓倒计时,就是首先给定一个初始值,然后对初始值进行减“1”操作,直到该值为“0”为止。60 秒倒计时就是对给定的初始值“60”每隔1 秒钟对其进行减“1”,一直减到该值为“0”为止。

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  该倒计时电路要求有两个按钮。一个是“复位”按钮,按下按钮设置倒计时初始值,并把指示灯熄灭;另一个是“开始”按钮,按下按钮开始倒计时。并用两位LED 数码管显示当前倒计时值。计时时间到,指示灯点亮。

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

  2. 电路组成

——可——编——程——控-制-器-技——术——门——户

  实现上述功能要求的单片机接口电路如图1 所示。

WWW_PLC※JS_COM-PmLC-技.术_网

单片机接口电路

P.L.C.技.术.网——可编程控制器技术门户

图1 单片机接口电路 

P.L.C.技.术.网——可编程控制器技术门户

  图中用按钮SB1 作为“置初值”按钮,按钮SB2 作为“开始”按钮。按下SB1 按钮,将显示值设置为“60”。

WWW_PLCJS_COM-PLC-技.术_网

  按下按钮SB2,每隔一秒显示值减“1”,直到值为“0”

W1WW_P4LCJS_COM-PLC-技.术_网

  停止计数。按钮和指示灯接在P0 口上,P0.0 为初始按钮,P0.1 为开始按钮,P0.7 为指示灯。十位LED 数码管接P2 口,个位LED 数码管接P1 口。图2 为单片机基本系统电路。

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

单片机基本系统电路

WWcW_PLCJS_COM-PLC-技.术_网

图2 单片机基本系统电路

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  3. 功能分析

P.L.C.技.术.网——可编程控制器技术门户

  根据60 秒倒计时的功能要求,需要单片机完成以下任务:

WWW_P※LCJS_COM-PLC-)技.术_网

  ⑴ 按键扫描。用来判断有没有键被按下,是哪个键被按下?根据不同的键,给出相应的键值。

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  ⑵ 计时显示。这里时间值使用的是两位数,故需要将被显示的时间值取出个位数和十位数,然后才能进行显示。

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  ⑶ 被显示数转换成7 段码。由于单片机中的数据都是以二进制形式存放或运算的。而这里输出显示使用了两位LED 数码管来显示计时数值的,一个被显示的数要点亮数码管的某几段才能显示出这个数,不同的数需要点亮数码管的不同段。因此需要将被显示的这个数转换成相应的显示段码,才能被正确显示出来。

WWW_PLCJS_COM-PLC-技.术_网

  ⑷ 延时。包括1秒钟延时和按键消抖的10毫秒延时。

WW.W_PLCJS_COM-PLC-技.术_网

  ⒋ 程序编制

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  程序按实现功能采用模块化结构,有一个主程序和若干个子程序组成。每个子程序分别是完成某个任务的独立模块,有时会用到调用参数。本实例共有5 个子程序,分别是按键扫描子程序、10ms 延时子程序、1s 延时子程序、显示子程序、取段码子程序。

P.L.C.技.术.网——可编程控制器技术门户

  ⑴ 按键扫描子程序

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

  按键扫描子程序完成对按键进行扫描,确定有没有键被按下,当有键被按下并抬起后将相关键值返回给主程序的任务。其流程如图3 所示。该子程序没有入口参数,但有一个出口参数,即按键的键值,存放在寄存器R3 中。寄存器R3 中的值为“60H”表示SB1 键被按下;寄存器R3 中的值为“00H”表示SB2 键被按下。

WWW.PLCJS.COM——可编程控制器技术门户

按键扫描子程序流程图

——可——编——程——控-制-器-技——术——门——户

图3 按键扫描子程序流程图

WWW_P※LCJS_COM-PLC-)技.术_网

  按照图3 的流程图和51 单片机的指令系统编制的子程序如下:

P.L.C.技.术.网——可编程控制器技术门户

  ;----------- 按键扫描描--------------

W1WW_P4LCJS_COM-PLC-技.术_网

  ; 出口参数键值存放在寄存器R3 中,用于识别哪个键。

WWW_P※LCJS_COM-PLC-)技.术_网

  ;R3=60H, 说明SB1 被按下;R3=00H, 说明SB2 被按下

WWW_PLCJS@_COM%-PLC-技.术_网

  key_scan: jnb kb_init, k1check ; SB1 按下转移

WWW_PLCJS_COM-PLC-技.术_网

  jnb kb_begin, k2check ; SB2 按下转移

WWW_P※LCJS_CO※M-PLC-技-.术_网

  sjmp ksr ;

plcjs.技.术_网

  k1check: acall del10 ; 调用毫秒延时,去抖

W1WW_P4LCJS_COM-PLC-技.术_网

  jb kb_init, ksr ; 干扰,返回

WWW_PLCJS@_COM%-PLC-技.术_网

  jnb kb_init,$ ; 等待按键释放

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  mov r3, #60h; 是SB1,键值“60H”送寄存器R3

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

  sjmp ksr ; 是,不进行任何操作返回

WWW_P※LCJS_CO※M-PLC-技-.术_网

  k2check: acall del10 ; 调用毫秒延时,去抖

WWW_PL※CJS_COM-PLC-技.术_网

  jb kb_begin, ksr ; 干扰,返回

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  jnb kb_begin,$ ; 等待按键释放

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  mov r3, #00h; 是SB2,键值“00H”送寄存器R3

WWcW_PLCJS_COM-PLC-技.术_网

  ksr: ret ; 返回

WWW_P※LCJS_CO※M-PLC-技-.术_网

  ;---------------------------------

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

  ⑵ 显示子程序

W1WW_P4LCJS_COM-PLC-技.术_网

  显示子程序完成从被显示值中取出十位数将其转换成显示断码,并送单片机的P2 口;从被显示值中取出个位数将其转换成显示断码,并送单片机的P1 口任务。其流程如图4 所示。该子程序有一个入口参数,即被显示的值,存放在寄存器R2 中。

plcjs.技.术_网

显示子程序流程图

WW.W_PLCJS_COM-PLC-技.术_网

图4 显示子程序流程图

WW.W_PLC※JS_C,OM-PL,C-技.术_网

  按照图4 的流程图和51 单片机的指令系统编制的子程序如下:

本新闻共3页,当前在第11 2  3  
WW.W_PLCJS_COM-PLC-技.术_网

上一篇: photoshop输出透明图像
下一: 没有了
评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行