共3条
1/1 1 跳转至页
avr 说实话,avr代码效率在8位机中偏低
问
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会停产吗?
答 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会停产吗?
共3条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |