AVR单片机C语言入门首例
出处:AVR单片机DIY网
【 前言 】AVR单片机C语言编译软件有IAR、ICCAVR、winavr、Atmanavr、CodeVisionAVR等。其中
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软件的代码效率不高,但是事实却恰恰相反,随着源代码的增多,你就会发现,这个编译软件产生的机器代码不管是大小还是运行时间都是非常优秀的,这也是本站推荐使用的其中一个原因。
点击这里下载CodeVisionAVR软件
点击这里下载ATMEGA48/88/168.PDF文档
最后,推荐大家参考一下下面的CVAVR学习资料(中文/文摘):
相关推荐
Bt8510在V5接口测试仪中的应用
告别环路响应慢!低延迟信号链设计方案来了
乐金Innotek将向欧洲供应Wi-Fi 7车用通讯模块
Co-60货运列车检测系统中图像与信息处理系统的设计
ARM称雄IP授权市场,Rambus紧随其后
DSP芯片在超声波钻井液测漏仪中的应用
555声光控制延时节电灯电路
中芯国际通过OHSAS18001职业安全卫生管理系统验证
[Android开发视频教学]Handler的使用(二)(15)
555非接触控制开关电路
2410上insmod紧急求助!
555自动电子延时开关电路
CCD测量系统中基于自适应相关算法的动态目标跟踪
华邦电子第三季业绩出炉 内存产品获利佳
[Android开发视频教学]Handler的使用(一)(14)
[Android开发视频教学]Android常见控件(二)(12)
让 AI 触手可及,TI 正在解决哪些关键技术问题?
别让微小抖动吞噬百万美元!中星联华发布224G误码仪,为1.6T算力深水投下“压舱石”
[Android开发视频教学]SQLite使用方法(16)
555白天自动间歇运行的光控电路
全球电动车市场增速放缓,2035年销量占比预计达50%
车用电子电气化架构转向区域控制,提升效率与扩展性
NPO技术:数据中心升级的可行路径
TI 全新 MCx 系列:从算法到系统集成,让无刷直流电机控制更静、更省、更快
英飞凌抗辐射半导体助力Artemis II任务成功
老树欲开新花,中国东北借IC3战略发展IC装备业
国内首款,纳芯微推出通过TÜV莱茵认证的ASIL D等级隔离栅极驱动NSI6911F系列
CAN控制器芯片MCP2510在远程监测系统中的应用
[Android开发视频教学]常用控件(三)(13)
555光控式节能太阳能灯电路