您的位置: 网站首页 > 电子与嵌入式 > 单片机原理与应用 > 第1章 绪论 > 【1.3 单片机软件基础】

1.3 单片机软件基础

 

1.3.1  微型计算机数制

迄今为止,所有计算机都是以二进制形式进行算术运算和逻辑运算的,微型计算机也不例外。因此,用户在键盘上输入的十进制数字和符号命令,微型计算机都必须先把它们转换成二进制形式进行识别、运算和处理,然后再把运算结果还原成十进制数字和符号在CRT显示器上显示出来。

虽然上述过程十分烦琐,但都是由微型计算机自动完成的。为了使读者弄清计算机的这一工作机理,我们先对微型计算机中常用的数制和数制间的转换进行讨论。

所谓数制是计数的制式,是人们利用符号计数的一种科学方法。数制是人类在长期的生存斗争和社会实践中逐步形成的。数制有很多种,微型计算机中常用的数制有十进制、二进制和十六进制3种。

1.十进制(Decimal

十进制是大家很熟悉的进位计数制,它共有012345678910个数字符号。这10个数字符号又称为数码,每个数码在数中最多可有两个值的概念。例如:十进制数45中数码4,其本身的值为4,但它实际代表的值为40。在数学上,数制中数码的个数定义为基数,故十进制的基数为10

十进制是一种科学的计数方法,它所能表示的数的范围很大,可以从无限小到无限大。十进制数通常具有如下两个主要特点:

1)它有0910个不同的数码,这是构成所有十进制数的基本符号。

2)它是逢十进位的。十进制数在计数过程中,当它的某位计满10时就要向它相邻的高位进一。

因此,任何一个十进制数不仅和构成它的每个数码本身的值有关,而且还和这些数码在数中的位置有关。这就是说,任何一个十进制数都可以展开成幂级数形式。例如:

123.45=1×102+2×101+3×100+4×10-1+5×10-2

式中,指数10210110010-110-2在数学上称为权;10为它的基数;整数部分中每位的幂是该位位数减1;小数部分中每位的幂是该位小数的位数。

2.二进制(Binary

二进制比十进制更为简单,它是随着计算机的发展而发展起来的。二进制数也有如下两个主要特点:

1)它共有01两个数码,任何二进制数都是由这两个数码组成的。

2)二进制数的基数为2,它遵守逢二进一的进位计数原则。

因此,二进制数同样也可以展开成幂级数形式,不过内容有所不同罢了。例如:

10110.11B=1×24+0×23+1×22+1×21+0×20+1×2-1+1×2-2

=1×24+1×22+1×21+1×2-1+1×2-2

=22.75

式中,指数24232221202-12-2为权;2为基数;其余和十进制时相同。

3.十六进制(Hexadecimal

十六进制是人们学习和研究计算机中二进制数的一种工具,它是随着计算机的发展而广泛应用的。十六进制数也有两个主要特点:

1)它有012、…、9ABCDEF16个数码,任何一个十六进制数都是由其中的一些或全部数码构成的。

2)十六进制数的基数为16,进位计数为逢十六进一。

十六进制数也可展开成幂级数形式。例如:

70F.B1H=7×162+F×160+B×16-1+1×16-2=1807.6914

在微型计算机内部,数的表示形式是二进制的,这是因为二进制数只有01两个数码,人们采用晶体管的导通和截止、脉冲的高电平和低电平等都是很容易表示它的。此外,二进制数运算简单,便于用电子线路实现。

人们采用十六进制可以大大减轻阅读和书写二进制数时的负担。例如:

11011011B=DBH

1001001111110010B=93F2H

显然,采用十六进制数描述一个二进制数特别简短,尤其是在被描述二进制数位数较长时更令计算机工作者感到方便。

在阅读和书写不同数制的数时,如果不在每个数上外加一些辨认标记,就会混淆而无法分清。通常,标记方法有两种:一种是把数加上方括号,并在方括号右下角标注数制代号,如[101]16[101]2[101]10分别表示十六进制、二进制和十进制;另一种是用英文字母标记,加在被标记数的后面,分别用BDH表示二进制、十进制和十六进制数,如89H为十六进制数、101B为二进制数等。其中,十进制数中的D标记可以省略。十进制、二进制和十六进制数的对照如表1-1所示。

1-1  十进制、二进制和十六进制的对照表

   

   

   

   

十六进制

   

   

十六进制

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

10000

0

1

2

3

4

b

6

7

8

9

A

B

C

D

E

F

10

0

0.5

0.25

0.125

0.0625

0.03125

0.015625

 

 

 

 

 

 

 

 

 

0

0.1

0.01

0.001

0.0001

0.00001

