这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » AVR单片机程序设计

共1条 1/1 1 跳转至

AVR单片机程序设计

助工
2014-12-01 23:54:40     打赏
一、 程序设计的方法
1.模块化设计
    模块化设计是将整个单片机程序分解成若干个功能相对独立的、较小的程序模块,对各程序模块分别进行编程和调试,最后将这些程序模块集成为实现特定功能的程序。
    采用模块化设计,可以使得整个程序的线条清晰,模块可以为多个程序共享,程序调试比较方便。 
2.最大限度地利用通用软件包、子程序库单片机应用技术是一项成熟技术,许多教材、技术手册都给出不少通用软件包和子程序库。这些是经过实践检验的。就像在进行电路设计时要用若干个IC构成自己的电路一样,我们在进行软件设计时,也要善于使用通用软件包和子程序库来构筑自己的软件系统。这样,就可以大大提高程序设计的效率,提高整个程序的可靠性。 
    在调用通用软件包、子程序库时,要特别注意通用软件包和子程序的入口条件、出口条件、占用寄存器等。对于在其他程序中正在使用的寄存器等,应进行压栈保护。 
    在SL-AVR开发实验器的随机光盘中,配有大量的子程序,读者可以直接将之用于自己的应用程序中,初学者还可以通过阅读、运行这些程序学习AVR单片机程序编制的方法,
3.逐步建立常用程序模块和子程序库
    单片机的硬件电路是比较经典的。随着单片机系统真正的单片化,硬件电路也更加简化。但单片机程序设计却大多处于低水平、重复性劳动的状况。近些年,不少单片机界的有识之士,都在呼唤单片机的软件知识平台。尽管现阶段尚无突破性进展,但我们每个人在进行程序设计时,都应有意识地将具有通用性、共通性的程序独立出来,形成程序模块和子程序,以便在其他单片机应用程序中直接调用,逐步建立个人的常用程序模块和子程序库。 
二、 AVR单片机的I/O空间定义及内部寄存器和位定义文件
1.AVR单片机的I/O空间定义
    在第二讲《AVR单片机的CPU和存储器》一文中,介绍了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开发实验器提供了大量子程序,大家在学习和开发产品时,应尽量使用这些程序,达到事半功倍的效果。
    在调用通用软件包、子程序库时,要特别注意通用软件包和子程序的入口条件、出口条件、占用寄存器等。对于在其他程序中正在使用的寄存器等,应进行压栈保护。 
    在SL-AVR开发实验器的随机光盘中,配有大量的子程序,读者可以直接将之用于自己的应用程序中,初学者还可以通过阅读、运行这些程序学习AVR单片机程序编制的方法,
3.逐步建立常用程序模块和子程序库
    单片机的硬件电路是比较经典的。随着单片机系统真正的单片化,硬件电路也更加简化。但单片机程序设计却大多处于低水平、重复性劳动的状况。近些年,不少单片机界的有识之士,都在呼唤单片机的软件知识平台。尽管现阶段尚无突破性进展,但我们每个人在进行程序设计时,都应有意识地将具有通用性、共通性的程序独立出来,形成程序模块和子程序,以便在其他单片机应用程序中直接调用,逐步建立个人的常用程序模块和子程序库。 
二、 AVR单片机的I/O空间定义及内部寄存器和位定义文件
1.AVR单片机的I/O空间定义
    在第二讲《AVR单片机的CPU和存储器》一文中,介绍了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开发实验器提供了大量子程序,大家在学习和开发产品时,应尽量使用这些程序,达到事半功倍的效果

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]