文档库 最新最全的文档下载
当前位置:文档库 › 09A单片机基础知识

09A单片机基础知识

第四章基础知识

第一节数制

常说的计算机,谁都会理解是个人电脑PC。说得准确些,应叫电子数字计算机,以区别另一类电子模拟计算机。为什么叫电子数字计算机呢?这是因为其内部是一个数字信息世界:空间地址是数字化;语言是数字化;信息流动是数字化;运算逻辑判断即“思维”是数字化;整体管理和控制是数字化;与外部交换信息也是数字化。由于世界上最简单的数制是二进制数,最适合于具有两个稳态的电子器件所制成的计算机。二进制还可以衍生出更方便的数制,便于运算和表达。下面讲一下数制。

4.1数制

数制是指计数的规则。

4.1.1 二进制

二进制只有两个数1和0,其基数是2。计数规则是逢二进一。通过如图3-1所示的运算可以找出二进制与十进制的关系。权码, 即该位为1代表的权值。

10

图4-1 二进制、十进制及十六进制的对应关系

由图4-1可以看出4位二进制1111表示的是十进制的15,二进制0000表示的是十进制的0。为防止把二进制1111读成壹千壹百壹拾壹,可用一个下标B(Binary)表示:1111B=15D,下标D(Decimal)表示十进制,一般不写。从二进制与十进制的对应关系可以看到如下特点:

权码 1 1 1 1 B=15

对应权值1×23+1×22+1×21+1×20 =

对应权值8 + 4 + 2 + 1 =15(二进制数值)

式中的8、4、2和1称为权值。1111B中的每个1称为系数或权码。4位二进制数可表达十进制数0 ~ 15,共16个数。当十进制数超过15时,则向前进1位,变成0000B。进上去的1表示溢位。16这个十进制数已超出4位二进制的表示范围。为表达比15大的二进制数,可采用多位二进制。例如,采用8位二进制数:

权码 1 1 1 1 1 1 1 1B=

对应权值1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20=

对应权值128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 =255(二进制数值) 由上面的式子还可看出一个特点,可帮助我们记忆和心算,即:每一位的权值都比其右边所有权值的和多1。

计算机中有8位二进制数,再大则要用到16位和32位二进制数。

高8位低8位

权码 1 1 1 1 1 1 1 1 1

权值1×215 1×214 1×213 1×2121×211 1×2101×291×28 1×27

权值32568 16284 8192 4096 2048 1024 512 256 128

简称32K 16K 8K 4K 2K 1K

为了方便,其中称1024为1K。对单片机来说常用的4K、8K、16K、32K应当记熟。

当用二进制表示一个较大的数时, 1和0的位数太多,不便于书写,很不直观。因此,又引出十六进制(Hexadecimal)。十六进制数可用一个下标H表示。

对几个名词的说明如下:

位(bit):二进制数的1位,即1或0。

字节(byte):相邻的8个二进制位为1个字节。

字长:每个数所含二进制位的数量叫字长。计算机内的字长都是字节的整数倍。

地址:由内部存储器中许多存储单元组成。将每个单元都顺序地统一编号,这个编号就是地址。

4.1.2 十六进制

从图3-1的最右侧一列可见,自9之后就用A、B、C、D、E和F分别表示10、11、12、13、14和15。这样就可以把沉长的二进制变得简短了。

11

例如:

二进制 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 1

对应十六进制 B C 7 5

即BC75H,以4位二进制为一段,用0~F表示。运算时机器还是按二进制计算。书写时为防止混淆,作数据用时要标注H或$或0x, 这表示十六进制数。机器在运行时,译码器会自动识别出数据或码制。

在上面两节中学了二进制数转换成十进制数的方法。下面介绍把十进制数反过来变成二进制数的余数法:用2去除二进制数,先得的余数为低位,后得的余数为高位,直到商为0为止。

例如:

2

余数

——1最低位

——1

——0

0 ——1 最高位

即:11=1011B

4.1.3 二进制数的运算

1. 二进制加法规则

二进制的加法规则如下:

(1) 0+0=0

(2) 0+1=1

(3) 1+1=0+进位

(4) 1+1+1=1+进位

例:1110B+1100B=1 1010 B

1 1 1 0 被加数

+ 1 1 0 0 加数

1 进位

——————————

1 1 0 1 0 和

2. 二进制减法规则

二进制的减法规则如下:

(1)0-0=0

(2) 1-0=1

(3) 1-1=0

(4) 0-1=1-借位

例:10110B-1100B= 1010 B

1 0 1 1 0 被减数

- 1 1 0 0 减数

——————————

1 0 1 0 差

12

13

3. 二进制乘法规则

二进制的乘法规则如下: (1) 0×0=0

(2) 0×1=0

(3) 1×0=0

(4) 1×1=1

例:1101B ×1011B = 1000 1111B

1 1 0 1

× 1 0 1 1

———————

1 1 0 1

1 1 0 1

0 0 0 0

1 1 0 1

——————————

1 0 0 0 1 1 1 1

