[收稿日期] 2006 12 28
[作者简介] 包敬海 (1979 ) , 男 , 2001 年大学毕业 , 讲师 , 现主要从事嵌入式系统 、 数据挖掘方面的教学与研究工作 。
基 于 寄 存 器 组 的 交 通 灯 控 制 优 化 设 计
包敬海
(钦州学院物理与电子工程系 ,广西 钦州 535000)
[摘要] 由于单片机指令系统的特点 ,汇编语言程序存在一定的冗余 。 根据高级程序中数组的高效性 , 提
出利用寄存器组进行优化的办法 。 利用寄存器组对交通灯控制程序进行优化 , 可以将 Hex 文件精简
63 .2% 。 实践证明 , 基于寄存器组优化单片机程序 , 可以有效地节省硬件资源 , 提高工作效率 。
[关键词] 交通灯控制 ;单片机 ;寄存器组 ; 优化设计
[中图分类号] U491 .151 [文献标识码] A [文章编号] 1673 1409 (2007) 01 N077 04
随着微控制技术的发展 , 单片机在工业控制 、 家电产品等领域得到了广泛应用
[1]
。 单片机的强大主
要得益于它对 1/O 端口的良好控制能力 。 然而 , 由于单片机指令系统自身的限制 , 在控制程序中往往
还存在一定的冗余 , 既浪费了硬件资源 , 也给编程和后期维护带来诸多不便 。 根据高级程序中数组的高
效性 ,笔者提出利用寄存器组减少冗余的思路 。 通过在单片机开发中典型的 1/O 控制实例 一一一 交通灯控制
的优化设计实践 ,笔者对如何利用寄存器组优化单片机程序进行了探讨 。
1 交通灯控制程序中的冗余和优化困难
交通灯控制一般都有 4 种状态 : 首先是南北绿灯 , 东西红灯 ; 经过一段时间后 , 南北绿灯闪 3 下 ,
变成黄灯 ; 数秒后 , 南北红灯 , 东西绿灯 ; 再经过一段时间 , 东西绿灯闪 3 下 , 变成黄灯并持续数秒 。
根据这 4 种状态 , 可以编写出相应的程序 。
汇编语言是机器语言之外最接近计算机硬件的编程语言 , 可以最大限度地发挥计算机硬件的性
能
[2]
。 它生成的目标程序占用内存空间少 , 运行速度快 , 稳定可靠 , 对时间控制精确 , 因此采用汇编语
言进行控制 。 核心程序如表 1 。
关于程序的优化 , 需要考虑优化的空间和是否存在优化的必要以及优化过程中要解决的问题 。
1) 优化的可能性 从表 1 可以看出 , 子程序 ST ATUS1 和 STA TUS3 几乎一样 , STATUS2 和
STAT US4 之间也比较类似 , 说明存在优化的空间 。
2) 优化的必要性 对单片机而言 , 程序的优化是非常必要的 。 首先 , 和个人计算机不同 , 单片机
追求的是短小精悍 , 尽量节约空间和成本 , 所以进行优化是必要的 。 其次 , 根据软件工程理论 , 即使是
结构比较清晰的高级程序 , 程序量增加 , 错误也随之增加
[3]
, 调试修改和后期维护的工作量则成倍增
加
[4]
, 因此对于底层的汇编语言来说 , 进行优化更是能够起到事半功倍的效果
[5]
。
3) 优化的困难 优化该程序存在较大的困难 , 主要在于汇编语言是一种面向机器 、 结构化比较弱
的语言
[6]
, 没有象高级语言那样拥有庞大的指令集和丰富的控制结构 。 例如 , 高级语言可以使用数组进
行数据传递 , 而汇编语言在此显得捉襟见肘 , 往往只能通过存在不少冗余的顺序结构来完成控制操作 。
当然 , 使用查表的方法也可以实现一定的优化功能 , 但此类方法不够直观 , 容易出错 , 而且顺序执行依
次调用也很不灵活 , 代码质量不高 。
2 寄存器组的优化原理
数 组一直是高级语言优化程序的重要手段 ,而汇编语言并没有提供此功能 。笔者认为 ,通过单片
·77·
长江大学学报 (自科版) 理工卷
2007 年 3 月 第 4 卷 第 1 期
Journal of Yangtze University (Nat Sci Edit) Sci & Eng V Mar.2007 , Vol.4 No. 1