AVR和51单片机编程的区别以及80C52的一些问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机的程序移植到avr单片机应该怎样移植注意什么问题?
答:如果是C语言的话,有限关键字会有改变,头文件要重新写,函数的一些写法会有所改变,AVR的编译器很多,每种编译器都有自己的独特写法,要先了解编译器后在做移植,成功率会更高。
一楼的说法基本没有错。
先要选择好编译器,C编译器如GCC,ICC,CVAVR,IAR等,看你选哪种编译器,汇编编译器如AVR Studio。
头文件不需要自己写,每种编译器有自带的头文件,你只要#include就可以了。不过要include对。
51程序(针对keil编译器)和AVR程序(上述的一些编译器,如GCC)最主要的不同:
1,因为51的io口为准双向io,所以对io口的操作不用设置io的方向,而AVR 是双向io,每次对io操作,如输出输入都要对io的方向进行设置。
2,关键字不同,code是keil c51的非标准写法,如果AVR要使用常量,可以用const关键字取代。还有data关键字取消,也就是说什么data,
idata,xdata,pdata都不可以使用。相对来说avr的编译器比较接近标准c。
3,51可以位操作,但是avr基本不使用位操作,因为avr可以位操作的区域比较少,所以sbit,bit什么的只有在51出现,avr不可以使用,除非你自己定义一个结构体。
4,中断的写法,这个每个编译器基本都不一样,呵呵,比如iar会使用#pragma 关键字,gcc有固定的函数入口ISR(中断向量)。
avr比51强大很多,比如移植spi的程序,你可以自己写个avr的spi程序来取代,而不用像51一样io模拟。以上是我暂时能想到的比较大的区别,移植起来首先要注意的地方,如果还有疑问,你可以追问的。
2)单片机AT89S51和AT89C51的区别
89S51相对于89C51增加的新功能包括:
-- 新增加很多功能,性能有了较大提升,价格却基本不变,甚至比89C51更低!-- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。
-- 工作频率为33MHz,大家都知道89C51的极限工作频率只有24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
-- 具有双工UART串行通道。
-- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。-- 双数据指示器。
-- 电源关闭标识。
-- 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
-- 兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。
从AT89C51升级到AT89S51 ,也是同理。和S51比起来,C51就要逊色多了,实际应用市场方面技术的进步是永远向前的。
AT89S51内含flash支持并口isp(在系统编程),用isp线在线路板上即可编程,不用专门的编程器。AT89C51只带EEPROM,只能在编程器编程,编程次数寿命不如AT89S51。
主要是程序写放方式不同,AT89C51要放在编程器上写入程序,AT89S51还可以在电路的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节。
从编程的角度来讲,这两个是没区别的,编程语言语法等都是一样的。
从烧录的角度来讲,AT89S51支持在线可编程,也就是说可以通过电脑的串口直接烧录(当然,需要电平匹配,要加一块232芯片),而AT89C51需要用专门的烧录器烧录。