注意:乘2相当于左移1位。例:

1 1 0 1

× 1 0

——————

0 0 0 0

1 1 0 1

——————

1 1 0 1 0

常用将被乘数左移1位的方法来完成乘2运算。

4.二进制除法规则

(不考虑余数)

例:10110101B ÷1001B =10100B

1 0 1 0 0

————————

1001 1 0 1 1 0 1 0 1

1 0 0 1

———————

1 0 0 1

1 0 0 1

———————

0 0 1

4.2 计算机的基本运算

计算机有3种基本运算:算术运算、关系运算和逻辑运算。

4.2.1 算术运算

单片机中的运算逻辑单元(ALU )执行加、减、乘、除四则运算。凡函数运算(三角!7x !5x !3x x x sin 7

53-+-=

函数、指数、对数运算)都将其化成四则运算。例如,正弦函数求值计算变成多项式的求和计算:

更复杂的运算,例如求解方程式的根,也都要变成四则运算。单片机中就有加减法指令等, 可完成复杂的运算。

4.2.2 关系运算

计算机内所要处理的信息不论是数据还是字都是用0和1表示。关系运算就是比较两数据是否相同或不相同。若不相同,再区分大小。关系运算包括“大于”、“小于”、“等于”和“不等于”4种。在实际工作中应用很普遍,例如,自动控制中的正转和反转,以及机器人运行时判断是否离开轨迹线,等等。单片机中就有条件转移指令中的“大于”、“小于”指令等, 可以完成各种判断处理工作。

4.2.3 逻辑运算

逻辑数据只有两个值1和0。1表示“真”(True),0表示“假”(False)。基本逻辑运算有3种,还可衍生1种,即“与(AND)”、“或(OR)”、“非(NOT)”或“异或(EOR)”。

1.“与”运算

“与”可用两串联开关与灯泡、电源串联电路来说明,见图3-2。当开关A与B都同时闭合时,灯P才亮。可用逻辑表达式

A·B=P 或A∧B=P

来表示,说明只有A“与”B都闭合,灯P才亮。“与”运算的真值表如表3-2所列,即有0即0,全1为1。

表3-2 “与”运算真值表

2.“或”运算

“或”(OR)可用两开关A和B并联后与电源和灯P作如图3-3的连接来说明,其

14

15

逻辑关系可用逻辑表达式

A+B=P 或 A ∨B=P

来表示。说明A “或”B 两者有一个闭合,灯P 就亮。“或”运算的逻辑真值表如表3-3所列,即有1即1,全0为0。

图3-3 “或”运算电路示意图及或门符号

表3-3 “或”运算真值表

当编写程序时,用逻辑“与”、“或”可对数据起屏蔽和摘取作用。例如:从数据1100 1010B 中只选取高4位(去掉低4位的值),可用1111 0000 B 和1100 1011 B 作“与”运算来实现,即

1 1 0 0 1 0 1 1

∨ 1 1 1 1 0 0 0 0

———————— —

1 1 0 0 0 0 0 0

若使某数据的高4位都变成1,又不影响其低4位,则可用1111 0000B 与1001B 进行“或”运算来实现,即

1 0 0 1 1 0 0 1

1 1 1 1 0 0 0 0 ———————— —

1 1 1 1 1 0 0 1

例如,第6章开关控制灯的例题中用到的SBR 指令“SBR R16.$F0”,可用“或”指令“OR R16.$F0”代替。

3.“异或”运算

“异或” (XOR ——

eXclusive OR )逻辑运算可用图3-4

如示电路来说明。两个双位联动开

关串联之后与灯P 和电源并联。当

正面A 与B 或者反面A 与B 闭合

16 时,灯P 不亮,即同一面都闭合时,灯不亮。若有一面不同时闭合,则灯亮。可用逻辑表达式 P

B A P B A P

B A B A =?=⊕=+?

来表示。3个表达式等同。“异或”运算的逻辑真值表如表3-4所列。

图3-4 “异或”运算电路示意图及电路符号

表3-4 “异或”运算真值表

该逻辑用来进行比较判断,例如对两数进行比较。若两数相同“异或”的结果为零,例如:

1 0 1 1 1 0 0 1

1 0 1 1 1 0 0 1

———————— —

0 0 0 0 0 0 0 0 ——影响

则说明两数相同。若两数“异或”的结果不为零,例如:

1 0 1 1 1 0 0 0

1 0 1 1 1 0 0 1

———————— —

0 0 0 0 0 0 0 1

则说明两数不同。其应用见后指令表EOR 指令。

4.“非”运算

“非(NOT )”逻辑运算对应的电路如图3-5所示。A 闭合则灯灭,A 断开则灯亮。“非”运算的逻辑真值表如表3-5所列。

??

表3-5 “非”运算真值表

4.3 运算后的状态

计算机的算术逻辑单元ALU在不停地运算。对每次运算我们不仅要注意数值结果,同时还要根据其运算状态来决定下面程序流程的走向。运算后的状态存放在状态寄存器

17

SREG中。它的8个位被设计者定义为如图3-6所示的涵意。

