一、 程序设计的方法
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开发实验器提供了大量子程序,大家在学习和开发产品时,应尽量使用这些程序,达到事半功倍的效果
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |