at89s51与at89c51的区别.doc
38页一、AT89S51与AT89C51的区别 这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习 有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准 其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51, PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL公司的 AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取带了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。
不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力89SXX可以像下兼容89CXX等51系列芯片同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以 89S51相对于89C51增加的新功能包括: 1. 新增加很多功能,性能有了较大提升,价格却基本不变,甚至比89C51更低! 2. ISP编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离是一个强大易用的功能 3. 工作频率为33MHz,大家都知道89C51的极限工作频率只有24M,就是说S51具有更高工作频率,从而具有了更快的计算速度 4. 具有双工UART串行通道。
5. 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路 6. 双数据指示器 7. 电源关闭标识 8. 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯 9. 兼容性方面:向下完全兼容51全部字系列产品比如8051、89C51等等早期MCS-51兼容产品也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容 比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的 从AT89C51升级到AT89S51 ,也是同理和S51比起来,C51就要逊色多了,实际应用市场方面技术的进步是永远向前的二、AT89S51看门狗功能的使用方法 在ATMEL的89S51系列的89S51与89C51功能相同指令兼容HEX程序无需任何转换可以直接使用89S51只比89C51增加了一个看门狗功能89S51的其它功能可以参见89C51的资料看门狗具体使用方法如下: 在程序初始化中向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H。
即可激活看门狗 Org 0000H Ljmp beginBegin: Mov 0A6H,#01EH ;先送1E Mov 0A6H,#0E1H ;后送E1 ;在程序初始化中激活看门狗 …… ……For: …… Mov 0A6H,#01EH ;先送1E Mov 0A6H,#0E1H ;后送E1 ;喂狗指令……Ljmp for注意事项: 1. 89S51的看门狗必须由程序激活后才开始工作所以必须保证CPU有可靠的上电复位否则看门狗也无法工作 2. 看门狗使用的是CPU的晶振在晶振停振的时候看门狗也无效 3. 89S51只有13位计数器在8191个机器周期内必须至少喂狗一次而且这个时间是固定的,无法更改当晶振为12M时每8个毫秒需喂狗一次以上程序我已调试通过还利用定时器把看门狗的喂狗时间延长几秒至几分钟51单片机C语言学习杂记 学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有众多种类的单片机选择真是件让人头疼的事在众多单片机中51架构的芯片风行很久,学习资料也相对很多,是初学的较好的选择之一51的编程语言常用的有二种,一种是汇编语言,一种是C语言。
汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多综合以上C语言的优点,我在学习时选择了C语言以后的教程也只是我在学习过程中的一些学习笔记和随笔,在这里加以整理和修改,希望和大家一起肥翼,一起交流,一起学习,一起进步 *注:可以肯定的说这个教程只是为初学或入门者准备的,笔者本人也只是菜鸟一只,有望各位大侠高手指点错误提出建议 明浩 2003-3-30 pnzwzw@ 第一课 建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
因此很多开发51应用的工程师或普通的单片机爱好者,都对它十肥也欢 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发安装的方法和普通软件相当这里就不做介绍了) 安装好后,你是不是迫不及待的想建立自己的第一个C程序项目呢?下面就让我们一起来建立一个小程序项目吧或许你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KEIL软件仿真看到程序运行的结果 首先当然是运行KEIL51软件怎么打开?噢,天!那你要从头学电脑了呵呵,开个玩笑,这个问题我想读者们也不会提的了:P运行几秒后,出现如图1-1的屏幕图1-1 启动时的屏幕 接着按下面的步骤建立您的第一个项目: (1)点击Project菜单,选择弹出的下拉式菜单中的New Project,如图1-2接着弹出一个标准Windows文件对话窗口,如图1-3,这个东东想必大家是见了N次的了,用法技巧也不是这里要说的,以后的章节中出现类似情况将不再说明。
在"文件名"中输入您的第一个C程序项目名称,这里我们用"test",这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows文件规则的文件名都行"保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目图1-2 New Project菜单 图1-3 文件窗口 (2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51此时屏幕如图1-4所示AT89C51有什么功能、特点呢?不用急,看图中右边有简单的介绍,稍后的章节会作较详细的介绍完成上面步骤后,我们就可以进行程序的编写了 (3)首先我们要在项目中创建新的程序文件或加入旧程序文件如果你没有现成的程序,那么就要新建一个程序文件在KEIL中有一些程序的Demo,在这里我们还是以一个C程序为例介绍如何新建一个C程序和如何加到您的第一个项目中吧点击图1-5中1的新建文件的快捷按钮,在2中出现一个新的文字编辑窗口,这个操作也可以通过菜单File-New或快捷键Ctrl+N来实现好了,现在可以编写程序了,光标已出现在文本编辑窗口中,等待我们的输入了第一程序嘛,写个简单明了的吧。
下面是经典的一段程序,呵,如果你看过别的程序书也许也有类似的程序:#include
如图1-6鼠标在屏幕左边的Source Group1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作我们?quot;Add File to Group 'Source Group 1'"弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了这时在Source Group1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看图1-6把文件加入到项目文件组中 (5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件,如何设置生成HEX文件就请看下面的第三课我们先来看图1-7吧,图中1、2、3都是编译按钮,不同是1是用于编译单个文件2是编译当前项目,如果先前编译过一次之后文件没。





