一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 5372|回复: 42
收起左侧

[avr] 初学AVR单片机有感

[复制链接]
发表于 2014-3-13 13:12 | 显示全部楼层 |阅读模式
51单片机本人是玩腻了,当然要说精通,还是得慢慢再深入。现在本人开始学习AVR单片机,结果本人发现,网上教程基本是千遍一律采用的都是C语言,汇编的极少,而且用的编译器版本也很老,大多数采用AVR Studio4,而现在最少是6了。这个也就算了,讲的内容牛头不对马嘴,根本讲不到重点!毕竟是免费的嘛,呵呵。。。实际上本人告诉你,如果你要精通AVR单片机,必须采用汇编语言!为什么呢?经过本人实践发现,AVR单片机采用的编译器使用方法都不一样,特别是C语言,里面那些库函数你根本不知道要调用哪个,如果没有人指导你,举个最简单的,连IO口的库文件你都不知道在哪里!看帮助文件?算了吧,就我们的英语水平?如果你英语很厉害早去国务院做翻译了,工资高得多!另外最重要的,AVR单片机采用所谓的精简指令集(RISC),如果采用C语言,根本体现不出精简在哪里,反而更复杂了!但是采用汇编,的确比51精简,比如送个立即数到寄存器,51是这样的:MOV R0,#0FH;要是AVR,是这样的,LDI R0,0x0f.前者要加个#号表示立即数,而后者不用,LDI本身就是送立即数的意思,不用担心写少了个#号。
使用AVR单片机采用C语言程序执行效率是很差的,代码十分冗长,汇编就很体现出优势。不过目前本人是初学AVR,而且网上这样的资料极少,看来只能靠自己慢慢琢磨了!现在本人最多只能写个流水灯。
发表于 2014-3-13 13:39 | 显示全部楼层
汇编除了效率(菜鸟用汇编未必比的过高手用C)之外没任何优势
发表于 2014-3-13 14:17 | 显示全部楼层
代码维护成本太高。

在调用非常频繁的地方用用汇编就好了,记得好好写注释。
发表于 2014-3-13 14:27 | 显示全部楼层
可怜我,51都还在学习中。
发表于 2014-3-13 14:31 | 显示全部楼层
avr优势已不再~
发表于 2014-3-13 14:44 | 显示全部楼层
我也就会个简单的C51,不过对于AVR的c,我这两天正玩arduino,了解后教孩子玩。
发表于 2014-3-13 14:47 | 显示全部楼层
汇编用在需要精确控制时序的地方很好用 别的地方就没什么必要了
发表于 2014-3-13 15:47 | 显示全部楼层
我也用AVR  一直是用C的哦,汇编比较麻烦的了
发表于 2014-3-13 17:01 | 显示全部楼层
本帖最后由 759755401 于 2014-3-13 17:04 编辑

AVR的汇编教程很多的,网上到处是,AVR的 Studio6用GCC的效率很高的,写了几年的老程序的人写的都没它好的,AVR里有MOV的,只是限与Rx之间传送,还有LDI是有限制的,R0-R15是不行的,只能R16开始的后部分寄存器,LDI R0,0x0f这个是错的
AVR的 Studio6还是免费的,不存在盗版的
常用的头文件
#define Baud 6
#include <avr/io.h>
#define F_CPU 1000000ul
#include <util/delay.h>
#include <util/atomic.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#include <stdbool.h>
#define init_m16_usart4800() UCSRC &=~(1<<URSEL);\
                             UBRRH = 0;\
                                                         UBRRL = 12;\
                                                         UCSRC =(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(0<<UCPOL);\
                                                         UCSRB = (1<<RXCIE)|(0<<TXCIE)|(1<<RXEN)|(1<<TXEN)|(0<<UCSZ2);\
                                                         asm("sei")
这些是我以前学习写的汇编的,网上很多书的
75TL}PEBKUM_G[D%D_B%1(L.jpg
发表于 2014-3-13 17:13 | 显示全部楼层
现在学avr有些过时了,应该学stm

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-18 10:26 , Processed in 0.081323 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表