0.000001

 

 

 

 

 

 

 

 

 

0

0.8

0.4

0.2

0.1

0.08

0.04

 

 

 

 

 

 

 

 

 

 

 

1.3.2  微型计算机数制间数的转换

微型计算机是采用二进制数操作的,但人们习惯于使用十进制数,这就要求计算机能自动对不同数制的数进行转换。我们暂且不讨论微型计算机是如何进行这种转换的,先来看看数学上是如何进行上述3种数制间数的转换的。

1.二进制和十进制数间的转换

1)二进制数转换成十进制数:只要把欲转换数按权展开后相加即可,也可以从小数点开始每4位一组后按十六进制的权展开并相加。例如:

11010.01B=1×24+1×23+1×21+1×2-2=26.25

2)十进制数转换成二进制数:本转换过程是上述转换过程的逆过程,但十进制整数和小数转换成二进制整数和小数的方法是不相同的。现分别进行介绍。

十进制整数转换成二进制整数的方法有很多种,最常用的是“除2取余法”。

“除2取余法”法则是:用2连续去除要转换的十进制数,直到商小于2为止,然后把各次余数按最后得到的为最高位和最早得到的为最低位,依次排列起来所得到的数便是所求的二进制数。现举例加以说明。

1-1试求出十进制数215的二进制数。

解:215连续除以2,直到商数小于2,相应竖式为:

把所得余数按箭头方向从低到高排列起来便可得到(最高位为3/2剩的1):

215=11010111B

十进制小数转换成二进制小数通常采用“乘2取整法”。

“乘2取整法”法则是:用2连续去乘要转换的十进制小数,直到所得积的小数部分为0或满足所需精度为止,然后把各次整数按最先得到的为最高位和最后得到的为最低位,依次排列起来所对应的数便是所求的二进制小数。现结合实例加以介绍。

1-2试把十进制小数0.6879转换为二进制小数。

解:0.6879不断地乘2,取每次所得乘积的整数部分,直到乘积的小数部分满足所需精度,相应竖式是:

0.6879

        ×2

1.3758           取得整数1

0.3758

        ×2

0.751 6          取得整数0

        ×2

1.5032           取得整数1

0.5032

        ×2

1.0064           取得整数1

把所得整数按箭头方向从高到低排列后得到:

0.6879D≈0.101 1B

对同时有整数和小数两部分的十进制数,其转换成二进制数的方法可以把它的整数和小数部分分开转换后,再合并起来。例如,把例1-1和例1-2合并起来便可得到:

215.687911010111.1011B

应当指出:任何十进制整数都可以精确转换成一个二进制整数,但十进制小数却不一定可以精确转换成二进制小数。例1-2中的情况就是一例。

2.二进制和十六进制数的转换

二进制和十六进制数间的转换十分方便,这就是为什么人们要采用十六进制形式来对二进制数加以表达的内在原因。

1)二进制数转换成十六进制数:可采用“四位合一位法”。

“四位合一位法”法则是:从二进制数的小数点开始,或左或右每4位一组,不是4位以0补足之,然后分别把每组用十六进制数码表示,并按序相连。

1-3若要把1101111100011.10010100B转换为十六进制数,则有:

0001  1011  1110  0011.1001 0100

1      B     E    3    9    4

1101111100011.10010100B=1BE3.94H

2)十六进制转换成二进制数:这种转换方法是把十六进制数的每位分别用4位二进制数码表示,然后把它们连成一体。

1-4若要把十六进制数3AB.7A5转换为一个二进制数,则有:

3      A     B.       7     A     5

0011  1010   1011     0111  1010  0101

3AB.7A5H=1110101011.011110100101B

1.4  8位单片机的主要生产厂商和机型

1.4.1  单片机主要厂商

1976年单片机诞生以来,其产品在30多年里得到了迅猛发展,形成了多公司、多系列、多型号的局面。在国际上影响较大的公司及其产品如表1-2所示。

1-2  世界上较为著名的8位单片机的生产厂家和主要机型

   

典型产品系列

Intel美国英特尔)公司

MCS-51及其增强型系列

Philips荷兰飞利浦)公司

8XC55289C66x系列

Motorola摩托罗拉)公司

6801系列和6805系列

ATMEL

MCS系列兼容的51系列

Fairchild美国仙童)公司

F8系列和3870系列

续上表

   

典型产品系列

Rockwell美国洛克威尔)公司

6500/1系列

TI美国德克萨斯仪器仪表)公司

TMS7000系列

NS美国国家半导体)公司

NS8070系列

RCA美国无线电)公司

CDPl80系列

NEC日本电气)公司

PD7800系列

HITACHI日本日立)公司

HD6301HD63L05HD6305

Microchip

PICl6 C5X系列

