AVR单片机C语言入门一例_cvavr hex文件-程序员宅基地

技术标签: 语言  c  编译器  comments  hex  单片机学习  工作  

【 前言 】AVR单片机C语言编译软件有IAR、ICCAVR、winavr、AtmanavrCodeVisionAVR等。其中CodeVisionAVR又称 CVAVR,它可以说是目前最容易入门的C编译器,它体积小巧,但是代码效率却很高, 风格与keil-C51类似,与Keil-C51一样支持位变量、支持IO端口的位操作(其它的如IAR、ICCAVR、GCCAVR都没有此功能)下面就以CodeVisionAVR1.25.1为例来说说如何使用这个软件。

 

【步骤一】设置软件的工作界面。软件的默认字体并不太好看,需要设置一下,先运行CodeVisionAVR,点击菜单栏的“Settings”选择“Editor”就可以打开设置界面了,其中“Font”就是字体,请选择自己喜欢的字体和大小,推荐使用Fixedsys字体;另外“Comments”是注释,颜色选择灰白色比较容易区分;关键字“C Keywords”选择蓝色比较大众化。这样,工作界面就算设置完毕了。

 

【步骤二】新建工程。点击菜单栏的“File”选择“New”;在对话框里选择“Project”新建一个工程;在新建工程对话框里选择“yes”就出现了向导界面了。我们是以ATmega48为例,芯片当然是选择ATmega48了;芯片时钟一般是默认1M内部RC时钟,在时钟框里输入“1”就是了;由于我们刚开始还不熟练,所以其它的选项就不必理会;最后,我们点击向导的“File”菜单,选择“Generate,Save and Exit”保存向导产生的文件,一共是3个,分别是C文件、工程文件、向导文件。

 

【步骤三】编写源代码。完成上面的步骤后就可以出现主编辑窗口了,里面的内容就是软件向导产生的一些初始化代码,如果你不喜欢这些代码,可以把其中的一部分或者全部删除, 并写入自己的代码。

 

【步骤四】编译源代码。写好代码后点击编译按钮(或者点击菜单栏的“Project—>Make”),如果源代码没有错误,那么就可以产生烧写单片机所需要的hex文件了,如果源代码有错误的话则不会产生hex文件,并且软件会在左边的窗口里显示出红色的错误提示,单击它就可以定位到错误的地方了。

 

【步骤五】烧写hex文件。烧写也称‘编程’或者‘下载’;CVAVR集成芯片的ISP下载功能。不过由于这个软件是E文的,怕有部分E文不好的朋友操作不慎把芯片锁死,所以这个步骤就不详细的介绍了,推荐使用双龙公司的中文SL-ISP编程软件

 

   下面是一个最简单的例子,就是让ATmega48单片机的‘PD3’引脚输出1Hz的方波驱动LED。 硬件方面,新买回来的ATmega48的时钟是默认的内部RC振荡时钟,频率是1MHz,我们只要把芯片接上5V电源 就可以工作了,电路够简单吧,代码如下:

//编译器: CodeVisionAVR 1.25.1 Evaluation
//芯片时钟: 1000000Hz

#include <mega48.h>     //单片机是ATmega48
#include <delay.h>      //延时函数的头文件
void main(void)         //主函数,单片机从这里开始运行
{
   PORTD.3=0;           //配合DDRD.3=1使用就使PD3端口推换输出低电平
   DDRD.3 =1;           //设置PD3引脚为输出
   while (1)            //循环语句,括号里面的表达式是"真"就循环
   {
      delay_ms(500);    //延时500ms
      PORTD.3=~PORTD.3; //电平取反
   };
}

 

   另外有一点要提一下的就是,上面的源代码编译后产生的机器代码大小是111words,就是222字节,表面上看这个CVAVR软件的代码效率不高,但是事实却恰恰相反,随着源代码的增多,你就会发现,这个编译软件产生的机器代码不管是大小还是运行时间都是非常优秀的,这也是本站推荐使用的其中一个原因。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dongliqiang2006/article/details/3915228

智能推荐

什么是nvm,nvm详解-程序员宅基地

文章浏览阅读9.5k次,点赞3次,收藏3次。nvm1. 概念详情点击nvm全名node.js version management,是一个node的版本管理工具首先最重要的是:一定要卸载已安装的 NodeJS,否则会发生冲突。然后下载 nvm-windows 最新安装包,直接安装即可。_nvm

软件测试影响最深的bug,软件测试面试题-那些让我印象深刻的bug-程序员宅基地

文章浏览阅读7.7k次。相信大家在工作中面试过程中经常被问到,让你印象最深刻的一个bug是什么,这是一个开放性的题目,并没有标准答案,每个人接触过的系统都不一样,遇到过的问题也不一样,可能面试官只是想看一下你的表达能力,以及平常在工作中是否会进行总结。这类问题可以挑选容易被人忽略的场景,难以想到的场景,特殊机型的兼容性或者特殊操作下才会出现的问题等。接下来为大家分享一个我今天遇到的一个问题:由于缓存中key的设置不合理导..._面试过程中遇到你印象最深刻的bug 是什么

