原创 CodeVisionAVR编译软件的优点

2010-8-27 23:13 5994 8 8 分类: MCU/ 嵌入式
        很多从51转学AVR的朋友在选用编译和仿真软件电脑里装的是ICCAVR、IAR、winavr等,少部分用CVAVR(CodeVisionAVR) 的,这个软件甚至部分人都没有听说过。有的人说了,学习来说哪个编译软件都都无所谓,毕竟各有千秋、都难以十全十美。

      习惯了51,初学AVR刚开始就是要了解和习惯使用新的编译器,因此不得不暂时放下曾经使用游刃有余的KEIL了。


       接下来便是用C对AVR编写简单的程序开始,结果碰到的第一件事便是无论是ICC还是GCC,都无法直接使用简单的位操作。想想51多方便:KEIL C51加上头文件#include <AT89X52.h> 或者#include <reg52.h>,便可以直接使用如P1_1=1操作;或者sbit LED1=P1^1进行位定义。用习惯了51的朋友一定会感到不爽,一个简单的位操作在AVR编译器中为何如此麻烦?有些51的“高手”在初次接触AVR时甚至连一个开关控制一个LED都不知道如何写...所以接下来自然很多行家出台了各式各样的宏文件来解决这个问题(有很好的也有不规范的),很多的会产生复杂低效的代码;部分也采用异/或等方法去实现... 大家可在网上看多很多这方面的讨论。


      51单片机的I/O是准双向口,而AVR是真正的双向口,每个端口都有三个I/O 存储器地址:数据寄存器 – PORTx、 数据方向寄存器 – DDRx 和端口输入引脚– PINx。数据寄存器和数据方向寄存器为读/ 写寄存器,而端口输入引脚为只读寄存器。当寄存器SFIOR 的上拉禁止位PUD 置位时所有端口的全部引脚的上拉电阻都被禁止。在程序中这些若没有搞清楚是无法进行位操作的(下表是AVR的I/O功能表)。


DDRXn


PORTXn


PUD(SFIOR)


I/O 方式


内部上拉电阻


引脚状态


0


0


X


IN


无效


三态(高阻)


0


1


0


IN


有效


外部引脚拉低时输出电流 (uA)


0


1


1


IN


无效


三态(高阻)


1


0


X


OUT


无效


推挽 0 输出,吸收电流 (20mA)


1


1


X


OUT


无效


推挽 1 输出,输出电流 (20mA)


现在进入正题,这里推荐一款CVAVR(CodeVisionAVR),经过较长时间使用和比较,发现CVAVR其实更适合初学者,而且有着很大的优势。


clip_image001
(打开界面,大家可搜寻较高版本的)


1. CVAVR界面友好 关键字颜色不同,有折叠方式,看起来比ICC-AVR感觉舒服多了!


clip_image002
(相信经过很多人使用后,会喜欢上这个软件的,越来越多的朋友已经熟悉了)


2. 支持位操作 这个就是刚才说其它软件使用位操作较变态的问题,在CVAVR中就可以直接使用位操作,比如:PORTC.0=1;


3. 可直接操作内部EEPROM。
    EEPROM CHAR DATA;
    DATA = 0XFF;


4. 较丰富的专用函数 可直接调用,比如延时的delay函数,只要把晶振设置好了,dalay函数编译器会给出来,我们直接调用就好了,无需另外写一个延时子函数。又如你用DS1302、DS18B20、LCD等不用写底层驱动之类的东西。
以下是一些函数列表:


1. Character Type Functions - 字符类型函数
2. Standard C Input/Output Functions - 标准输入输出函数
3. Standard Library Functions - 标准库和内存分配函数
4. Mathematical Functions - 数学函数
5. String Functions - 字符串函数
6. BCD Conversion Functions - BCD 转换函数
7. Memory Access Functions - 存储器访问函数
8. Delay Functions - 延时函数
9. LCD Functions - LCD函数
10. LCD Functions for displays with 4x40 characters - 4×40 字符型LCD函数
11. LCD Functions for displays connected in 8 bit memory mapped mode -以8 位外部存储
器模式接口的LCD显示函数
12. I2C Bus Functions - I2C 总线函数
13. National Semiconductor LM75 Temperature Sensor Functions - LM75 温度传感器函数
14. Semiconductor DS1621 Thermometer/Thermostat Functions - DS1621 温度计函

15. Philips PCF8563 Real Time Clock Functions - PCF8563 实时时钟函数
16. Philips PCF8583 Real Time Clock Functions - PCF8583 实时时钟函数
17.  Semiconductor DS1302 Real Time Clock Functions - DS1302 实时时钟函数
18.  Semiconductor DS1307 Real Time Clock Functions - DS1307 实时时钟函数
19. 1 Wire Protocol Functions - 单线通讯协议函数
20.  Semiconductor DS1820/DS1822 Temperature Sensors Functions - DS1820/1822
温度传感器函数
21. SPI Functions - SPI 函数
22. Power Management Functions - 电源管理函数
23. Gray Code Conversion Functions - 格雷码转换函数


5. 直接支持STK200、STK300下载线


    CVAVR当然也有它的缺点,比如C移植到其它编译器会有一些麻烦,笔者仅是推荐,若没有用过CVAVR,可以下载尝试一下。

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条