350 likes | 510 Views
第一章 单片机基础知识. §1-1 单片机概述 §1-2 数制及数码. 内容提要:. §1-1 单片机概述. 一、什么是单片机 单片机就是单片微型计算机( Single-Chip Microcomputer)。 微型计算机系统的硬件部分通常由五部分组成:. 输入设备. 运算器. 输出设备. 控制器. 存储器. 这种计算机系统通常由多块印刷电路板制成:. 显卡. 声卡. 网卡. 存储器接口. 主板. 输入输出接口. 内存条. CPU. 多板机. 单板机. 印
E N D
第一章 单片机基础知识 §1-1 单片机概述 §1-2 数制及数码 内容提要:
§1-1 单片机概述 一、什么是单片机 单片机就是单片微型计算机(Single-Chip Microcomputer)。 微型计算机系统的硬件部分通常由五部分组成: 输入设备 运算器 输出设备 控制器 存储器
这种计算机系统通常由多块印刷电路板制成: 显卡 声卡 网卡 存储器接口 主板 输入输出接口 内存条 CPU 多板机
单板机 印 刷 电 路 板 存储器接口 输入输出接口 内存条 输入输出接口 芯片 存储器芯片 CPU芯片 CPU 定时计数器 芯片 A/D、D/A 芯片
单片机 单 硅 晶 片 存储器 CPU I / O口 时钟电路 控制电路 定时器
单片机是应工业测控的需要而诞生的,它的结构与指令功能都是按照工业控制要求设计的,故又称单片微控制器(Single Chip Microcontroller)。 单片机特点: (1)体积小,重量轻; (2)可靠性高,运行速度快,抗干扰能力强; (3)控制功能强,使用灵活,性价比高; (4)易扩展,易于开发; (5)受集成度限制,片内存储器容量较小,一般 内ROM在8KB以下,内RAM在256B以内。
以单片机为核心的应用系统广泛应用于: 家用电器; 工业过程控制; 仪器仪表; 智能武器; 航空、汽车等领域。
存储器 接口部件 定时计数器 CPU AB DB CB 键盘 显示器 数码管 打印机 二、单片机系统的组成
运算器 CPU 寄存器组 单片机芯片 控制器 内存 中断控制逻辑 硬件部分 并行I / O口 通用接口 串行UART 8253 定时/计数器 8251 外围器件 8255A、8155 指令系统 2764、6264 软件部分 ADC0809、DAC0832 应用程序 单片机系统
§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.)十进制数转换为二进制数 方法: 整数部分除二取余,小数部分乘二取整
例1、将十进制数45转换成二进制数。 2 45 余数 2 22 1 11 0 2 2 5 1 1 2 2 2 1 0 1 0 即 45 = (101101)2
例2:十进制小数部分的转换: 乘二取整 0.6875 × 2 最高位 取 1 1.3750 0.375 × 2 取 0 0.750 × 2 取 1 1. 50 0.5 × 2 最低位 取 1 1. 0 从上至下写成从左至右 0.6875D = 0. 1011 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
(3)补码 补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。 12 3 运用补码可使减法变成加法。 规定:正数的补码等于原码。 负数的补码求法: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的补码。 原码、反码、补码对照表:见下表
八位二进制数所能表示的数据范围 机器数 无符号数 原码 反码 补码 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 20010 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码值;最高位是通信时的 校验位。
综上所述, 计算机中的数可以有各种不同的表示方法, 计算机中以一个字节为一个单元保存数据, 一个字节为8位二进制数,可以有256种组合, 也就是可以表示256个数据, 我们称它为机器数,每一个机器数实际表示的是什么, 要看采用的是那种表示方法。