单片机与嵌入式系统(111X)-07典型单片机系统AVR-开发环境_第1页
单片机与嵌入式系统(111X)-07典型单片机系统AVR-开发环境_第2页
单片机与嵌入式系统(111X)-07典型单片机系统AVR-开发环境_第3页
单片机与嵌入式系统(111X)-07典型单片机系统AVR-开发环境_第4页
单片机与嵌入式系统(111X)-07典型单片机系统AVR-开发环境_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七讲 AVR单片机开发环境主讲教师:董秀则dongxz(主楼610;5097 /单片机与嵌入式系统C语言开发环境及其程序设计内容及重点AVR单片机高级语言开发环境ICCAVR开发环境ICCAVR中C语言基本格式ICCAVR库函数ICCAVR中C语言对硬件的操作本讲重点ICCAVR中C语言程序基本格式ICCAVR中C语言对硬件的操作基本库函数7-2.1 AVR高级语言开发环境IAR Systems的Embedded Workbench代码效率高、价格高、国内不普及IMAGE CRAFT的ICCAVR完全支持ANSI C;可以与AVR Studio紧密结合,生成可以通过

2、Studio调试的程序;国内使用比较普遍几乎不支持位寻址HP INFO Tech的Code Vision与ICCAVR一样比较普遍使用GNU GCC AVR完全免费、代码开放BASCOM-AVR基于Basic语言的一类开发环境7-2.2 ICCAVR界面Tools Menu 工具菜单 Environment Options 打开环境和终端仿真器选项对话框 Editor and Print Options 打开编辑和打印选项对话框 In System Programmer 在系统编程 AVR Calc 打开AVR 计算器可以计算 Application Builder 打开应用向导程序生成硬件的

3、初始化代码,对新手非常有用 Configure Tools 允许你添加自己的内容到工具菜单 Run 以命令行方式运行一个程序 In System Programmer 在系统编程 Application Builder:设置、生成模板Options 编译选项Include Path(s) 你可以指定包含文件的路径Assembler Include Path(s) 指定汇编包含文件的路径Library Path 链接器所使用的库文件的路径Output Directory 输出文件的目录Compiler 页面有Strict ANSI C Checking 严格的ANSI C 语法检查Accept

4、Extensions 接受C+类型语法扩充Target 页面有Device Configuration 选择目标MCUMemory Sizes 要选择Custom 时指定内存大小包括ROM SRAM 和EEPROMText Address 通常代码地址开始于中断向量区域后面Data Address 指定数据起始地址通常为0 x60PRINTF Version 选择PRINTF 版本Small 或 Basic: 只有 %c, %d, %x, %X, %u, and %s 格式支持Long: 支持 %ld, %lu, %lx, %lXFloating point: %f 支持注意这个选项需要很大的

5、内存Return Stack Size 指定编译器使用的硬件堆栈的大小/s/blog_5ddb672b0100g455.html利用ICCAVR建立第一个程序第一步:运行iccavr,运行projectnew,新建一个工程第二步:运行ToolsApplication Builder 建立工程的工具 在CPU标签下:选择处理器、时钟、外部中断等在PORT标签下:设置端口属性、方向和初始值等其他。第三步:确定并将生成文件保存、加入项目第四步:在编辑区添加程序代码 void main(void)init_devices(); /初始化while(1)。 第五步:Projectoptions ,将Ta

6、rgets标签下Device configuration改为ATmega16,其他不变,点击ok 第六步:编译工程。 Projectrebuild all 或者直接使用快捷键 shift f9*.c 主程序文件 *.cof COFF 格式输出文件用于在ATMEL 的AvrStudio 环境下进行程序调试 *.dbg ImageCraft 调试命令文件 *.hex INTEL HEX 格式文件其中包含了程序的机器代码 *.lst 列表文件在这个文件中列举出了目标代码对应的最终地址 *.mp 内存映象文件它包含了您程序中有关符号及其所占内存大小的信息 *.o 由汇编文件汇编产生的目标文件多个目标文

7、件可以链接成一个可执行文件 *.prj 工程文件 *.s 表示是汇编语言源文件 *.SRC 工程配置记录 *_cof.aps 使用AvrStudio调试后保存的调试环境相关信息。 第七步:在AVR STUDIO下调试第八步:下载执行(可以通过AVR STUDIO或者Tools In System Programmer )注意:编程方式选择STK500;ISP设置使用C:Program FilesAtmelAVR ToolsSTK500Stk500.exe注意:OPTION环境变量的设置当我们需要使用ICC自己提供的头文件时使用默认头文件;需要使用自己的头文件时,可以将头文件拷贝到C:iccin

8、clude目录下,也可以在ProjectOption中添加自己编制的头文件,但是头文件名不能与C:iccinclude目录下头文件名相重复在AVR Studio中进行调试时需要通过文件打开项,打开对应的.cof文件,之后将保存.cof.aps如果不用软件框架生成(Tools Application Builder ),则需要自行选择对应的器件型号,否则将无法编译链接ProjectOptionTarget7-2.3 ICCAVR中C语言基本格式一个C 程序必须定义一个main 调用函数。编译器会将程序与启动代码和库函数链接成一个可执行文件/*包含头文件*/#include iom16v.h/*函

9、数定义*/void Fun1(unsigned char i) unsigned char a, b;/*主函数*/void main(void) 用户程序ICCAVR中C语言的启动文件ICCAVR链接器会自动将启动文件连接到您的程序之前并将标准库libcavr.a 与你的程序相连接启动文件根据目标MCU 的不同选择。启动文件定义了一个全局符号_start 它也是您的程序的起点启动文件的功能有:定义了复位向量初始化硬件和软件堆栈指针从idata 区拷贝初始化数据到直接寻址数据区data 区将bss 区全部初始化为零调用用户主例程main 函数定义一个退出点如果你的主函数main( )一旦退出它

10、将进入这个退出点进行无限循环7-2.4 库函数常用库函数io*.h:ATMEL 官方公开的定义IO 寄存器的源文件macros.h:包含了许多有用的宏和定义字符类型库#include 浮点运算库#include 标准输入输出库标准的文件输入输出是不能真正植入微控制器MCU 的。#include int getchar():使用查寻方式从UART 返回一个字符int putchar(int c):使用UART 以查寻方式输出单个字符。标准库和内存分配函数标准库头文件定义了宏NULL 和RAND_MAX 和新定义的类型size_t 并且描述了下列函数int abs(int i):返回i 的绝对值i

11、nt atoi(char *s):转换字符串s 为整型数并返回它字符串double atof(const char *s):转换字符串s 为双精度浮点数long atol(char *s):转换字符串s 为长整型数void *calloc(size_t nelem, size_t size):分配“nelem”个数据项的内存连续空间,每个数据项的大小为size 字节,并且初始化为0void free(void *ptr):释放ptr 所指向的内存区void *malloc(size_t size):分配size 字节的存贮区void _NewHeap(void *start, void *en

12、d):初始化内存分配程序的堆。汇编语言系统及其开发环境汇编语言及汇编系统AVR汇编器伪指令AVR汇编语言格式和表达式汇编程序的基本格式AVR Studio汇编语言集成开发环境本讲重点汇编语言的特点 汇编程序的基本格式AVR Studio汇编语言集成开发环境7.1 汇编语言及汇编系统汇编语言:(Assembly Language)是面向机器的程序设计语言;是最贴近指令系统、最能发挥指令系统功效的一种语言;是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言紧贴指令系统的设计,但是不是机器语言,因此必须通过汇编器将其汇编成为机器语言才能够由处理器识别并执行汇编器

13、是将汇编语言编译成为机器代码的一组程序。在8086系列中常用的汇编工具MASM、AVR单片机具有AVR Assembler 汇编器集成在AVR集成开发环境AVR studio中。汇编语言的特点专用性:汇编语言面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言往往依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。 直接和简捷:汇编语言紧贴指令系统的设计,保持了机器语言的优点,具有的直接和简捷特点 高效:汇编语言目标代码简短,占用内存少,执行速度快,是高效的程序设计语言 TIVC33上实现DES算法,C语言需要1458个时钟周期,而汇编需要962

14、个时钟周期功能强大:汇编语言可有效地访问、控制计算机的各种所有硬件设备 ,可以实现所有的功能设计源程序设计比较困难工作量大、易读性不高、可移植性不好,因此在实时性要求不高、硬件访问较少等大程序设计中通常不采用汇编语言的应用系统软件多数系统软件采用有汇编语言参与的编写实时性要求高的程序几乎所用快速处理、位处理、访问硬件设备等的高效程序是用汇编语言编写或者高级语言嵌套汇编语言编写硬件资源严格受限的程序对于工业控制、武器、航天等内存空间、处理速度等资源严重受限的系统往往需要使用汇编语言实现时序控制要求严格的系统系统的调试尽管你使用了高级语言,在调试中汇编语言可以帮助你了解C代码的性能和特点,甚至找到

15、使用开发平台本身的BUG汇编语言是理解整个计算机系统的最佳起点和最有效途径 通过汇编语言的学习,可以从根本上彻底和完全了解芯片的结构和性能,以及工作原理 通过汇编语言的学习,向上为理解各种软件系统的原理,打下技术理论基础通过汇编语言的学习,向下为掌握硬件系统的原理,打下实践应用基础7.2 AVR汇编器伪指令伪指令:是基于对应的汇编系统设计的,用于确定汇编程序格式化的一些特殊标记。伪指令不能转换成操作执行代码,只是用于通知编译器目标程序的格式、助记符定义等伪指令可以通过编译器控制代码的空间分配,对编译器的工作过程进行控制AVR伪指令包括如下伪指令说明伪指令说明伪指令说明BYTERAM中预留字节D

16、W定义字常数DEVICE指定器件CSEG声明代码段DB定义字节常数LISTMAC列表宏表达式DSEG声明数据段EQU定义表示符常数INCLUDE包含指定文件ESEG声明EEPROM段EXIT退出文件MACRO宏定义开始DEF定义寄存器符号ORG指定程序起始位置ENDMACRO宏定义结束SET赋值给标识符LIST列表文件生成允许NOLIST列表文件禁止7.3 汇编语言的语法与表达式汇编语言的基本格式标号: 伪指令 操作数 ;注释标号: 指令 操作数 ;注释;注释空行标号语句地址的标记符号,用于引导该语句的访问和定位。用于分支跳转指令,变量名称等一般由ASCII字符组成,第一个字符为字母同一个标号

17、在一个独立的程序中只能定义一次不能使用保留字伪指令指令操作数注释其他符号:,:等表达式:AVR支持的表达式由操作数、函数和运算符组成操作数用户定义的标号用户用SET伪指令定义的变量用户用EQU定义的常量整数常数:十进制、十六进制、二进制程序计数器PC的值函数LOW(表达式) 返回表达式值的低字节HIGH (表达式)返回表达式值的高字节BYTE2(表达式)返回表达式值的高字节BYTE3(表达式)返回表达式值的第三字节BYTE4(表达式)返回表达式值的第四字节LWRD(表达式) 返回表达式的015位HWRD(表达式)返回表达式的1531位PAGE(表达式)返回表达式的1621位EXP2(表达式)返

18、回表达式的2次幂的值LOG2(表达式)返回表达式的对数值的整数部分器件定义头文件对器件的型号进行了定义器件定义头文件对所有寄存器、IO接口等进行了标称化的定义进行了标志位、中断向量地址等的标称化定义ATmel 公司提供了AVR开发平台的多种器件的对应头文件定义.inc文件,集成在AVR studio中路径:C:Program FilesAtmelAVR ToolsAvrAssemblerAppnotes以ATmega16为例,其头文件名称“m16def.inc”7.4 AVR汇编程序基本构架;程序说明.include “m16def.inc“;包括器件配置定义文件,不能缺少.def count

19、 = R18.def tmp1 = R20.DSEG;数据段. org $0000Table1: .BYTE 32;预留32个字节.DSEG;数据段. org $0040Table2: .BYTE 32;预留32个字节包含器件头文件数据段定义数据段定义.CSEG.org $0000;上电复位启始地址rjmp Reset;转上电复位后的初始化程序执行;中断向量区.org $002A;跳过中断向量区Reset:ldi r16,high(RAMEND);取内部RAM最高地址的高位字节out sph,r16;放入SP的高位ldi r16,low(RAMEND);取内部RAM最低地址的低位字节out s

20、pl,r16;放入SP的低位,SP中的值见器件 配置文件m16def.incser temp1;置temp1(R20)为0XFFout ddrc,temp1;定义PC口为输出out portc, temp1 ;PC口输出为1ldi count,197;设置延时时间Loop:cbi portc, 0 recall Delay;调用延时子程序,延时一秒sbi portc,0;值PORTC.0位为1,LED灭rcall delay;调用延时子程序,延时一秒rjmp Loop;循环跳转到loop继续执行设置堆栈指针7.5 汇编语言开发环境AVR StudioAVR Studio包括:AVR Assembler编译器AVR Studio软件模拟调试功能AVR Prog串行下载JETG I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论