Zilog美国齐洛格)公司

Z8系列及Super8

除上述公司及其产品外,还有一些其他公司也生产各种类型的单片机,如SiemensOKIMostek公司等。

1.4.2  单片机主要产品

1Intel公司系列单片机

Intel公司的系列单片机可分为MCS-51MCS-96两个系列。Intel单片机的每一类芯片的ROM根据型号一般有片内掩膜ROM、片内EPROM和外接EPROM3种方式,这是Intel公司首创的,现已成为单片机的统一规范。最近Intel公司又推出片内带E2PROM型单片机。片内掩膜ROM型单片机适合于已定型的产品,可以大批量生产;片内带EPROM型、外接EPROM型及片内带E2PROM型单片机适合于研制产品和生产产品样机。MCS-51系列单片机的性能如表1-3所示。

1-3  MCS-51系列单片机性能

    

程序存储器

RAM/B

I/O口线

定时器/×

   

晶振/MHz

8051

8051AH/BH

4KB ROM

128

32

2×16

5

212

8751AH/BH

4KB EPROM

128

32

2×16

5

212

8031 AH

128

32

2×16

5

212

8052

8052AH

8KB ROM

256

32

3×16

6

212

8752AH

8KB EPROM

256

32

3×16

6

212

8032AH

256

32

3×16

6

212

80C51

80C51BH

4KB ROM

128

32

2×16

5

212

87C51BH

4KB EPROM

128

32

2×16

5

212

80C31BH

128

32

2×16

5

212

80C52

80C52

8KB ROM

256

32

3×16

6

212

80C32

256

32

3×16

6

212

80C54

87C54

16KB ROM

256

32

3×16

6

220

80C54

16KB ROM

256

32

3×16

6

220

80C58

87C58

32KB ROM

256

32

3×16

6

220

2Philips公司单片机

Philips公司生产与MCS-51兼容的80C51系列单片机,片内具有12C总线、A/D转换器、定时监视器等。其主要产品有80C5180C5280C3180C3280C52880C55280C56280C751等,其中80C552功能最强,80C751体积最小。

Philips单片机的特点是具有12C总线,这是一种串行通信总线。可以通过12C总线对系统进行扩展,使单片机系统结构更简单,体积更小。12C总线也可用于多机通信。

3Motorola公司单片机

Motorola公司的单片机从应用角度可以分成两类,即高性能的通用型单片机和面向家用消费领域的专用型单片机。MC68HC05系列单片机的特性如表1-4所示。

1-4  MC68HC05系列单片机特性

    

片内ROM

片内

RAM

I/O接口

监视

定时器

输入

捕捉

输出

比较

A/D

引脚

系数

ROM

E2 PROM

并行I/O

计数器

串行I/O

68HC05B6

6KB

256

176

32

16

SCI

2

2

48/52

68HC05C5

5KB

 

176

32

16

SIOP

1

1

 

40/44

68HC05C8

 

8KB

 

 

176

 

31

 

16

 

SPI

SCI

 

1

 

1

 

 

40/44

 

通用型单片机具有代表性的是MC68HCll系列,有几十种型号。其典型产品为MC68HCllA8,具有准16位的CPU8KB ROM256B RAM512B EPROM169功能定时器、38I/O口线、两个串行口、8位脉冲累加器、88A/D转换器、WatchDog17个中断向量等,可单片工作,也可以扩展方式工作。

专用型单片机性能价格比较高,应用时一般采用“单片”形式,原则上一块单片机就是整个控制系统。这类单片机无法外接存储器,如MC68HC05/MC68HC04系列。

4ATMEL51系列单片机

ATMEL公司生产的CMOS51系列单片机,具有MCS-51内核,用Flash ROM代替ROM作为程序存储器,具有价格低、编程方便等优点。例如,89C51就是拥有4KB Flash ROM的单片机。

ATMEL公司生产的单片机主要有89C5189F5189C5289LV5289C55等。

5Microchip公司的单片机

Microchip公司推出了PICl6C5X系列单片机。它的典型产品PICl6C57具有8CPU2K×12EPROM程序存储器、80×8RAM、一个8位定时器/计数器、21I/O口线等硬件资源。指令系统采用RISC指令,拥有33条基本指令,指令长度为12位,工作速度较高。其主要产品有PICl6C54PICl6C56等。

6Zilog公司的单片机

Zilog公司推出的Z8系列单片机是一种中档8位单片机。它的典型产品为Z8601,具有8CPU2KB ROM124B RAM、两个8位定时器/计数器、32I/O口线、一个异步串行通信口、6个中断向量等。其主要产品型号有Z8600/10Z8601/11Z86C06Z86C21Z86C40Z86C93等。