这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » avr 说实话,avr代码效率在8位机中偏低

共3条 1/1 1 跳转至

avr 说实话,avr代码效率在8位机中偏低

院士
2006-09-17 18:14:16     打赏
avr 说实话,avr代码效率在8位机中偏低



关键词: 说实话     代码     效率     机中     偏低    

院士
2006-12-22 22:43:00     打赏
2楼
AVR<MSP430(16位)<51

1: AVR的效率比51低?一派胡言!! 2: 我没有用过430,即使AVR<430,但8位和16位比,不公平 3: 你有没有用过AVR啊!!!!你有没有用过AVR啊!!!!
代码效率实际是非常高,比c51不知道要高到哪里去了!
在说AVR是Risc结构的,本身就比C51代码效率高。
还有我想你肯定使用汇编写一长串程序,AVR的优点就在c上指令代码的优化。
不能一概而论,回去AVR的书仔细研究研究。
1.建议用c写程序。
2.改掉一些用c51思维老传统,毕竟AVR与其它的单片机不同。 4: 不服的用以下代码编译测试,数学运算最说明问题#include <stdio.h>
#include <math.h>

void main()
{
  float a=3.14;
    
  printf("this is test:%f%f%f%f%f%f%f",sqrt(a),exp(a),log(a),sin(a),tan(a),asin(a),atan(a));
    
}

keic6.20(优化级别=普通0):code 4336bytes 5: 你用AVRgcc或其它c编译器试一试你用AVRgcc或其它c编译器试一试。 6: 是4336BYTE吗?看看这个Chip: ATmega8L
Program type: Application
Memory model: Small
Optimize for: Size
(s)printf features: int
Promote char to int: No
char is unsigned: Yes
8 bit enums: No
Enhanced core instructions: On
Automatic register allocation: On
Use AVR Studio Terminal I/O: No

1937 line(s) compiled
No errors
No warnings

Bit variables size: 0 byte(s)

Data Stack area: 60h to 15Fh
Data Stack size: 256 byte(s)
Estimated Data Stack usage: 30 byte(s)

Global variables size: 0 byte(s)

Hardware Stack area: 160h to 45Fh
Hardware Stack size: 768 byte(s)

Program size: 1795 words
FLASH memory usage: 43.8% 7: 任何编译器都试过拉,不过现在我没有软件没法试iccAVR效率最高,然后是iar,gcc次之,codevision最差
但是无论如何代码要比51大1/3~1/2 8: 老兄,搞错拉Chip: ATmega8L
Program type: Application
Memory model: Small
Optimize for: Size
(s)printf features: int(错)  float

printf配置应该选择浮点,在项目属性里设置一下
再编译



9: 不懂,你怎么个大法? 10: to:阿风:你在编译选项中没有用浮点的pfintf,而是整数 11: 大是当然因为AVR使用精简指令系统,牺牲的就是代码大小,但提高的是运行速度!
如果你用其他公司生产的同类8bit risc单片机,你会发现AVR是相当不做的。
因为atmel公司,已经使AVR在运行速度和代码效率上作了,最佳优化,和最折中的方案。c51虽然代码要比AVR下小,但速度太慢了

============================
244Mhz下的c51核=8Mhz下的AVR
============================
不可以单方面的用代码效率来衡量二种不同结构体系的单片机
这是就对不可以的。 12: 我改了。现在是Program size: 2689 words
FLASH memory usage: 65.6%

不过mc_music你错了! 别光看存储器代码大小。
AVR的指令行是字结构。 也就是说编译结果是2689 条指令。
你看一下KEIL的反汇编。单字节指令在60%以上。我粗略数了数,KEIL出来的有
2710条指令。不服你也像我一样傻傻的数数!
不知你的比51大1/3~1/2的结论是怎么得出来的。
相近的指令条数,AVR绝对的比51运行快!
13: 我当然比的代码大小拉,2689W *2=5387B5387-4336/4336 =1/4

同样8Kflash的89c52和8515,   51的程序在8515里可能就放不下。
指令多怎么了,占空间少是关键 14: 真是没事做呀。8515有EEPROM,52有吗?8515有看门狗,52有吗?
AVR与51的优与缺都谈了N年了。。。什么场合用什么嘛。你怕装不下换个MEGA128用用好啦。128K够了吧?
哎呀。突然发现我现在这么爱跟人计较了。呵呵。
15: 要说功能多,你得和MSP430比有液晶接口吗?有12位高精度adc,12位pwm,高精度比较器,
可以接并口仿真的的jtag接口,代码段全部可做eeprom可写。
32768时钟震荡器,硬件多机通信的232串口,还有16位运算特性,
以及独步天下的0.1ua省电工作模式

16: !!完成同样的工作AVR所用指令空间<=c51指令空间. 17: 也说效率问题我现在用meg16,发现空间不够,特别是16位计算时候,而且mega32出不来,如果有问题的话,可以升级空间比较小,是不如MSP430
如果mega32 60,mega 128 80(一般工厂用不到128K),这种情况下工厂选型肯定不会选mega系列
看了好久,AVR象是为学生准备的,主要仿真机便宜,430也是这样,430系列主要全部是低电压(TI公司的)
日本所有公司都是比较势利,没有量,歇歇
51系列大家就不要怎么考虑了 18: 8位与16位其实现在芯片要比的就是价格与可靠性,如果大家价格一样,我当然用16位的了,为什么用8位
19: 唉,别比了比出来了AVR会停产吗?

高工
2023-03-11 12:38:09     打赏
3楼

学习


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]