新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 学习单片机时遇到的常见问题

学习单片机时遇到的常见问题

作者:时间:2012-11-02来源:网络收藏

要让“听话”,就要用能够听懂的语言发布命令,能够听懂的语言称之为“指令”。任何一种型号单片机能够接受的指令都是有限的,51单片机的指令条数为111条,而PIC单片机的指令仅有35条。每一条指令完成一个最基本的动作,人们为了要完成一个特定的功能,就要将这些指令排列组合,成为一个指令序列,这就是程序。

指令的表示形式有两种:机器语言和汇编语言。以51为例,如果要让P1.0引脚变为低电平,用机器语言来表示就是 C2H 90H,将这两个数放进单片机的程序存储器中,单片机执行后,就可以让P1.0引脚变为低电平了;而要让P1.0引脚变为高电平,用机器语言来表示就是D2H,90H。至于为什么是这两个数字,大家没必要追究,这是设计这块芯片的设计工程师规定的,我们不能更改,只能学习。

C2H,90H就是一条指令,显然这样的指令形式是很难记忆的,编程也非常困难,于是人们使用了“助记符”来代替这些数字。例如C2H,90H的助记符是CLR P1.0,而D2H,90H的助记符是SETB P1.0,由于助记符采用了英语字母的缩写,有一定含义,因此比数字形式的指令易记、易用。使用助记符形式的指令来编写程序就称之为“汇编语言源程序”。但是汇编语言源程序是没有办法直接送到单片机内部去的,使用助记符形式的指令编写的程序最终还是要变成为诸如:C2H,90H,D2H,90H,这种形式的指令才能被送入单片机的程序存储器。将助记符形式的指令变为数字形式的指令的过程称之“汇编”。汇编有两种方法,一种是“手工汇编”,即人们通过查表的形式找到所写汇编指令的数字形式然后写下来;另一种是“机器汇编”,即编写好汇编语言源程序以后,使用一个计算机软件对这些源程序进行处理,从而得到数字形式的指令序列,这个指令序列通常被称为“机器码”,即可以直接被机器所执行的代码。

机器汇编后得到的数字形式的指令序列以一个文件的形式保存在磁盘上,这个文件的扩展名一般是HEX,即人们常说的HEX文件。得到了HEX文件后,就可以将其写入程序存储器中了。要将程序写入芯片,通常需要一个称之为“编程器”的专用设备,在计算机上运行与之配套的编程软件,然后在这个软件中打开HEX文件,即可将其写入芯片中。随着技术的发展,编程方式越来越多,但总的概念是这样的,具体的细节,将在另一个问题“单片机编程器是什么”中回答。

4. 8位、16位、32位单片机中的“XX位”指什么?

8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是0000,0000~1111,1111即十进制的0~255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0~65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0~4294967295,即每次参与运算的数据最大不能超过4294967295。

8位、16位、32位与单片机的性能密切相关,通常32位机的性能要高于16位机,而16位机的性能又要高于8位机。为什么会这样呢?这要从2个方面来分析。第一,位数不同,运算效率不同。对于8位机而言,由于在一次运算中的每一个数都不能超过8位,因此即便如100+200=300这样的运算,它也不能一次完成,因为300已超过了8位所能表达的最大范围(255),因此,要对这样的一个式子进行运算,就要编写一段程序,将运算分步完成,最后合成起来得到一个正确的结果。而如果采用16位单片机来运算的话,那么一次运算就够了,显然分步完成所需要的时间要远远大于单步完成所需要的时间。同样道理,当某个运算的结果或者中间值大于65535时,16位机也不能一次运算,要分步实现它,而32位机则可以一次运算完成。第二,商业因素。通常运算能力越高,表示这个单片机性能越强,当然,价格高一些人们也可以接受,有了价格空间,生产商通常都会在这些芯片中提供更多的其他的功能,使得芯片的整体性能得到更大的提升。

典型的单片机中,系列,PIC系列,AVR系列都是8位单片机;80C196、MSP430系列是16位机;而目前非常热门的ARM系列则是32位机。

5. 单片机编程器、仿真器、烧写器、下载线各是什么?有什么用处?

单片机编程器是用来将程序代码写入存储器芯片或者单片机内部的工具,如图5-1所示是一个典型的编程的外形。图中黑色的集成电路插座,通过拔动手柄可以将置于其中的集成电路芯片锁紧或松开。编程时锁紧以保证接触良好,编程完毕松开,可以更换下一片芯片。

学习单片机时遇到的常见问题

图5-1编程器

当芯片是双列直插形式时,直接插在座子上就可以烧写了,但如果遇到如图5-2所示的各种封装形式的芯片,又如何写烧写呢?一种方法是使用适配器,如图5-3所示是各种封装芯片所使用的适配器。

学习单片机时遇到的常见问题

图5-2 各种封装形式的集成电路

QFN32 适配器 SOP28适配器

学习单片机时遇到的常见问题

图5-3 各种封装的编程适配器

另一种方法是使用下载线。随着技术的进步,越来越多的单片机芯片开始支持“ISP”功能,即In System Programmer,在线可编程技术。利用这种技术,将空白的(尚未编程的)芯片直接焊在印刷线路板上,利用预先留下的几个引脚即可对芯片进行编程,不必将芯片拆下来放到编程器上,因此,这给小批量制作带来了极大的方便,也省去了购买价格昂贵的适配器。如图5-4所示是使用下载线对芯片进行在线编程的示意图。

学习单片机时遇到的常见问题

图5-4 下载线对芯片进行在线编程示意图



评论


相关推荐

技术专区

关闭