4b单片机基础知识.docx
《4b单片机基础知识.docx》由会员分享,可在线阅读,更多相关《4b单片机基础知识.docx(15页珍藏版)》请在冰豆网上搜索。
4b单片机基础知识
第四章基础知识
第一节数制
常说的计算机,谁都会理解是个人电脑PC。
说得准确些,应叫电子数字计算机,以区别另一类电子模拟计算机。
为什么叫电子数字计算机呢?
这是因为其内部是一个数字信息世界:
空间地址是数字化;语言是数字化;信息流动是数字化;运算逻辑判断即“思维”是数字化;整体管理和控制是数字化;与外部交换信息也是数字化。
由于世界上最简单的数制是二进制数,最适合于具有两个稳态的电子器件所制成的计算机。
二进制还可以衍生出更方便的数制,便于运算和表达。
下面讲一下数制。
4.1数制
数制是指计数的规则。
4.1.1二进制
二进制只有两个数1和0,其基数是2。
计数规则是逢二进一。
通过如图3-1所示的运算可以找出二进制与十进制的关系。
权码,即该位为1代表的权值。
二进制(B)权码
十进制(D)
十六进制(H)
16
24
823
4
22
2
21
1
20
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
1
0
2
2
0
0
0
1
1
3
3
0
0
1
0
0
4
4
0
0
1
0
1
5
5
0
0
1
1
0
6
6
0
0
1
1
1
7
7
0
1
0
0
0
8
8
0
1
0
0
1
9
9
0
1
0
1
0
10
A
0
1
0
1
1
11
B
0
1
1
0
0
12
C
0
1
1
0
1
13
D
0
1
1
1
0
14
E
0
1
1
1
1
15
F
1
0
0
0
0
16
10
1
0
0
0
1
17
11
图4-1二进制、十进制及十六进制的对应关系
由图4-1可以看出4位二进制1111表示的是十进制的15,二进制0000表示的是十进制的0。
为防止把二进制1111读成壹千壹百壹拾壹,可用一个下标B(Binary)表示:
1111B=15D,下标D(Decimal)表示十进制,一般不写。
从二进制与十进制的对应关系可以看到如下特点:
权码1111B=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位二进制数:
权码11111111B=
对应权值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位二进制数。
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
数位
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
权码
32768
16384
8192
4096
2048
1024
512
256
128
64
32
16
8
4
2
1
权值
32K
16K
8K
4K
2K
1K
简称
高8位低8位
权码111111111
权值1×2151×2141×2131×2121×2111×2101×291×281×27
权值32568162848192409620481024512256128
简称32K16K8K4K2K1K
为了方便,其中称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。
这样就可以把沉长的二进制变得简短了。
例如:
二进制1011110001110101
对应十六进制BC75
即BC75H,以4位二进制为一段,用0~F表示。
运算时机器还是按二进制计算。
书写时为防止混淆,作数据用时要标注H或$或0x,这表示十六进制数。
机器在运行时,译码器会自动识别出数据或码制。
在上面两节中学了二进制数转换成十进制数的方法。
下面介绍把十进制数反过来变成二进制数的余数法:
用2去除二进制数,先得的余数为低位,后得的余数为高位,直到商为0为止。
例如:
2
11
余数
2
5
——1最低位
2
2
——1
2
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=11010B
1110被加数
+1100加数
1进位
——————————
11010和
2.二进制减法规则
二进制的减法规则如下:
(1)0-0=0
(2)1-0=1
(3)1-1=0
(4)0-1=1-借位
例:
10110B-1100B=1010B
10110被减数
-1100减数
——————————
1010差
3.二进制乘法规则
二进制的乘法规则如下:
(1)0×0=0
(2)0×1=0
(3)1×0=0
(4)1×1=1
例:
1101B×1011B=10001111B
1101
×1011
———————
1101
1101
0000
1101
——————————
10001111
注意:
乘2相当于左移1位。
例:
1101
×10
——————
0000
1101
——————
11010
常用将被乘数左移1位的方法来完成乘2运算。
4.二进制除法规则
(不考虑余数)
例:
10110101B÷1001B=10100B
10100
————————
100110110101
1001
———————
1001
1001
———————
001
4.2计算机的基本运算
计算机有3种基本运算:
算术运算、关系运算和逻辑运算。
4.2.1算术运算
单片机中的运算逻辑单元(ALU)执行加、减、乘、除四则运算。
凡函数运算(三角函数、指数、对数运算)都将其化成四则运算。
例如,正弦函数求值计算变成多项式的求和计算:
更复杂的运算,例如求解方程式的根,也都要变成四则运算。
单片机中就有加减法指令等,可完成复杂的运算。
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“与”运算电路示意图及与门符号
表3-2“与”运算真值表
输入A
输入B
输出P
0
0
1
1
0
1
0
1
0—灭
0
0
1—亮
2.“或”运算
“或”(OR)可用两开关A和B并联后与电源和灯P作如图3-3的连接来说明,其逻辑关系可用逻辑表达式
A+B=P或A∨B=P
来表示。
说明A“或”B两者有一个闭合,灯P就亮。
“或”运算的逻辑真值表如表3-3所列,即有1即1,全0为0。
图3-3“或”运算电路示意图及或门符号
表3-3“或”运算真值表
输入A
输入B
输出P
0
0
1
1
0
1
0
1
0
1
1
1
当编写程序时,用逻辑“与”、“或”可对数据起屏蔽和摘取作用。
例如:
从数据11001010B中只选取高4位(去掉低4位的值),可用11110000B和11001011B作“与”运算来实现,即
11001011
∨11110000
—————————
11000000
若使某数据的高4位都变成1,又不影响其低4位,则可用11110000B与1001B进行“或”运算来实现,即
10011001
∧11110000
—————————
11111001
例如,第6章开关控制灯的例题中用到的SBR指令“SBRR16.$F0”,可用“或”指令“ORR16.$F0”代替。
3.“异或”运算
“异或”(XOR——eXclusiveOR)逻辑运算可用图3-4如示电路来说明。
两个双位联动开关串联之后与灯P和电源并联。
当正面A与B或者反面A与B闭合时,灯P不亮,即同一面都闭合时,灯不亮。
若有一面不同时闭合,则灯亮。
可用逻辑表达式
来表示。
3个表达式等同。
“异或”运算的逻辑真值表如表3-4所列。
图3-4“异或”运算电路示意图及电路符号
表3-4“异或”运算真值表
输入A
输入B
输出P
0
0
1
1
0
1
0
1
0
1
1
0
该逻辑用来进行比较判断,例如对两数进行比较。
若两数相同“异或”的结果为零,例如:
10111001
10111001
—————————
00000000——影响
则说明两数相同。
若两数“异或”的结果不为零,例如:
10111000
10111001
—————————
00000001
则说明两数不同。
其应用见后指令表EOR指令。
4.“非”运算
“非(NOT)”逻辑运算对应的电路如图3-5所示。
A闭合则灯灭,A断开则灯亮。
“非”运算的逻辑真值表如表3-5所列。
图3-5“非”运算电路示意图及电路符号
表3-5“非”运算真值表
输入A
输出P
1
0
0
1
4.3运算后的状态
计算机的算术逻辑单元ALU在不停地运算。
对每次运算我们不仅要注意数值结果,同时还要根据其运算状态来决定下面程序流程的走向。
运算后的状态存放在状态寄存器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位计数器可计到65535个脉冲。
用计数器在生产线上作计数用会大显神通。
以装药片为例,要求每个大瓶装入1000片药片,当装满之后控制机器转动推走装满的瓶子,并跟过来一个空瓶。
解决这个问题的思路就同聪明的乌鸦想喝细颈瓶中的剩水一样,往瓶中衔小石头,水就被逐渐地挤上来了。
通过计算可知,在计数器中应预置的数为
65535-1000=64535
64535再变成二进制数或十六进制数,即
64535=1111110000011000B=FC18H
应预置入FC18H,当计满时即可产生进位信号。
用它可以驱动机器转动,并可将FC18H再次自动预置。
用它来驱动机器转动。
因为计满数之后16位计数器变成全0,所以在下一次计数时还得预置FC18H。
这个常数是自动置入的,见3-7工作示意图。
图3-7计数器自动预置数原理
如果计数电脉冲换成时间间隔十分精密的时间电脉冲,则16位计数器就可以变成计时器了。
4.6看门狗(WatchDog)
举个例子:
黑心的业主顾来工人给他干活,在工人反复必经的路上设置了一个红外传感电子闹钟,用来监视工人。
工人紧张工作,大约10分钟左右经过一次。
每经过红外传感时,电子闹钟就复位一次重新计时。
业主就把电子闹钟设置11分钟就响,不让工人稍缓一口气,他却睡大觉去了。
一旦铃响,他就把工人拉回来从头干活。
因此,把这个闹钟叫做“看门狗”。
单片机中的看门狗,是为替我们监视程序运行情况而设。
我们在编写程序时,在程序流程中多设些看门狗复位指令。
当程序正常运行时,使看门狗这个闹钟不断清0,不会因计满而“狂叫”。
程序一旦受外界干扰而不能正常工作,或陷入死循环,就不能及时使看门狗复位。
看门狗就发出复位信号,强行把程序计数器PC值置0,使单片机从头开始工作。
要注意的是,看门狗有一个在单片机内部独立的时钟信号源,其工作频率为1MHz,与单片机的外部时钟源完全无关。
4.7有关名词介绍
4.7.1指令和程序
1.指令
它是人对计算机发出的完成一个最基本操作的工作命令。
由计算机的硬件来执行。
因计算机硬件的结构不同,指令也不同。
某一种计算机的基本指令的集合称为该计算机的指令系统。
指令系统中的指令按功能分有:
数据传送、算术逻辑运算、程序控制、输入/输出以及控制等功能。
指令系统在很大程度上决定了计算机的处理能力,是计算机的重要特征。
详细内容见第5章。
2.程序
人们为解决某一问题而写出的有序的一条条指令称为程序。
设计和书写程序的过程称为程序设计。
计算机的指令系统是程序设计的基本依据。
指令和程序在计算机中的执行过程如下:
计算机执行程序中的每条指令分为两个阶段,第1阶段是将要执行的指令从内存(AVR单片机从Flash)中取出CPU;第2阶段是CPU对该指令进行分析译码,判断该指令要执行的操作,然后向相关部件发出执行该指令的控制信号,并执行相应的操作。
程序是由一系列指令的集合而构成的。
程序的执行就是程序中一条条指令执行的全过程。
4.7.2关于程序设计语言和语言处理程序
计算机能自动连续地工作,是由程序控制而实现的,程序是用程序设计语言按任务的要求事先编写的。
程序设计语言按发展过程分为:
机器语言、汇编语言和高级语言。
1.机器语言
机器语言是以二进制代码表示的指令的集合,是计算机惟一能直接识别和执行的语言。
优点:
占用内容少,执行速度快。
缺点:
它是面向机器的语言,随机型而异,通用性差,难阅读,难记忆,难维护,编程工作量大,易出错。
2.汇编语言
汇编语言是用助记符来表示机器指令的语言,也称符号语言。
优点:
比机器语言易学、易记。
缺点:
通用性差,随机而异。
由于计算机只能识别和执行机器语言,因此,必须用汇编(形容词)程序(工具软件)把用汇编(形容词)语言编写的源程序翻译成机器能识别和执行的二进制码的目标程序。
这个翻译过程称为汇编(动词)。
(请注意此段汇编词性的涵意。
)
3.源程序
指用高级语言编写的程序。
4.目标程序
指计算机可直接执行的程序,就是以二进制机器码指令所组成的程序集合。
5.编译
将源程序翻译成目标程序,再作些必要的处理,这个操作过程称为“编译”。