当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]在开发单片机程序时,有许多人依赖于仿真机,一旦离开了仿真机开发程序时就感觉无从下手。其实对FLASH存贮器单片机,不要仿真机也能方便快速地开发程序。具体可以从以下几方

在开发单片机程序时,有许多人依赖于仿真机,一旦离开了仿真机开发程序时就感觉无从下手。其实对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

UBRRH=(fosc/16/(baud+1))/256;

UCSRC=http://www.picavr.com/(1<}

然后我们可以写一个putchar函数,或直接使用标准输入输出库中的putchar函数。

void putchar(unsigned char c)

{

while (!(UCSRA&(1

}

接下来只要在需要调试的程序部分调用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寄存器的状态值了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

仿真器是一种用于模拟和测试特定系统或设备的软件工具。通过仿真器,开发人员可以在计算机上模拟系统或设备的运行环境,以便测试和验证其性能、可靠性和正确性。本文将介绍仿真器的特点、应用及其在各个领域中的重要性。

关键字: 仿真器 模拟系统

对于单片机语音芯片来说,仿真器这一专用工具不仅可以调试您的程序,而且还可以帮助您识别设计工程中的一些潜在的硬件和软件问题。仿真器应用广泛这是毋庸置疑的,不仅单片机这一领域,连语音芯片的FPGA。

关键字: 单片机 仿真器 FPGA

一个理想的 使开发者能观察到单片机内部的操作,仿真器是使替代单片机并使单片机操作可视化的硬件工具。

关键字: 单片机 仿真器 硬件工具

仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。

关键字: 单片机 仿真器 程序

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制...

关键字: AVR 单片机 计算机

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通...

关键字: AVR 单片机 计算机

AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。 但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以...

关键字: AVR 单片机 硬件

在这篇文章中,小编将为大家带来AVR单片机的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: AVR 单片机

在下述的内容中,小编将会对AVR单片机的相关消息予以报道,如果AVR单片机是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: AVR 单片机

计算机模拟(简称sim)是利用计算机进行模拟的方法。利用计算机软件开发出的模拟器,可以进行故障树分析、测试VLSI逻辑设计等复杂的模拟任务。

关键字: 模拟器 CPU模拟器 仿真器
关闭
关闭