ActivityManagerService启动activity流程简析(二)_removepausetimeout-程序员宅基地

文章浏览阅读2.7k次。Task.java private boolean resumeTopActivityInnerLocked(ActivityRecord prev, ActivityOptions options) { ... // 1.获取栈顶的activity ActivityRecord next = topRunningActivity(true /* focusableOnly */); ... ..._removepausetimeout

草图大师SketchUp 2021 mac版 兼容macos11系统正式上线!_sketch up 有mac版本吗-程序员宅基地

文章浏览阅读3.9k次。草图大师2021 mac版是一款功能强大且完善的建筑草图设计软件,它能够帮助设计师快速的将3D模型进行创建并进行演示和分享,sketchup2021中文名为草图大师mac版,可以快速为用户创建三维创意。sketchup2021 mac版能够满足客户所有需求的三维建筑设计草图软件。从小细节到大部件SketchUp 2020 特别 for Mac都是非常完美处理的草图大师 2021 mac版可以快速为您进行汽车,人物,门窗等模型建造。草图大师SketchUp 2021 mac版SketchUp 20_sketch up 有mac版本吗

tf用法大全:tf.add、tf.subtract、tf.multiply、tf.scalar_mul、tf.div、tf.divide、tf.truediv、tf.flo-程序员宅基地

文章浏览阅读4.3k次。Arithmetic Operatorstf.add、tf.subtract、tf.multiply、tf.scalar_mul、tf.div、tf.divide、tf.truediv、tf.floordiv、tf.realdiv、tf.truncatediv、tf.floor_div..._tf.add

如何让一行文本显示一定的宽度,超出省略号代替_超出宽度省略号-程序员宅基地

文章浏览阅读1.7k次。#box{ width:100px; background-color:#87CEEB; padding:2px 3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} fd之fa星旅馆有限公司系亚洲规模最大的综合性旅游企业集团_超出宽度省略号

随便推点

IKExpression-程序员宅基地

文章浏览阅读291次。[code="java"]import java.util.ArrayList;import java.util.List;import org.wltea.expression.ExpressionEvaluator;import org.wltea.expression.datameta.BaseDataMeta.DataType;import org.wltea.ex..._import org.wltea.expression.expressionevaluator; import org.wltea.expression

面试总结4_sizeof在计算变量所占空间大小时采取的机制-程序员宅基地

文章浏览阅读2.5k次。网络问题列表1、http/https有什么区别?2、tcp的三次握手和四次挥手?3、tcp和udp的区别?4、user-agent的作用?算法基础问题列表1、深度优先遍历和广度优先遍历的区别?2、手写一个二叉搜索树?3、手写一个堆排序?4、手写一个快速排序?5、手写一个归并排序?6、手写一个选择排序?7、手写一个插入排序?8、手写一个冒泡_sizeof在计算变量所占空间大小时采取的机制

Rosbridge学习_rosbridge_server-程序员宅基地

文章浏览阅读740次。rosbridgerosbridge(rosbridge_suite):一个用于非ROS系统和ROS系统进行交互的通信的功能包。rosbridge主要包含两个部分Rosbridge Protocol和Rosbridge Implementation。Rosbridge Protocol协议部分主要提供了非ROS系统和ROS系统通信的具体格式(JSON格式),包括订阅发布主题、服务调用,获取..._rosbridge_server

01-初识sketch-sketch优势_512h和512w-程序员宅基地

文章浏览阅读1w次,点赞58次,收藏8次。一.Sketch简介Sketch 是一款适用于所有设计师的矢量绘图应用。矢量绘图也是目前进行网页,图标以及界面设计的最好方式。但除了矢量编辑的功能之外,我们同样添加了一些基本的位图工具,比如模糊和色彩校正。我们尽力让 Sketch容易理解并上手简单,有经验的设计师花上几个小时便能将自己的设计技巧在Sketch中自如运用。对于绝大多数的数字产品设计,Sketch 都能替代Adobe Photoshop,Illustrator 和 Fireworks。 ..._512h和512w

Java项目管理工具Maven详解_java的项目管理-程序员宅基地

文章浏览阅读4.5k次。xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT、编程案例请联系QQ:1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!本文转载自:https://blog.csdn.net/qq_16605855/article/details/79726278maven maven是一个跨平台的项目管理的工具。隶属于Apache下..._java的项目管理

JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误-程序员宅基地

文章浏览阅读55次。下载了最新的JUnit版本,是4.11,结果尝试使用发现总是报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing这样的错误,上网查了一下,一般的解决方案是,换一个低一点的版本就好了。还有人说,是缺少hamcrest的包。去官网又看了一下,结果发现这样一段话:junit.jar: Includes the Hamcres..._电脑出现订单4.11可使用什么原因