找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 24253|回复: 2
打印 上一主题 下一主题
收起左侧

什么是51单片机-51单片机入门篇

[复制链接]
跳转到指定楼层
楼主
ID:94097 发表于 2015-10-30 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 我觉得是时候有必要出一些“扫盲”文章了,在2年多与网友们的交流中,发现了很多问题,这些问题大多数发生在初学者上,不管是大学生还是DIY爱好者,只要是初学者,难免会产生一些基础的异或,加入技术群有觉得不好意思发问。所以只要有时间,我就会出些“扫盲”文章,转为小白解惑。如果大家还想有其他的方面的更多了解或者疑问,欢迎在文章结尾留言!

一、什么是51单片机,现在很多人有用51的,用52的,还有用stc12stc15的,这些都有什么区别?

通常我们说的51单片机,是Intel 8031指令系统单片机的统称,并不是某一种型号 ,尽管单片机型号繁多,但根据它们的构架及指令系统,都可以归为MCS51。对于用户来说,最直观的感受就是程序的兼容性,比如AT89C51的程序拿到AT89C52上可以通用,反之AT89C52的程序也可以用在AT89C51芯片上,当然,第二种情况有个前提,下文我会提到。也许上面的话理解起来比较复杂,那么我概括为一句:两个51芯片功能不冲突的前提下,程序可以互相移植,这就是相同指令系统的单片机。

不管是学生还是diy爱好者,最开始接触的多为AT89C51AT89C52,或STC系列的5152,乃至后面的AT89S系列、STC12系列、STC15系列,都属于51芯片,他们的构架是一样的。只是随着需求的增加,单片机的功能越来越多,处理速度越来越快,才有了不同的型号,但它们的母亲,都是伟大的intel,虽然功能有变化,但指令系统是不变的,这样就方便了用户移植程序。现在流行的单片机很多种类,只要说是51构架的,那么程序都是兼容的,可以不管型号。拿来就用。

二、        既然程序是兼容的,那么为什么很多时候程序直接下载后,却不能正常工作?

程序的兼容是有前提的,我通过举例来说明:

1 AT89C51AT89C52程序是否完全兼容

151的程序向52移植时,完全兼容,无需任何改动即可正常 工作

25251移植时,不完全兼容,因为52有些功能是51没有的,涉及52增强功能的,不能直接向51移植。最常见的例子就是定时器2,52芯片有定时器2,但51没有,那么涉及到定时2的程序就不能直接给51用,如果非要用,就只能把定时器2的功能给定时器0或定时器1,这就需要改程序了

总结:只要不涉及特殊功能,程序完全兼容

2AT89C52STC89C52RC不同公司的芯片程序是否兼容

不同公司的51芯片程序到底兼容吗?这个是最困惑大家的,下面以AT52stc52做说明

(1)    如果是经典程序,那么也是完全兼容的,这里说的经典程序指的是我们实验里老生常谈的流水灯、点阵、定时器秒表、蜂鸣器唱歌等等,程序无需做任何改动即可下载直接使用。它们连封装都一样,所以说,在无特殊要求时,可以直接替换。

(2)    不能直接替换的程序与例1中提到的是一样的,即功能差异,比如说stc52eeprom,而AT52没有,所以含有eeprom程序的,就不能直接移植

 

总结,只要不涉及到功能差异的程序,也是可以互换的,但两者在处理速度上略有差异,不过不大,但涉及到不同的芯片时,头文件是需要注意的,一般来说,没用的附加功能,reg52.h都适用,但如果在移植程序的时候,用到了附加功能,那就只能将头文件改为这个芯片的头文件。

3:相同公司,增强型与非增强型单片机程序是否兼容?

现在不比以前了,最开始学单片机的朋友们,接触最多的都是12T单片机,我读大学的时,STC12系列的1T芯片都还没兴起。但我们总归是要与时俱进的,现在在网上买单片机DIY套件,绝大多数都不是你正在学习的单片机型号,那么程序也会有所不同,现在常说的就是增强型51和非增强型51,那么到底有多大差异?下面将以STC两种经典的单片机型号做解说

STC89C52RC(下简称89C52)和STC12C5A60S2(下简称STC12)的程序兼容性

(1)    与例12中涉及到的一样,在没有功能性差异的前提下,程序也是兼容的,这里说一下STC12C5A60S2中的经典功能——AD转换。STC12内置了810AD采集通道,无需外部AD采集芯片,89C52如果想做数模转换,就必须外接AD转换芯片,显然,涉及到AD部分的程序,是不能兼容的,这就是功能差异。当然,如果你放着STC12内置AD功能不用,非要用外接AD转换芯片,那程序自然就兼容了

2)软件延时不兼容

