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 //单片机是ATmega48
#include //延时函数的头文件
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软件的代码效率不高,但是事实却恰恰相反,随着源代码的增多,你就会发现,这个编译软件产生的机器代码不管是大小还是运行时间都是非常优秀的,这也是本站推荐使用的其中一个原因。
关键字:AVR 单片机 C语言
引用地址:
AVR单片机C语言入门一例
推荐阅读最新更新时间:2024-03-16 14:53
最近遇到的单片机串口设置问题
最近测试涉及到底层串口代码的修改。经过这次修改,突然发现其实自己对于串口的一些特性以前并不是十分清楚。 首先遇到的一些问题: 1)在使用IO的数据位的时候,没有考虑校验位所占的位数。 2)在设置串口输入的时候,使用悬空输入。 关于1),在一次使用 STM32 串口参数9600,N,8,1与另一个 8051MCU通信的时候发现偶校验没有问题,但是无校验通信就出现异常。但是,当将 STM32 与电脑通信的时候,偶校验与无校验通信又完全都是正确的。8051MCU单独与电脑通信也都是完全正确的。查看代码,还真不知道有什么不对劲的。因为这段代码,用了很长时间了。后来一个同事看代码后,提醒说对于数据位的设置,偶校验和无校验是一
[单片机]
一种三MCU系统的硬件实现
摘要: 介绍以两片80C196KC为主处理MCU、一片89C51进行动态LED显示的三MCU系统。两80C196KC之间通过互访数据存储器进行数据交换,80C196KC与89C51的通讯使用串行口。
关键词: 单片机 多处理器 总线控制 存储器共享
MCS96系列单片机是16位单片机。运算速度高、I/O资源丰富、具有10位A/D转换器,特别适合于实时处理、实时控制的各类自动控制系统,如工业过程控制系统、伺服系统、分布式控制系统、变频调速电机控制系统等。在国内有成熟的开发系统和稳定的供货来源,相关资料也非常丰富,开发非常方便。
[应用]
51单片机小白零基础教程——点亮第一个小灯以及流水灯
一、LED灯电路图分析 (1)LED灯的描述 LED灯:LED全称为发光二级管,可以将电能转换为光能,可以将电信号转为光信号的发光器件。 此图片中LED1-LED8为单片机开发板上的0603型号的贴片LED灯。 此图片为LED灯在电路图中的符号,要想导通LED就必须给二极管正向流过工作电流,LED的基本工作特性为正向导通,反向截止。 (2)LED灯在电路图中的分析 J9:跳线帽,只有合上跳线帽,2引脚和1引脚才相通,拔掉J9,5V的电压只能在2引脚,到不了1引脚。 RL6、RL7:限流电阻,防止流过LED灯的电流太大,而导致LED灯的烧毁。 我们从图中可以发现LED灯的阳极连接在一起,这种接法被称为共阳极接
[单片机]
德州仪器支持广泛开发商社群的 CC430 MCU 平台
日前,德州仪器 (TI) 宣布推出支持广泛开发商社群、可提供完整可扩展软硬件的 CC430F513x 微处理器 (MCU),进一步推动了单芯片射频 (RF) 解决方案的发展。该 CC430F513x MCU 将业界领先的超低功耗 MSP430™ MCU 与 1GHz 以下的高性能 CC1101 RF 收发器进行了完美结合,并采用 7 毫米 x 7 毫米小型封装,不但可实现高达 20 MIPS 的性能,而且还可支持如集成型 AES 硬件模块等安全选项。此外,TI 还推出 CC430F61xx 系列器件,进一步壮大了其 LCD 产品阵营,其可为开发人员提供能够满足不同设计需求的更多选项。 CC430 MCU 支持多种协议
[单片机]
基于模糊控制技术的恒温控制系统的设计
在日常工业生产当中,恒温控制应用非常广泛。模糊控制技术是通过模仿人的思维方法,运用不确定的模糊信息进行决策以实现最佳的控制效果。模糊控制所关心的是目标而不是精确的数学模型,即研究的是控制器的本身而不是被控对象。因此可以利用特殊的控制媒介,研究控制器本身。本系统以此作为出发点,以单片机为核心控制器,研究模糊控制算法,实现了精确的恒温控制。并设计了单片机与上位机的通信软件,实现了远程温度控制和温度曲线可视化的功能。 1 系统功能和硬件设计 本系统以水温作为测量媒介,以AT89C51单片机作为核心控制器,以AD590温度传感器作为采集器,实现温度的采集、控制、传输、显示的功能。系统采用模糊算法对电热丝的加热时间进行控制,
[工业控制]
揭秘AVR单片机高性能便携式仪表电路 —电路图天天读(75)
随着计算机技术。微电子技术的发展,工业化仪表已逐渐发展成为具有微处理器系统的智能化仪表。便携式智能仪表因其携带方便。操作方便。界面友好。人机接口丰富。功耗低等特性,使得其在当今生活中越来越普及。本文以ATMEL 公司生产的高性能AVR 单片机ATXmega128A1为核心,设计了一种高可靠、低功耗、多用途的便携式仪表电路,并对其硬件进行了分析。 无线通信电路设计 在仪表使用过程中,当两台仪表需要相互通信或者不便于与PC 机进行有线连接的情况下,需要将数据进行无线传输。而能够进行无线传输也成为诸多仪器仪表适应多条件。多功能的体现.Zigbee 是近年新兴的无线网络通信技术标准,功耗小。成本低,在应用中有着突出优势。其
[单片机]
PIC中档单片机汇编指令详解(2)
DECF 数据寄存器的内容递减1 语法形式:DECF f,d 操作数:f为数据寄存器的低7位地址(0x00~0x7F) d为目的寄存器的低7位地址(0x00~0x7F) 当d=f时,结果放在f数据寄存器,f数据寄存器自减1 当d=W时,结果放在W寄存器中,W寄存器内容自减1 执行时间:一个指令周期 执行过程:【f】-1 d 状态标志影响:Z 说明:该指令对数据寄存器的内容做减1运算。如果减1后的结果为0,则置位0标志寄存器Z 指令范例: CLRF Count ;Count=0x00 DECF Count,f ;Count=0x00,f=0xFF DECF f,W ;f=0xFF,W=0xFE INCF 数据
[单片机]
微控制器的FSMC到底是咋回事?(下)
摘要:上一篇文章我们具体讲解了FSMC的原理配置,这一章主要是关于使用FSMC的SRAM初始化流程,以及使用STM32CubeMX对FSMC进行配置。 一、SRAM初始化流程 通过上面的讲解,通过对 FSMC 相关的寄存器的描述,大家对 FSMC 的原理有了一个初步的认识,如果还不熟悉的朋友,请一定要搜索网络资料理解FSMC的原理。只有理解了原理,使用库函数才可以得心应手。那么在库函数中是怎么实现FSMC的配置的呢?FSMC_BCRx,FSMC_BTRx 寄存器在库函数是通过什么函数来配置的呢?下面我们来讲解一下 FSMC 相关的库函数: 1.1 使能FSMC时钟 要使用FSMC,当然首先得开启其时钟。然后需要把
[单片机]