历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2019年12月24日 | 摆脱仿真器的AVR单片机程序开发设计

2019-12-24 来源:elecfans

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


一、尽量使用高级语言开发系统程序

您有没有在写汇编程序时,标错一个标号而浪费您大把时间找错或跳转偏移量过大而不得不改动程序结构的经历。其实您如果使用高级语言开发程序,就不会有这样的痛苦。在开发程序时,除了建立一个良好的开发文档外,使用语言的选择也很重要。有许多人认为使用汇编写程序比较精简,而用高级语言开发会浪费很多程序空间,其实这是一种误解。对一个有经验的,而且非常熟悉某种单片机的汇编高手而言,他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突然更换了一种新的单片机,您能保证一定可以写出比高级语言更简练的代码吗?


高级语言的优越性是汇编语言不能比的:

1、程序移植方便

2、程序的坚固性

3、对数学运算的支持

4、条理清晰的结构化编程,程序的可维护性

5、开发周期短

现在的高级语言编译器(如C编译器)已可以产生代码效率很高的机器代码,因此建议大家能用高级语言实现的程序尽可能使用高级语言写,在对速度和时序要求特严的场合可以采用混合编程的方法来解决。


二、更多的使用软件模拟仿真环境

现在许多单片机都提供软件模拟仿真环境,如AVR单片机

“ style=”color:blue;text-decoraTIon:none;font-weight:normal;“》

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就没有一行多余的代码了。

推荐阅读

史海拾趣

Digitron公司的发展小趣事

随着数字化和智能化时代的到来,Digitron公司也积极拥抱变革。公司投入大量资源用于数字化转型和智能化升级,通过引入先进的生产管理系统和人工智能技术提高生产效率和产品质量。同时,Digitron公司还积极探索物联网、大数据等新技术在电子行业的应用,为客户提供更加智能、便捷的解决方案。这些努力使Digitron公司在激烈的市场竞争中保持领先地位并实现了可持续发展。

AINFO Inc公司的发展小趣事

为了进一步提升技术水平和市场竞争力,AINFO Inc公司积极寻求与国际知名企业的技术合作。通过与国外企业的合作,公司引进了先进的技术和管理经验,提升了自身的研发能力和管理水平。同时,公司也加快了国际化发展的步伐,拓展了海外市场,提升了品牌知名度。

Harvatek Corporation公司的发展小趣事

背景:随着电子技术的飞速发展,Hantronix始终站在技术创新的前沿。公司不断投入研发资源,致力于开发具有自主知识产权的新产品和技术。

发展:Hantronix成功推出了一系列创新产品,如液晶显示器、图形模块、触摸屏等,这些产品不仅性能卓越,而且设计独特,满足了市场多样化的需求。同时,公司还积极申请专利保护,确保其技术成果得到法律的有效保障。

Accelink Technologies Co Ltd公司的发展小趣事

背景:成立于1975年的Hantronix公司,自诞生之初便专注于为工业、医疗市场的多元化客户群提供LCD显示解决方案。在那个电子显示技术刚刚起步的年代,Hantronix凭借其前瞻性的市场洞察力和技术积累,迅速在行业中站稳脚跟。

发展:公司初期便明确了其产品定位,即专注于高品质、高性能的LCD显示产品,以满足工业控制和医疗设备对显示精度、稳定性和耐用性的严苛要求。通过不断的技术研发和产品优化,Hantronix逐渐在市场中建立了良好的口碑。

Continental公司的发展小趣事

随着汽车电子化的趋势日益明显,大陆集团也开始将业务拓展到汽车电子领域。在新的架构体系中,车身电子部门被纳入“车联网和信息”这个大的业务板块中。大陆集团致力于实现车身电子的更好互联、更好呈现信息和更好的集成。通过互联技术,数据能够在汽车与外界之间进行传递,并将这些信息通过人机交互界面呈现给驾驶者和乘客。同时,大陆集团还致力于确保数据从车辆到云端的顺畅传输和处理。这些举措使得大陆集团在汽车电子领域取得了显著的进展。

Ceramics公司的发展小趣事

某家名为“创新陶瓷”的Ceramics公司,通过不断研发新技术,成功打破了传统陶瓷材料在电子领域的应用限制。该公司推出了一款具有高热导率、低电阻率的陶瓷基板,显著提高了电子设备的性能稳定性。这一创新不仅赢得了市场的广泛认可,还吸引了多家知名电子厂商的合作意向。创新陶瓷通过持续的技术创新,逐渐在电子行业树立了领先地位。

问答坊 | AI 解惑

放大电路的直流工作状态

这一节是本章的重点内容,在这一节中我们要掌握公式法计算Q点和图形法计算Q点  在学习之前,我们先来了解一个概念: 什麽是Q点?它就是直流工作点,又称为静态工作点,简称Q点。我们在进行静态分析时,主要是求基极直流电流IB ...…

查看全部问答>

问个初级问题:关于checksum

题目是这样的:从主控板给压缩机发送指令,每隔一秒一次,每次发送20个字节,其中前十位为发送起始标志位1bit,命令字节(8bit),发送结束标志位1bit。后十位为发送起始标志1位,checksum(8bit),结束标志1位。如果命令字节是10000000,请问chec ...…

查看全部问答>

关于发表话题回复话题时的系统故障

我们发表话题或者回复话题的时候。有事写很长,要很多时间。当好不容易打完了,然后点发表,这个时候会出现各种各样的错误(很正常而且几率很大。我试过基本十次有五六次都会错误),这个时候如果实现没保存那么辛辛苦苦打出来的东西就付诸东流,希 ...…

查看全部问答>

编译多媒体程序时,报错:cannot open input file 'strmiids.lib'

  首先用PB定制了一个内核,并生成了相应的SDK,安装了SDK后,用EVC调试一个多媒体程序时总是报错:   LINK : fatal error LNK1181: cannot open input file \'strmiids.lib\'       请问:     ...…

查看全部问答>

关于430的复位电路

整个板子只接了430和复位电路。 RST上10k到VCC没问题。仿真器能连上。 可是如果同时0.1uF到GND。仿真器就连不上了。。 试过270nF也一样。。这个是什么问题啊。 整个板子只接了430和复位电路。请指点。…

查看全部问答>

【ULP Advisor Rule Table】规则2.1利用定时器完成延时操作

很多时候我们偷懒采用CPU在那里空跑的方式来获得延时,下面看看有哪些延时语句 __no_operation(); _NOP();复制代码这是空操作语句,其实我认为少量的这样的语句是可以接受的volatile int i = MAX_VALUE; while (i-- > 0);复制代码这种是最常见的 ...…

查看全部问答>

问个UCOS条件编译的问题

#ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif 问题可能有些幼稚,我不知道存不存在这种可能。 在一个项目中很多C文件调用这段程序,有的C文件里定义的OS_GLOBALS,而有些没有定义,那么OS_EXT是什么情况? NULL还 ...…

查看全部问答>

飞行模式下手机充电速度翻倍?真 假?

近日有人说,把手机调到飞行模式,充电速度快一倍,适用于紧急用途。 专业人士称:手机充电时,信号功能也在运作,会消耗许多电量,飞行模式下充电,手机本身就能省不少电量。至于能快多少? 根据手机种类、新旧程度而定。赶紧试试! …

查看全部问答>

学长给了我一块430的板子,比赛时发的,msp430fr5739,自带仿真器,怎么在IAR设置啊

怎么在IAR中设置相关的选项呢,仿真什么的,有没有相关资料呢,好像还是149的资料多…

查看全部问答>

LPC812

求LPC812的使用手册或者数据手册!十分感谢!…

查看全部问答>