两款芯片在处理速度上有着本质不同,89C5212T单片机,STC121T单片机,这里可以简单理解为后者比前者处理速度更快,因为处理速度变快了,程序不能直接移植,需要转换方可正常使用。至于到底快了多少,STC的官方手册给出了说明,下图即为STC官方给出的指令周期对照表(部分),列举了一些12T单片机和1T单片机的指令处理速度差异

 

可以看出,1T单片机对指令提速了不少,但有人会说,我学的是C,汇编不懂,给我看这个表也没意义。这样说是不对的,不管你懂不懂,你至少要知道指令都是提速的,因为在keil下,C语言是先转换为汇编语言的。汇编指令提速了,对应的C语言自然也提速了。至于说,在实际应用中,到底提速了多少呢?特别是针对C语言用户,我只知道我写的程序是C,不可能让我转译到汇编再计算我提高了多少时间吧?接下来我将作出详细说明。

我们先来看一段程序:
 

这是一个流水灯程序,单片机工作在12MHz晶振下,闪烁时间为100毫秒,这是在89C52下的程序,延时子程序是通过STC官方软件生成的,如下图。
 

我们要研究的问题在于,这个程序能不能直接用在STC12单片机上?有多大差异?

答案是可以直接下载到STC12单片机执行的,只是闪烁时间会比100毫秒要短,因为指令速度提提升了,P2=0xaa这种端口赋值语句我们可以忽略不计,因为不管怎么提升速度,这一句对整个程序的周期影响不大。我们主要来研究下100毫秒的延时程序发生了怎样的变化。

这个100毫秒的延时程序,下载到STC12单片机时,延时时间大约是16毫秒左右。那么为什么是16毫秒?是怎么算出来的?下面我就一一作出解释。

我通过两种方法来验证,第一种就是把这些C语言转译为汇编,根据汇编指令计算出提高的速度,当然这种方法很蛋疼,就算懂汇编,计算起来也麻烦;第二种就是通过逻辑分析仪来检测IO端口的输出变化,P2=0xaaP2=0x55存在高低电平的变化周期,观察周期变化即可。

通过上述两种方法,都可以得出的结论是,速度提高了6.5倍左右,可以近似的认为提高了7倍。也就是说,89C52100毫秒的延时程序,在给STC12执行时,速度提高了67倍(在汇编指令下,不同指令的提速不同,平均下来,就有了这样一个倍数关系)。

那么有人就要问了,我现在有个89C52的流水灯程序,非要写在STC12芯片上,我又不会改延时程序,只会复制粘贴,怎么办?我估计STC也考虑到了程序移植上带来的计算不变,所以特别设计了带有辅助功能的下载软件,我们只需用“软件延时计算器”这一功能就可以完美解决。假设我们现在是在STC12环境下开发程序,那么先将之前的89C52流水灯程序复制过来(单片机型号对应的头文件自行替换),如图:
 

我们只要替换掉这个延时程序就可以了,当前的延时程序是89C5212Mhz100毫秒,只需要改为STC1212Mhz100毫秒就可以了。在这里强烈推荐用stc官方下载器的“软件延时计算器”功能,只需四步,如图:
 

第一步选择晶振大小,第二步设置延时时间,第三步选择单片机指令集种类,第四步生成C代码或汇编代码,最后复制这些代码就可以了。将89C52的延时程序删除,替换为刚刚生成的STC12延时程序,那么STC12芯片的流水灯程序就完成了!如图:
 

(上图中的延时程序就是基于STC12芯片的延时程序,与89C52下的延时程序不一样,注意区别)

以上只是一个简单程序的移植介绍,这种方法也适用于其他程序,比如说18B20、液晶显示等,凡是程序中涉及到的软件延迟,都可以通过这种方法替换。我通过这种替换延时程序的方法,移植了很多程序,诸如液晶显示、温度程序、DS1302程序等等。

3)定时器延时

单片机除了软件延时,还有定时器延时,这两种延时都是我们最常用的,那么89C52STC12的定时器有变化吗?接下来我们看一下STC官方手册中给出的说明:
 

可以看出,在我们常用的定时器功能、串口功能上,程序都是完全兼容的,避免了移植过程中繁琐。同样的,STC官方也说明,靠软件延实现的延时是需要做调整的,与前文的叙述一致。当然,STC12系列毕竟和传统的8051系列有着太大的不同,关于芯片替换中需要注意的问题,就需要用户自己阅读STC官方技术手册了。

 以上对51单片机及程序兼容性做出了解释,上述文字仅代表工作室意见,难免出现错误、不足。望高手们更正指出!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:170536 发表于 2017-4-8 08:27 | 只看该作者
最近用stc15系列代替89c芯片也是遇到问题了:irc设置频率为6M原89(外晶振6M)ale输出1M给8279分频作时钟信号,
回复

使用道具 举报

板凳
ID:255072 发表于 2017-12-18 11:18 | 只看该作者
学习了,之前一直在星创客看单片机教程,学得差不多了,回头偶尔看看理论知识也是很重要的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表