首 页电子技术网络电视电路设计论坛
您当前的位置:无限电子制作网电子技术实用技能 → 文章内容 退出登录 用户管理
本类热门文章
相关文章
热门产品





AVR单片机的程序设计
作者:佚名  来源:不详  发布时间:2007-1-19 20:48:43

减小字体 增大字体

 

>

单片机的规格品种很多,但程序设计的方法是相同的。鉴于《电子报》已举办过MCS-51单片机和PIC单片机的专题讲座,读者对单片机程序设计的步骤已经基本掌握,本文主要谈谈单片机程序设计的方法、AVR单片机的I/O空间定义及内部寄存器和位定义文件。

一、 程序设计的方法

1.模块化设计

模块化设计是将整个单片机程序分解成若干个功能相对独立的、较小的程序模块,对各程序模块分别进行编程和调试,最后将这些程序模块集成为实现特定功能的程序。

采用模块化设计,可以使得整个程序的线条清晰,模块可以为多个程序共享,程序调试比较方便。
2.最大限度地利用通用软件包、子程序库单片机应用技术是一项成熟技术,许多教材、技术手册都给出不少通用软件包和子程序库。这些是经过实践检验的。就像在进行电路设计时要用若干个IC构成自己的电路一样,我们在进行软件设计时,也要善于使用通用软件包和子程序库来构筑自己的软件系统。这样,就可以大大提高程序设计的效率,提高整个程序的可靠性。

在调用通用软件包、子程序库时,要特别注意通用软件包和子程序的入口条件、出口条件、占用寄存器等。对于在其他程序中正在使用的寄存器等,应进行压栈保护。

在SL-AVR开发实验器的随机光盘中,配有大量的子程序,读者可以直接将之用于自己的应用程序中,初学者还可以通过阅读、运行这些程序学习AVR单片机程序编制的方法,

3.逐步建立常用程序模块和子程序库

单片机的硬件电路是比较经典的。随着单片机系统真正的单片化,硬件电路也更加简化。但单片机程序设计却大多处于低水平、重复性劳动的状况。近些年,不少单片机界的有识之士,都在呼唤单片机的软件知识平台。尽管现阶段尚无突破性进展,但我们每个人在进行程序设计时,都应有意识地将具有通用性、共通性的程序独立出来,形成程序模块和子程序,以便在其他单片机应用程序中直接调用,逐步建立个人的常用程序模块和子程序库。

二、 AVR单片机的I/O空间定义及内部寄存器和位定义文件

1.AVR单片机的I/O空间定义

在第二讲《AVR单片机的CPU和存储器》(见《电子报》2001年第9期第十二版)一文中,介绍了AVR单片机的数据存储器。其数据存储器的 0020~ 005F是64个I/O寄存器空间,对应的I/O地址为 00~ 3F。AVR单片机的型号不同,I/O寄存器的数量和地址也不同,但不超过64个。AT90S8515的I/O空间定义如附表所示。

2. AVR单片机的内部寄存器和位定义文件

AVR单片机的内部寄存器(包括I/O寄存器和X、Y、Z寄存器),以及可以按位寻址的I/O寄存器位的位名,均须由内部寄存器和位定义文件进行定义,以便编程时使用。在定义文件中,寄存器名用I/O地址的十六进制地址表示,寄存器位名用0~7位表示。

如寄存器SREG定义为:.Equ SREG= 3f,寄存器TCCR0的CS02位定义为:. Equ CS02=2。

读者可以打开SL-AVR开发实验器随机光盘中的8515def.Inc文件,查看AT90S8515单片机的内部寄存器和位定义文件,也可以自己编写AVR单片机的内部寄存器和位定义文件。

注意:在AVR单片机程序的开头,必须对所用单片机的内部寄存器和位进行定义。ATMEL公司已将内部寄存器和位定义用××××def.Inc文件的形式提供给用户,使用时只需用指令.Include ″××××def.Inc″调用便可。

在第八讲《AVR单片机开发工具的使用》和第十一讲《AVR单片机常用伪指令》中,已对伪指令include进行了讲述,这里不再重复。

总之,AVR单片机程序设计的基本方法与我们过去所学的其他单片机是相同的,程序的基本书写格式也是相同的。SL-AVR开发实验器提供了大量子程序,大家在学习和开发产品时,应尽量使用这些程序,达到事半功倍的效果。

 

[] [返回上一页] [打 印]
文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 产品订单

Copyright © 2005-2008 Wxdzz.Com. All Rights Reserved .
Powered by:NewAsp SiteManageSystem Version 3.0.0

赣ICP05000510号