没有仿真器的情况下如何开发AVR

发布者:数字翻飞最新更新时间:2017-12-20 来源: eefocus关键字:仿真器的  开发AVR 手机看文章 扫描二维码
随时随地手机看文章

在开发单片机程序时,有许多人依赖于仿真机,一旦离开了仿真机开发程序时就感觉无从下手。其实对FLASH存贮器单片机,不要仿真机也能方便快速地开发程序。具体可以从以下几方面入手:  

一、尽量使用高级语言开发系统程序 您有没有在写汇编程序时,标错一个标号而浪费您大把时间找错或跳转偏移量过大而不得不改动程序结构的经历。其实您如果使用高级语言开发程序,就不会有这样的痛苦。 在开发程序时,除了建立一个良好的开发文档外,使用语言的选择也很重要。有许多人认为使用汇编写程序比较精简,而用高级语言开发会浪费很多程序空间,其实这是一种误解。对一个有经验的,而且非常熟悉某种 单片机 的汇编高手而言,他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突然更换了一种新的单片机,您能保证一定可以写出比高级语言更简练的代码吗? 高级语言的优越性是汇编语言不能比的:  
1、程序移植方便  
2、程序的坚固性  
3、对数学运算的支持  
4、条理清晰的结构化编程,程序的可维护性  
5、开发周期短  
现在的高级语言编译器(如C编译器)已可以产生代码效率很高的机器代码,因此建议大家能用高级语言实现的程序尽可能使用高级语言写,在对速度和时序要求特严的场合可以采用混合编程的方法来解决。  

二、更多的使用软件模拟仿真环境 现在许多 单片机 都提供软件模拟仿真环境,如AVR单片机就可以在ATMEL公司提供的AVR STUDIO开发平台的模拟仿真环境中进行软件的模拟调试。BASCOM-AVR还提供了更加人性化和配合外部图形界面(键盘、标准LCD显示器等)的软件模拟调试环境。 ATMEL的AVR STUDIO是一个开发AVR单片机的集成开发环境,其支持高级语言和汇编语言的源代码级软件模拟调试。在模拟仿真条件下调试算法、程序流程等可以说和硬件仿真机是没有区别的;而调试延时程序、计算一段程序运行所花的时间等方面,可以说比硬件仿真器更方便,因为许多仿真机(如JTAG ICE)是无法提供程序运行时间等调试参数的。 另外,对I/O端口、定时器、UART、中断响应等,在AVR STUDIO中均可实现模拟仿真,用户也可以采用软件的单步运行、设置断点等手段,分析内存和查看AVR中所有的硬件资源的数据以及使用情况。 学会使用和以软件模拟仿真为主、已硬件仿真配合的系统开发调试手段可以大大提高项目的开发效率,缩短开发周期。因为,一旦系统整体设计完成,硬件PCB板的设计和制作同软件系统的开发可同时进行。当硬件系统板完成后,软件总体的架构也已经调试完成,既可进行实际的调试阶段。  

三、善用目标板上的硬件资源 在许多系统目标板上均有LED数码管、RS232等附件和接口,其实利用好这些附件接口,也能实现和完成程序的调试开发。 我们使用仿真器的目的是要观察 单片机 内部的状态和数据,利用这些附件和FLASH存贮器多次可擦写的特点,完全可以观察到单片机内部的状态。 AVR单片机是支持ISP的FLASH单片机,开发时可以通过下载电缆将其和PC连成一个整体,在程序编译完后立刻下载到目标MCU中运行。在需要观察单片机内部状态时,可以程序的适当位置加入少部分代码,把MCU的内部状态和数据通过LED、数码管等显示出来。在有RS232通信接口的应用中,可以直接将需要观察的MCU内部状态送到PC机,在PC机上用串口调试器等一些超级终端来显示数据。现在大部分的开发环境本身就提供了超级终端,如ICC、CVAVR、BASC0M-AVR等。 由于单片机采用了支持ISP的Flash技术,因此采用高级语言开发系统程序,更多的以软件模拟仿真技术,加上使用串口输出调试数据的开发手段已成为开发单片机和嵌入式系统(如32位ARM的COMMAND调试手段等)的流行和高效的方法。  