图4-6 运算中影响程序状态字

对于图3-6中的8个位,仅要求初学者了解其中的位C、Z、H、I和T。

·因第7位有进位C=1。

·若结果为0(即8位全0),则Z=1。

·若低4位的高位向高4位进位(叫半进位),则H=1。

·若在机器运行过程中遇有特殊的意外事件发生时允许机器作应急处理,即执行应急程序,则I=1(中断的概念见后)。

·T是留出的1位,为监视所关注的寄存器的某一位而设。

4.4 中断的慨念

用日常生活中遇到的中断慨念来说明计算机中的中断概念。例如,写字楼的高层有位资深的总编日理万机。当他写作的思绪正如潮涌,笔下如神时,突然,洪水诀堤而泄,必须停止眼下的工作,尽快去抢险,这就是中断。而且他的工作也不是绝对不可停的,即是可允许中断的。这时就把状态寄存器SREG的I位置1。但在同样情况下,一位正在作开颅手术或作心脏手术的大夫就绝不可停止手术,即不可中断。这时SREG的最高位就应置0。在中断时应当作什么工作呢?对总编来说,就应当记住工作到计划的哪一页,例如第9页。而且还要把所用的资料、素材和照片有序地放在专用的第5号保险柜第3层第7号文件夹中。要牢记537这个号,待紧急任务完成后,取出537号文件夹,接着从第9页开始工作。单片机处理中断与此类似。它是在叫做RAM的存储器中设置一个空间,作为存放资料的“保险柜”,中断的地址即“第几页”。机器会自动“告诉”程序计数器PC指针,所存放的资料也会自动弹出。

在执行中断时还会遇到更重要的紧急事件,还得在中断中嵌套中断。过程与第1次中断相同。中断的处理完全可以在编写程序时随心安排。

4.5 定时器/计数器(T/C)

它与我们用的闹钟类似。闹钟实质是计数器,只不过计量的是标准电秒脉冲信号。把它拨到早6点,当计“数”一到,就响铃催人起床。

单片机内部资源应有尽有,8515芯片中有一个8位计数器和一个16位计数器。每当输入一个计数脉冲时,二进制计数器就逢二进一计下去。8位计数器最多可计到255个脉冲,16位计数器可计到65 535个脉冲。用计数器在生产线上作计数用会大显神通。以装药片为例,要求每个大瓶装入 1 000片药片,当装满之后控制机器转动推走装满的瓶子,并跟过来一个空瓶。解决这个问题的思路就同聪明的乌鸦想喝细颈瓶中的剩水一样,往瓶中衔小石头,水就被逐渐地挤上来了。

通过计算可知,在计数器中应预置的数为

65 535-1 000=64 535

64 535再变成二进制数或十六进制数,即

64 535=1111 1100 0001 1000B=FC18H

应预置入FC18H,当计满时即可产生进位信号。用它可以驱动机器转动,并可将18

FC18H再次自动预置。

用它来驱动机器转动。因为计满数之后16位计数器变成全0,所以在下一次计数时还得预置FC18H。这个常数是自动置入的,见3-7工作示意图。

图3-7 计数器自动预置数原理

如果计数电脉冲换成时间间隔十分精密的时间电脉冲,则16位计数器就可以变成计时器了。

4.6 看门狗(Watch Dog)

举个例子:黑心的业主顾来工人给他干活,在工人反复必经的路上设置了一个红外传感电子闹钟,用来监视工人。工人紧张工作,大约10分钟左右经过一次。每经过红外传感时,电子闹钟就复位一次重新计时。业主就把电子闹钟设置11分钟就响,不让工人稍缓一口气,他却睡大觉去了。一旦铃响,他就把工人拉回来从头干活。因此,把这个闹钟叫做“看门狗”。

单片机中的看门狗,是为替我们监视程序运行情况而设。我们在编写程序时,在程序流程中多设些看门狗复位指令。当程序正常运行时,使看门狗这个闹钟不断清0,不会因计满而“狂叫”。程序一旦受外界干扰而不能正常工作,或陷入死循环,就不能及时使看门狗复位。看门狗就发出复位信号,强行把程序计数器PC值置0,使单片机从头开始工作。

要注意的是,看门狗有一个在单片机内部独立的时钟信号源,其工作频率为1 MHz,与单片机的外部时钟源完全无关。

4.7 有关名词介绍

4.7.1 指令和程序

1. 指令

它是人对计算机发出的完成一个最基本操作的工作命令。由计算机的硬件来执行。因计算机硬件的结构不同,指令也不同。某一种计算机的基本指令的集合称为该计算机的指令系统。指令系统中的指令按功能分有:数据传送、算术逻辑运算、程序控制、输入/输出以及控制等功能。指令系统在很大程度上决定了计算机的处理能力,是计算机的重要特征。详细内容见第5章。

2. 程序

人们为解决某一问题而写出的有序的一条条指令称为程序。设计和书写程序的过程称

为程序设计。计算机的指令系统是程序设计的基本依据。

19

相关文档