51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 取经杂谈 > 详细内容
浅谈AVR位操作及CVAVR的特点
作者:月夜听风 来源:微控实验网  发布时间:2009/6/15  阅读次数:6078  字体大小: 【】 【】【

       很多从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其实更适合初学者,而且有着很大的优势。


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

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


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

  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. Dallas Semiconductor DS1621 Thermometer/Thermostat Functions - DS1621 温度计函

15. Philips PCF8563 Real Time Clock Functions - PCF8563 实时时钟函数
16. Philips PCF8583 Real Time Clock Functions - PCF8583 实时时钟函数
17. Dallas Semiconductor DS1302 Real Time Clock Functions - DS1302 实时时钟函数
18. Dallas Semiconductor DS1307 Real Time Clock Functions - DS1307 实时时钟函数
19. 1 Wire Protocol Functions - 单线通讯协议函数
20. Dallas 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,可以下载尝试一下。

       软件下载地址http://www.mcusy.cn/Article.asp?id=1699540  
        入门教学文档: http://www.mcusy.cn/Article.asp?id=1699543  


我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[3]
  • 评论人:[匿名] 时间: [2019/8/23 23:16:47] IP:[5.188.84.7*]
  • Beneficios De Propecia Propecia Provoca Esterilidad Comprar Cialis Diario a href=http//mdsmeds.comgeneric cialis from india/a Cialis France Propecia Dieta
  • 评论人:[匿名] 时间: [2019/4/5 14:58:45] IP:[5.188.45.16*]
  • To Purchase Cialis In Australia a href=http//kamagorder.com/a Prilosec Kamagra Oral Jelly Pictures Propecia Women
  • 评论人:[匿名] 时间: [2019/3/6 18:14:03] IP:[5.188.45.16*]
  • Doxycycline Purchase In China Dexamethasone No Prescription a href=http//boijoy.comacheter levitra occasion/a Kamagra Jelly Online Uk Female Cialis Testimonials

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号