第一章 单片机基础知识
Post on 03-Jan-2016
137 Views
Preview:
DESCRIPTION
TRANSCRIPT
第一章 单片机基础知识
§1-1 单片机概述
§1-2 数制及数码
内容提要 :
§1-1 单片机概述一、什么是单片机
单片机就是单片微型计算机 (Single-Chip Microcomputer) 。
微型计算机系统的硬件部分通常由五部分组成 :
输入设备 运算器 输出设备
控制器 存储器
这种计算机系统通常由多块印刷电路板制成:
多板机 主板
显卡声卡
存储器接口网卡
输入输出接口
内存条内存条 CPU
CPUCPU 芯片CPU 芯片内存条内存条存储器接口
存储器芯片存储器芯片输入输出接口输入输出接口
芯片输入输出接口
芯片
定时计数器芯片
定时计数器芯片
A/D 、 D/A芯片
A/D 、 D/A芯片
单板机
印
刷
电
路
板
单
硅
晶
片
CPU存储器
控制电路 定时器时钟电路
I / O 口
单片机
( 1 )体积小,重量轻;
( 2 )可靠性高,运行速度快,抗干扰能力强;
( 3 )控制功能强,使用灵活,性价比高;
( 4 )易扩展,易于开发;
( 5 )受集成度限制,片内存储器容量较小,一般
内 ROM 在 8KB 以下,内 RAM 在 256B 以内。
单片机是应工业测控的需要而诞生的 , 它的结构与指令功能都是按照工业控制要求设计的 , 故又称单片微控制器(Single Chip Microcontroller) 。
单片机特点:
以单片机为核心的应用系统广泛应用于:家用电器;
工业过程控制;
仪器仪表;
智能武器;
航空、汽车等领域。
二、单片机系统的组成
CPU
AB
DB
CB
存储器 接口部件
键盘 显示器 数码管 打印机
定时计数器
单片机系统
硬件部分
软件部分
单片机芯
片
外围器件
CPU
内存中断控制逻辑
通用接口
运算器
寄存器组
控制器
并行 I / O 口串行 UART
定时 / 计数器
ADC0809 、 DAC0832
8253
8251
8255A 、 8155
2764 、 6264指令系统
应用程序
§1-2 数制及数码计算机只识别和处理数字信息,数字是以二进制数的形式表示的。它易于物理实现,同时,资料存储、传送和处理简单可靠;运算规则简单,使逻辑电路的设计、分析、综合方便,使计算器具有逻辑性。
一、数制1 、常用数制
( 1. )十进制数:
1985 = 1000+900+80+5
= 1×103+9×102+8×101+5×100
特点:有 0 ~ 9 十个不同的符号。
逢十进一。
一般用下脚标 D 表示,如 1985D , 或无下脚标。
( 2. )二进制数:
特点:有 0 , 1 两个不同的符号。
逢二进一。二进制数的下脚标为 B
例如:对于整数,
1001B=1×23+0×22+0×21+1×20 = 9D
对于小数,
0.101B = 1×2-1 + 0×2-2 + 1×2-3 = 0.625D
二进制数每一位的权是:以小数点分界,
…..24 , 23 , 22 , 2 1, 2 0 . 2 -1, 2 -2, 2 - 3, ……
( 3. )十六进制数:
有 0~ 9 , A,B,C,D,E,F 共十六个不同的符号。
逢十六进位。用下脚标 “ H” 表示十六进制数。
例: 327 H = 3×162+2×161+7×160
= 807D
3AB . 11H = 3×162+A×161+B×160+1×161+1×16-2
=939 . 0664 D
2 、数制的转换
( 1. )二进制转换为十进制数
方法 : 按权展开。
111.101B =1×22+1×2 1+1×2 0 +1× 2 -1 +0× 2 -2
+1× 2 –3
=4+2+1+0.5+0.125
=7.625D
( 2. )十进制数转换为二进制数
方法: 整数部分除二取余,小数部分乘二取整
45 余数 22 1
11 0
5 1
2 1
1 0
0 1
2
2
2
2
2
2
即 45 = ( 101101 ) 2
例 1 、将十进制数 45 转换成二进制数。
例 2 :十进制小数部分的转换 : 乘二取整0.6875
× 2
最高位 取 1 1.3750
0.375
× 2
取 0 0.750
× 2
取 1 1. 50
0.5
× 2
最低位 取 1 1. 0
从上至下写成从左至右 10110.6875D = 0.
B
二进制数转换成八进制数与上述类似。
( 3. )十六进制数与二进制数之间的转换 :
十六进制数转换为二进制:
9 A B . 7 C 5 H
1001 1010 1011 . 0111 1100 0101B
二进制数转换十六进制数 :
0001 1011 1110 0011 . 1001 0111 1000B
1 B E 3 . 9 7 8H
二、数码1 、机器数与真值
机器只认识二进制数: 0 、 1 。
这是因为,电路状态常常有两种情况,
如:电路的通、断; 高电平、低电平;可用 0 、 1 表示。
在机器中,这种 0 、 1 、 0 、 1 的表现形式称为机器数。
机器数分为无符号数、带符号数。
无符号数如: 00000001 、 10010011 、 01010010 、 …… 等等,范围: 00H ~ FFH 。
有符号数如: +1010110B 、 -1101001B 、等等
01010110B、
11101001B
2、机器数的编码及运算对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。
( 1 )原码
将数“数码化”,原数前“ +” 用 0 表示,原数前“ -” 用 1 表示,数值部分为该数本身,这样的机器数叫原码。
设 X——原数;则 [X] 原 = X ( X0 )
[X] 原 = 2n-1 – X ( X0 ), n 为字长的位数。
如, [+3] 原 = 00000011B
[-3] 原 = 27 - ( -3 ) = 10000011B
0 有两种表示方法: 00000000 —— +0
10000000 —— -0
原码最大、最小的表示: +127 、 -128
( 2 )反码
规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。
[X] 反 = X ( X0 )
[X] 反 = ( 2n –1 ) + X ( X0 )如,
[+4] 反 = [+4] 原 = 00000100 B
[-4] 反 =(28–1)+(-5)=11111111-00000101= 11111010 B
反码范围: -128 ~ +127
两个 0 : +0 —— 00000000 B
-0 —— 11111111 B
运用补码可使减法变成加法。
规定:正数的补码等于原码。
负数的补码求法: 1 )反码 + 1
2 )公式: [X] 补 = 2n + X ( X<0 )
如,设 X = - 0101110 B , 则 [X] 原 = 10101110 B
则 [X] 补 = [X] 反 + 1 = 11010001 + 00000001 = 11010010 B
如, [+6] 补 = [+6] 原 = 00000110 B
[-6] 补 = 28 + ( -6 ) = 10000000 – 00000110 = 11111010 B
8 位补码的范围 – 128 ~ +127 。
0 的个数:只一个,即 00000000
而 10000000 B 是 -128 的补码。
原码、反码、补码对照表:见下表
12
3
( 3 )补码补码的概念:现在是下午 3 点,手表停在 12 点,可正拨 3 点,也可倒拨 9 点。即是说 -9 的操作可用 +3来实现,在 12 点里: 3 、 -9互为补码。
八位二进制数所能表示的数据范围 机器数 无符号数 原码 反码 补码
00000000 0 +0 +0 +0
00000001 1 +1 +1 +1
. . . . .
01111111 127 +127 +127 +127
10000000 128 -0 -127 -128
10000001 129 -1 -126 -127
. . . . .
. . . . .
11111110 254 -126 -1 -2
11111111 255 -127 -0 -1
( 4 )补码的运算
当 X≥0 时, [X] 补 = [X] 反 =[X] 原
[ [X] 补 ] 补 = [X] 原
[X] 补 + [Y] 补 = [ X+Y ] 补
[ X-Y ] 补 = [ X+ ( -Y ) ] 补
例:已知 X=52 Y=38 求 X-Y
方法 1 : 减法:
X-Y = 52-38 =14
0 0 1 1 0 1 0 0
- ) 0 0 1 0 0 1 1 0
0 0 0 0 1 1 1 0
方法 2 : 加法
X-Y = [ [ X-Y] 补 ]补 = [ [X] 补 +[-Y] 补 ] 补
=[ [52] 补 +[ -38] 补 ] 补
=[ 14 ] 补 =14
[52] 补: 0 0 1 1 0 1 0 0
[-38] 补: + ) 1 1 0 1 1 0 1 0
1 0 0 0 0 1 1 1 0
自然丢失
计算机在做算术运算时,必需检查溢出,以防止发生错误
(5) 运算的溢出问题
由于计算机中表示数据的字长(位数)有一定限制,所以数据的表示应有一个范围。
如字长 8 位时; 补码范围 -128~+127
若运算结果超出这个范围,便溢出。
例:
[98] 补: 0 1 1 0 0 0 1 0
[25] 补: + ) 0 0 0 1 1 0 0 1
[123] 补 0 0 1 1 1 1 0 1 1
未溢出 0 0
Cs+1 Cs (未溢出)
[85] 补: 0 1 0 1 0 1 0 1
[47] 补: + ) 0 0 1 0 1 1 1 1
[132] 补: 1 0 0 0 0 1 0 0
溢出 0 1
Cs+1 Cs (溢出)
错:两个正数相加和为负数。
[- 85] 补: 1 0 1 0 1 0 1 1
[- 47] 补: + ) 1 1 0 1 0 0 0 1
[- 132] 补: 1 0 1 1 1 1 1 0 0
溢出 1 0
Cs+1 Cs
错:两个负数相加和为正数。
[- 19] 补: 0 1 0 1 0 1 0 1
[- 79] 补: + ) 1 0 1 1 0 0 0 1
[- 98] 补: 1 1 0 0 1 1 1 1
未溢出 1 1
Cs+1 Cs
错:两个负数相加和为正数。
总之:结果正确(无溢出)时, Cs+1 = Cs
结果错误(溢出)时, Cs+1 ≠ Cs
溢出判断:溢出 = Cs+1Cs (即结果是 0 为无溢出; 1 为有溢出)
1 、 ( 6 ) 十进制数的编码
对机器:二进制数方便,
对人 :二进制数不直观,习惯于十进制数。
在编程过程中,有时需要采用十进制运算,但机器不认识十进制数。
怎么办?
可以将十进制的字符用二进制数进行编码:
0 0000 5 0101 1010 1111
1 0001 6 0110 1011
2 0010 7 0111 1100
3 0011 8 1000 1101
4 0100 9 1001 1110
这叫做二进制数对十进制编码—— BCD 码。
上述每 4 位二进制数表示一个十进制字符,这 4 位中各位的权依次是:
8 、 4 、 2 、 1——8421 BCD 码。
BCD 码的运算:
例、 1 8
+ ) 3
2 1
0 0 0 1 1 0 0 0
+ ) 0 0 0 0 0 0 1 1
0 0 0 1 1 0 1 1
B 是非 BCD 码(错)需进行十进制调整:
0 0 0 1 1 0 0 0
+ ) 0 0 0 0 0 0 1 1
0 0 0 1 1 0 1 1 (个位大于 9 ,应进 1 )
+ ) 0 1 1 0 (加 6 使进 1 )
0 0 1 0 0 0 0 1 (结果形如 21 )
BCD 码加法规则:
两个 BCD 数相加时,“某位”的和小于 10 则保持不变;
两个 BCD 数相加时,“某位”的和大于 9 ,则和数应加 6修正。
BCD 码减法规则:
两个 BCD 数相减时,“某位”的差未发生借位,则差数保持不变;
两个 BCD 数相减时,“某位”发生了借位,其差应减 6修正。
这里“某位”指 BCD 数中的“个位”、“十位”、“百位”、……
加法举例:
0 1 1 0 0 1 0 1 ( 6 5 )
+ ) 1 0 0 1 0 1 1 1 ( 97 )
1 1 1 1 1 1 0 0
+ ) 0 1 1 0 0 1 1 0 (加 66调整)
1 0 1 1 0 0 0 1 0 ( 162 )
减法举例:
0 0 1 1 0 1 0 0 ( 3 4 )
- ) 0 0 0 1 0 1 0 1 ( 15 )
0 0 0 1 1 1 1 1
- ) 0 1 1 0 (减 6调整)
0 0 0 1 1 0 0 1 ( 29 )
( 7 )字符信息的表示
计算机能识别 0 、 1 、 0 、 1 、……;这些 0 、 1 、 0 、 1 、……有的
代表数值,有的仅代表要处理的信息(如字母、标点符号、
数字符号等文字符号),所以,计算机不仅要认识各种数字,
还要能识别各种文字符号。人们事先已对各种文字符号进行
二进制数编码。
如,美国信息交换标准码—— ASCII 码,用一个字节表示一个
字符。低 7 位是字符的 ASCII 码值;最高位是通信时的
校验位。
行 列 000 001 010 011 100 101 110 111
0000 NUL DLE SP 0 @ P 、 p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 ” 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB ’ 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS , < L \ l ¦ 1101 CR GS - = M ] m } 1110 SO RS · > N ↑ n ~ 1111 SI US / ? O _ o DEL
综上所述 ,
计算机中的数可以有各种不同的表示方法 ,
计算机中以一个字节为一个单元保存数据 ,
一个字节为 8位二进制数 ,可以有 256种组合 ,
也就是可以表示 256个数据 ,
我们称它为机器数 , 每一个机器数实际表示的是什么 ,
要看采用的是那种表示方法。
top related