编程与移植常见问题:
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需要用
专门的烧录器烧录。
单片机之间的比较
AT89S51系列单片机
1 简介
1980,英特尔公司开发出一种简易的8031CPU,在当时该CPU性能不比8086差很多,但价格较便宜,因
此被很多低端应用选中。由于市场看好,ATMEL公司购买了8031的内核,把Flash存储器和加强型IO口
融入进去开发出了AT89系列单片机。所有兼容8031指令和内核相似的单片机统称为51单片机,它是目
前应用最广泛的8位单片机之一。因51单片机结构简单,指令易学,应用广泛,因此是初学单片机首选
机型。如果有人想不学51,直接学AVR,那么此人一定会遇到很多难题,困惑和郁闷将伴随着学习过
程。如果学了51再学AVR和其他单片机,人们会发现“所谓单片机都不过如此”。
2 性能
根据任务具体需要选择最合适的单片机,使单片机资源充分利用,使系统性价比达到最高,同时兼顾未来扩展需要,不一味追求高性能单片机,这就是选单片机的原则。
AT89S51有4K的Flash程序存储器,128字节的RAM,32条IO口,中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;串行口是一个全双工的串行通信口;AT89S51的电源电压为4.0-
5.5V,AT89LS51的电源电压为2.7-4.0V;振荡器频率0-33MHz(AT89S51),0-16MHz(AT89LS51); 有ISP 在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。
AT89S52程序储存器容量为8KB,还有AT89S55,ROM容量更大。
有很多公司生产了很多扩展型51系列单片机,有的带有AD转换器,有的带有比较器,有的带有PWM,读者可以根据自身需要选择合适的51单片机,但要注意他们的管脚定义和编程方式。
3 使用方法
AT89S51 适于做单片机学习板、电子时钟、超声波测距仪等不需要采集模拟量和控制大功率外部元件的电路。S51与过去的C51的区别在于S51支持ISP在线编程,即C51需要几百元的编程器编程,而S51仅需一条25针并口线和非常简单的转换电路即可接在台式电脑打印机接口烧程序,下载烧程序小软件即实现可对S51单片机编程。对51单片机编程一般选用Keil软件,可采用C语言或者汇编语言,编完程后选择输出HEX文件,然后用烧程序小软件读取HEX文件,再烧写到单片机中。
4 实践经验
A 刚开始看书时,按照书上的电路图连线然后通电调试,但总不成功,将自己的电路和书上的电路仔细对照发现不了问题。原因在于很多书上的电路图都是“简化图”,即省略了一些电路,而这些被省略的电路却关乎系统的运行。比如,当单片机书讲到AD转换电路,给出的电路图多省略了晶振和复位电路,按照AD转换电路图搭出来的系统自然不能运行。
B 51单片机P0口输出信号时需要上拉电阻,我经常忘记加电阻,导致电路不好使。
C 51单片机31引脚需要接正极,以选择采用内部程序存储器。如果忘记给这个引脚以正确的电压,你的单片机可能不能执行程序。
4 应用举例
欢迎光临理工科学,发帖得花花…… 云淡~风轻
龙鱼
一个人的远行  经 验 值 1019
美 味 虾 189
注册日期 2007-10-15
编程哪一家比较好最近登陆 2012-1-11 状态  2010-9-2 21:21  t T  #2
四 爱好者制作机器人首选 AVR 系列单片机
1 简介  AVR 单片机是1997年由ATMEL 公司研发出的增强型内置Flash 的
RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。高可靠性、功能强、高速度、低功耗和低价位一直是衡量单片机性能的重要指标,而AVR 单片机是典型高性能单片机。
早期单片机,比如51单片机为了提高可靠性(防止数据误读或跑飞)采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。例
如51单片机需要12个晶振周期才能组成1个机器周期,而且很多指
令需要2个机器周期才能执行。AVR 单片机的推出,彻底打破这种旧
设计格局,废除了机器周期,采用精简指令集,取指周期短,又可预取指令,实现流水作业,故可高速
执行指令。AVR 单片机在12个晶振
周期中能执行12条指令,从这个角度看,如果晶振频率相同,AVR 的速度是51的12倍到24倍。
AVR 有32个通用寄存器,在进行大量复杂运算时,AVR 的32个寄存器可相当于51的32个累加器,克服了51系列单片机只有单一累加器数据处理造成的瓶颈现象,在复杂运算时速度比51快5倍以上。由此可

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。