四、举例  
在开发AVR的I2C应用例程时,使用串口输出调试数据的方法介绍。  
首先初始化UART。可以看出初始化UART只需要很少的几行代码,在完成程序调试后将可以将其删除。如果你的系统程序本身就需要使用串口,那么初始化UART就没有一行多余的代码了。  
void uart_init(void)  
{  
UCSRB=(1<UBRRL=(fosc/16/(baud+1))%256;  
UBRRH=(fosc/16/(baud+1))/256;  
UCSRC=http://www.picavr.com/(1<}  

然后我们可以写一个putchar函数,或直接使用标准输入输出库中的putchar函数。  
void putchar(unsigned char c)  
{  
while (!(UCSRA&(1<UDR=c;  
}  

接下来只要在需要调试的程序部分调用putchar函数就可以将一些需要查看的  
MCU中硬件资源的数据和状态送PC机显示了。如要观察I2C中断程序中TWSR寄存器的值,只要在I2C中断程序中插入两行代码就可以了:  
#pragma interrupt_handler TWI_ISR:iv_TWI  
void TWI_ISR(void)  
{  
unsigned char temp = TestAck();  
putchar(temp);  
switch (temp);//调试完后,本行改为switch(TestAck()),  
//删除上面两行就可以了。  
{  
case SR_SLA_ACK:  
{  
fill_rece();  
TWI_STATE=TWI_RD;  
Twi_ACK();  
Break;  
}  
. . .  
}  
}  

在PC机的超级终端软件中,设置波特率、数据格式后打开串口就可以观察TWSR寄存器的状态值了。  

关键字:仿真器的  开发AVR 引用地址:没有仿真器的情况下如何开发AVR

上一篇:使用AVR定时/计数器的PWM功能设计要点
下一篇:2017彩电行业:寒冬之后谁是王者?

推荐阅读最新更新时间:2024-05-03 02:10

缺少仿真器AVR单片机开发方法
对FLASH存贮器单片机,不要仿真机也能方便快速地开发程序。具体可以从以下几方面入手: 一、尽量使用高级语言开发系统程序 您有没有在写汇编程序时,标错一个标号而浪费您大把时间找错或跳转偏移量过大而不得不改动程序结构的经历。其实您如果使用高级语言开发程序,就不会有这样的痛苦。 在开发程序时,除了建立一个良好的开发文档外,使用语言的选择也很重要。有许多人认为使用汇编写程序比较精简,而用高级语言开发会浪费很多程序空间,其实这是一种误解。对一个有经验的,而且非常熟悉某种单片机的汇编高手而言,他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突然更换了一种新的单片机,您能保证一定可以写出比高级语言更简练的代码吗? 高级语言的优越
[单片机]
AVR开发 Arduino方法(三) 定时/计数器子系统
Arduino UNO R3的主处理器ATMega328P拥有3个定时/计数器,它们分别是Timer0,Timer1和Timer2;它们都通过对来自内部或外部的脉冲信号进行计数的方式完成基本的定时/计数功能以及一些其他的功能。 Timer0和Timer2是8位定时/计时器,Timer1是16位定时/计数器;下面以Timer2为例讨论定时/计数器子系统的典型应用,这些内容同样适用于Timer0和Timer1。 1. 精准延时 在前面的例子中,已经使用了一些与精准延时相关的Arduino库函数:   delay(ms):延迟一段时间   ms:延迟的时长,单位是毫秒 请注意,上面的Arduino库函数使用了Timer0的中
[单片机]
<font color='red'>AVR</font><font color='red'>开发</font> Arduino方法(三) 定时/计数器子系统
AVR单片机开发软件安装及使用
  I CC AVR6.31AC语言编译器的安装在电脑中放入配套光盘,打开 IC CAVR6.31A安装文件后进入安装界面(左图))安装目录可使用默认方式,将其安装在C盘的icc文件夹中(右图)。安装完成后,需进行注册才能得到无时间限制的完全版软件。注册方式如下:   1.打开ICCAVR6.31A编译器界面,单击菜单栏Help→Regist SOF t→ware(左图),系统会提示关掉计算机的防病毒程序,单击Continue按钮进入注册界面(右图)o2.选中并复制EMailUn LOC kCode栏右侧框内的7组数值。   3.打开注册器,粘贴刚才复制的数值(下图)。   4.点击得到解锁码(下图
[单片机]
<font color='red'>AVR</font>单片机<font color='red'>开发</font>软件<font color='red'>的</font>安装及使用
利用Ultra Edit提高ICC AVR开发效率!!!
1.为什么还有这么多人选择AVR单片机? 鄙人在大学时候接触到了51单片机,作为一个初学者,C51是一款相当不错的选择,对于我来说,他从内部硬件到软件有着属于自己的一套完整的按位操作的系统。这样对于新手可以更加简单粗暴的进行定义和操作。其次新手不需要较大的运算量,太高的工作频率,但是却配有丰富的外围module。满足初学者小小的技能炫耀足矣,极佳的入门经典。 话说回来,当你入门以后,想要针对性的做出一些稳定性的小东西进行提高,你会发现C51已经不足以满足你的小野心,但是学习其他高级的MCU你又信心不足,这时候AVR单片机会是个不错的选择。相较于51,他有很多自己的优势,突出的优势比如速度更快、片上资源更丰富,IO驱动能力
[单片机]
利用Ultra Edit提高ICC <font color='red'>AVR</font><font color='red'>开发</font>效率!!!
AVR单片机开发环境搭建
一、开发环境搭建 CodeVisionAVR C Compiler用于程序的编辑以及编译.AVR Studio 4与USB AVR JTAGICE mkll-CN 用于在线调试和程序烧写。 二、AVR Studio 4中熔丝位的设置(在Fuses标签中,相应位打钩表示program即写0;不选中表示未编程即1) M161C: 工作于162模式还是161模式; BODLEVEL:掉电检测设置; OCDEN:片上调试使能; JTAGEN:JTAGE口下载使能; SPIEN:SPI使能位; WDTON:看门狗使能级别设置; EESAVE: EEPROM中内容是否要保留; BOOTSZ:用于设置程序块和启动块
[单片机]
<font color='red'>AVR</font>单片机<font color='red'>开发</font>环境搭建
ATMEL AVR微控制器开发方案
微控制器开发团队与编译器开发人员的合作成果是生成的代码效率更高,性能更好。本文介绍的是为了使ATMEL AVR微控制器系列更适合C编译器,开发者在编译器开发阶段对微控制器架构和指令集所进行的调整。 AVR架构的核心是一个可快速访问RISC寄存器文件。该文件由32个8位通用寄存器构成。微控制器可在一个单时钟周期内加载该文件中的任意两个寄存器到算术逻辑单元(Arithmetic Logical Unit, ALU),完成所要求的操作,将结果写回到任意一个寄存器。ALU支持寄存器间或某一寄存器与一个常数之间的运算和逻辑功能,单寄存器操作也是在ALU中执行的。微控制器使用一个哈佛(Harvard)架构,在该架构中,程序存储器空间与数据
[单片机]
ATMEL <font color='red'>AVR</font>微控制器<font color='red'>的</font><font color='red'>开发</font>方案
基于SST89C54/58单片机仿真器设计
1 概 述   SST89C54/58(简称89C54/58)是美国SST公司推出的多用途51系列单片机,片内集成了20 kB/36 kB的SuperFlashE'PROM程序存储器,分为BLOCK0(16kB/32kB)和BLOCKl(4kB)两块。其中,BLOCKl可以映射(Mapping)到64kB存储空间的最高端或最低端,而且,对于程序计数器来说可以是不可见的。由于其存储结构上独特的优点,使得89C54/58非常适合于用做单片机仿真器。 2 SST89C54/58的程序存储结构 2.1 存储器结构   89C54/58片内的存储块BLOCK0占据从0000H到3FFFH/7FFFH的存储空间,BLOCKl占据从F0
[单片机]
建立linux下avr单片机开发环境
有一块ATmega128开发板,自从用了ubuntu后就开始吃灰了。其实linux进行avr单片机开发还是很方便的,就跟嵌入式一样,只是将编译器由arm-linux-gcc改为avr-gcc. 主要参考:apt-blog.net/developing_avr_under_linux 环境:ubuntu13.04 一、安装avrdude sudo apt-get install avrdude 这样USBasp就被linux所支持了。 二、安装编译器: sudo apt-get install gcc-avr binutils-avr avr-libc 这样就可以了,开始linux下avr之旅吧
[单片机]
小广播
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty