MCS — 51 单片机系列
按工艺划分:
◆ HMOS 工艺产品:如 8031 、 8051 、 8751 等;
◆ HCMOS 工艺产品:如 80C31 、 80C51 、 87C51 等;按 ROM 的类型划分:
◆ ROM 型产品、
◆ PROM 型产品、 8051
◆ EPROM 型产品、 87C51 、 87C52
◆ Flash 型产品: AT89C51 、 AT89C52
(二) MCS — 51 单片机的内部结构
一、 8051 微处理器 CPU
◆ 1 、运算器 :由算术逻辑单元 ALU、累加器ACC、B寄存器、两个暂存寄存器、程序状态寄存器组成 PSW ; 8 位,可以进行算术云算(加,减,乘,除,乘除运算与寄存器 B 有关)、逻辑运算及移位运算等。
◆ 2 、控制器:由指令寄存器 IR 、指令译码器 ID 、定时及控制逻辑电路、程序计数器 PC 组成,使单片机的运行控制中心。
PC 的结构与功能: 16 位的程序寄存器,控制程序的执行。
IR , ID 的功能;
二、 8051 的片内存储器
◆ ROM : 4KB ,地址 0000H--0FFFH (使用时)
◆ RAM : 128B ,地址 00H--7FH
三、 8051 的 I/O 端口电路
四、定时器 / 计数器: 2 个 16 位的定时器 / 计数器
五、中断控制系统: 5 个中断源,其中两个外部中断、两个定时 / 计数器中断、 1 个串行口中断。
六、串行口: 1 个全功能异步串行口
七、时钟电路:在时钟电路的外部添加晶振及电容就可以组成完整的震荡电路,为系统工作提供时钟。
八、总线:通过内部总线把系统的各个部分连成一个有机的整体。
(三) MCS-51 单片机的信号引脚
一.引脚简介:
输入 / 输出口线:
◆ P0 口:地址 / 数据复用口
◆ P2 口:高 8 位地址口
◆ P1 口:一般 I/O 口
◆ P3 口:一般 I/O 口、第 2 功能口(串行口)
口及口线的表示方法: P0 、 P1 、 P2 、 P3 ; P1.0 、 P1.1
ALE :地址锁存控制信号,用于外部存储器或 I/O 端口总线访问的同步控制,从而使总线上的地址 / 数据信号有序的流动。
PSEN :外部程序存储器读选通信号,当 PSEN 信号为低时表示对外部程序存储器进行访问。
RST :系统复位信号,该引脚上的高电平(两个时钟周期以上)会使系统进入复位状态。
XTAL1 、 XTAL2 :外接晶振引脚
VSS 、 VCC :地、电源
二. 信号引脚的第二功能
1). P3 口的第二引脚功能
RXD(P3.0) :串行数据接收端
TXD(P3.1) :串行数据发送端
/INT0(P3.2) :外中断 0 申请信号输入端
/INT1(P3.3) :外中断 1 申请信号输入端
T0(P3.4) :定时器 / 计数器 0 计数输入端
T1(P3.5) :定时器 / 计数器 1 计数输入端
/WR(P3.6) :外部 RAM 写选通
/RD(P3.7) :外部 RAM 读选通
/PROG(ALE) :编程脉冲输入端
Vpp(/EA) :编程电压加入端
VPD(RST) :备用电源输入端
三. 单片机的三总线结构:
地址总线: P0 : A0~A7 , P2 : A8~A15
数据总线: P0 : D0~D7
控制总线: /WR 、 /RD 、 /PSEN 、 ALE 、 /EA
(四) MCS--51 单片机的时钟与时序
一、时钟方式:
( 1 )、内部时钟方式:
( 2 )、外部时钟方式: XTAL1 — GND , XTAL2 —外部时钟信号
二、时序信号:
◆ 晶振周期: T0
◆ 状态周期: 2T0
◆ 机器周期: 12T0
◆ 指令周期:至少 12T0
三、 8051 的取指与指令的执行
(一)、单周期指令
(二)、双周期指令
(三)、多周期指令
第二节 MCS--51 单片机的 内部 存储器
要求:掌握 MCS-51 单片机的内部数据存储器的机构及用途,掌握堆栈操作的基本方法,掌握程序存储器的分配与使用。
一内部 RAM 低 128 字节单元:地址: 00H~7FH
1、 通用寄存器区:(地址: 00H~1FH )
分为 4 组:第 0 组: 00H~07H
第 1 组: 08H~0FH
第 2 组: 10H~17H
第 3 组: 18H~1FH
当前寄存器组:由 PSW 寄存器的 RS1 、 RS0 的组合决定
支持的访问方式:寄存器寻址、直接寻址、间址寻址方式
2 、位寻址区: (20H~2FH 、共 16 个字节单元, 128 个位单元 )
位地址的编排: 00H~7FH
位地址空间的访问:按字节方式访问
按位寻址方式访问
3 、 RAM 区:(地址范围: 30H~7FH ,共 80 个单元 )
该空间可以由用户自由安排使用,主要用作堆栈的开辟和用户使用变量的存储。
二 内部 RAM 高 128 字节单元
MCS-51 单片机的特殊功能寄存器被分配到内部 RAM 的高 128 字节单元,共有特殊功能寄存器 22 个,其中可以访问的寄存器 21 个,除去寄存器 ] 占用的单元以外剩余的单元不可以再被用户使用,而是被系统保留以后扩展设计时使用。
主要的 SFR 简介:
程序指针寄存器 PC(PROGRAM COUNTER)
16 位、可以访问的程序存储器空间 64K ,用户不能用指令直接修改该寄存器的值,但执行转移、调用、返回等指令可以引起 PC 值的改变。
累加器 A(Accumulator) :
ACC 是算术运算和逻辑运算的主要场所、也是运算结果的存储场所、是数据传送的中转站,还可以用于变址寻址等,该寄存器的使用频率非常的高,其使用非常重要。
B 寄存器:主要与 ACC 配合使用完成乘法、除法运算。
程序状态寄存器 PSW ( PROGRAM STATUS WORD ):
CY
AC
F0
RS1
RS0
OV
/
P
CY :进位或借位标志位
AC :辅助进位标志位
F0 :用户标志位
RS1RS0 :通用寄存器组选择位
OV :溢出标志位
P :奇偶标志位
数据指针 DPTR : 16 位的数据指针,可以分为两个 8 位的寄存器使用( DPL 、 DPH ),主要用作访问外部数据空间的地址寄存器和程序存储器的查表访问。
特殊功能寄存器的寻址问题:
SFR 按字节访问只能使用直接寻址方式,具体的使用方法举例如下:
MOV P0,#55H
MOV 80H,#55H
这两条指令的功能和指令代码完全一样,也就是说对于特殊功能寄存器的访问可以用寄存器的名称也可以用寄存器的地址,这里 80H 就是 P0 口的寄存器地址。
专用寄存器的位访问:有 11 个特殊寄存器可以按位进行访问,这些特殊功能寄存器的对应位都有相应的位地址,对这些位的访问举例如下:
CLR 80H
CLR P0.0
这两条指令的功能也是完全相同的,只是表示方法有所差异,也就是说可以通过对应位的位地址或通过位的名称来访问具体的位,而寄存器中的其他位不受影响。
三、 MCS-51 单片机的堆栈及其操作
堆栈的主要功能:保护断点和程序现场
保存用户数据
堆栈的操作规则:先进后出
堆栈的具体操作:
堆栈的创建:通常堆栈指针在初始化时要指向用户 RAM 区
堆栈的入栈操作: PUSH direct_address ; SP+1 → SP,(direct_address) → 栈顶 单元
堆栈的出栈操作: POP direct_addree ;栈顶单元的内容→ (direct_address),SP-1 → SP.
四、 MCS--51 单片机的 ROM 空间分配与使用
◆ 0000H--0002H:程序入口地址;
◆ 0003H--000AH:INT0入口地址;
◆ 000BH--0012H:TIMER0中断入口地址;
◆ 0013H--001AH:INT1入口地址:
◆ 001BH--0022H:TIMER1中断入口地址;
◆ 0023H--002AH:串行口中断入口地址;
◆ 002BH—FFFFH:由用户分配使用;
小结 :
ROM 空间 :
◆ 内部 4KB ( 0000H--0FFFH ) +外部60KB ( 1000H—FFFFH ) =64KB ( EA=1 );
◆外部 64KB(0000H—FFFFH)(EA=0);
RAM空间:
◆内部 RAM:00H—FFH(独立);
◆外部 RAM:0000H—FFFFH(与内部RAM无关);
第三节 MCS--51 单片机的并行口结构与操作
要求: 熟悉 MCS-51 单片机并行口的结构,掌握各个并行口的主要功能。
(一) P0 、 P2 口的结构:
一、 P0 口结构
(一) P0 口用作 I/O 口: MOV 指令, MUX 打向 /Q , T1 止
( 1 )、 P0 用作输出:输出锁存, OC 门输出
( 2 )、 P0 用作输入:读入的状态与当前寄存器的状态不一定相同,如要输入外部引脚的状态可先向相应的引脚写高电平,关闭 T2 。
(二)、 P0 口用作地址 / 数据总线: MOVC 、 MOVX 指令, MUX 打向 A/D 线
◆ P0 用作总线读:先输出地址低 8 位,后输出数据
◆ P0 用作总线写:先输出地址低 8 位,后输入数据
二、 P2 口的结构
(一)、 P2 用作通用 I/O 口
C=0 , MUX 与 Q 相连
输出内部上拉,输出锁存;
输入情况与 P0 类似
(二)、 P2 口用作地址总线
C=1 , MUX 打向地址
执行指令 MOVX 、 MOVC , P2 口在指令执行期间输出地址的高 8 位
(二) P1 、 P3 口的结构
一、 P1 口的结构
准双向口,内部设有上拉电阻。
输出数据:写 0 , T 管饱和导通,输出为低
写 1 , T 管截止,输出上拉为高
输入数据:读锁存器
读引脚:读入前,先向输出锁存器写高电平使输出管截止
二、 P3 口的结构
P3 口作为一般的 I/O 口使用:类 P1 口用作 I/O 口,输出时第二输出功能信号 W=1
P3 口作为第二功能口使用: Q=1 , W 为第二功能输出信号,输入的信号从‘第二功能输入'功能读入对应的模块
P3 的第二功能信号:
RXD(P3.0) :串行数据接收端
TXD(P3.1) :串行数据发送端
/INT0(P3.2) :外中断 0 申请信号输入端
/INT1(P3.3) :外中断 1 申请信号输入端
T0(P3.4) :定时器 / 计数器 0 计数输入端
T1(P3.5) :定时器 / 计数器 1 计数输入端
/WR(P3.6) :外部 RAM 写选通
小结:
1 、通常情况下, P0 口和 P2 口主要用作总线信号扩展,其中 P0 口作为地址 / 数据复用信号使用,而 P2 口用作地址信号的高 8 位输出。
2 、当 P0 口作为一般 I/O 口使用时其输出是漏极开路输出,因此必须在口线外部加上拉电阻。
3 、 P1 和 P3 口的主要功能是一般 I/O 口,其中 P3 口还具有第二功能。
2 . 3 . 3 并行端口的负载能力
灌电流负载(即低电平负载电流):
◆ PO 口 ----4mA (可驱动 8 个 LSTTL )
◆ P1 , P2 , P3 口 ----2mA (可驱动 4 个 LSTTL ) 拉电流负载:很小
第四节 MCS-51单片机时钟电路与时序
要求: 熟悉 MCS-51单片机的时钟电路及其时序定时单位,了解其指令执行的时序,掌握MCS-51单片机的复位电路,熟悉其工作方式。
一、 时钟电路
( 1 )、内部时钟方式:外加晶振及微调电容即可与内部电路构成完整的振荡电路
( 2 )、外部时钟方式: XTAL1 — GND , XTAL2 —外部时钟信号
二、 时序定时单位
◆ 晶振周期: T0
◆ 状态周期: 2T0
◆ 机器周期: 12T0
◆ 指令周期:至少 12T0
三、 8051 的取指与指令的执行
指令按字节划分 :单字节指令、双字节指令、三字节指令
指令按周期划分 :单周期指令、双周期指令、四周期指令
综合划分 :单字节单周期指令、单字节双周期指令、单字节四周器指令、双字节单周期指令、双字节双周期指令、三字节双周期指令
典型指令时序分析:
1、 单字节单周期指令
2、双字节单周期指令
3、单字节双周期指令
第五节 MCS-51 单片机工作方式
1 、复位操作与复位电路
复位信号的要求: RST 端加至少两个机器周期的高电平。
复位状态:单片机内各个特殊功能寄存器均被设置为特定的状态位程序的执行做好准备, PC=0000H , PO~P3=0FFH , SP=07H , PSW=00H 等;内部 RAM 的状态:随机值。
复位电路:
◆ 1 上电复位电路;
◆ 2 按键复位电路;
◆ 3 脉冲复位电路;
2 、掉电保护方式
A/ 数据的转存
B/ 接通备用电源
3 、 80C51 的低功耗方式
80C51 单片机的低功耗方式有待机工作方式和掉电保护方式,由特殊功能寄存器 PCON 的相关位来控制, PCON 的定义如下:
SMOD
/
/
/
GF1
GF0
PD
IDL
待机工作方式:
◆ 进入:设置 IDL=1 ,
◆ 待机状态: CPU 时钟关闭,外设时钟正常工作
◆ 待机状态的退出:复位或中断操作
掉电工作方式:
◆ 进入:设置 PD=1
◆ 掉电工作状态:系统晶振关闭, CPU 及外设中断都停止工作
◆ 掉电工作状态的退出:复位
MCS-51 单片机最小系统
◆系统的组成: 8031 、 74LS373 、 2732 等,注意理解各部分的组成关系及总线信号的传输关系。
◆ 作用与用途
一、引言
据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。
当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。属于CISC结构的单片机有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列等;属于RISC结构的有Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。不过,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。
根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。我国一开始都采用ROMless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。如单片机的应用一味强调接口,外接I/O及存储器,便失去了单片机的特色。目前单片机大都将程序存储体置于其内,给应用带来了极大的方便。值得一提的是,以往OTP型单片机的价格是QTP的3倍,而现在已降至1.5-1.2倍,选用OTP型以免订货周期、批量的麻烦是可取的。
二、PIC系列单片机有什么优势?
自从我95年接触PIC单片机以来,便一直热衷于这种单片机的开发与应用。有不少朋友问我:PIC到底有什么优势?也许你也会有这样的疑问,所以我在这里略谈几点自己的看法。
1) PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不方便。PIC系列从低到高有几十个型号,可以满足各种需要。其中,PIC12C508单片机仅有8个引脚,是世界上最小的单片机,如图1所示:
该型号有512字节ROM、25字节RAM、一个8位定时器、一根输入线、5根I/O线,市面售价在3-6元人*币。这样一款单片机在象摩托车点火器这样的应用无疑是非常适合。PIC的高档型号,如PIC16C74(尚不是最高档型号)有40个引脚,其内部资源为ROM共4K、192字节RAM、8路A/D、3个8位定时器、2个CCP模块、三个串行口、1个并行口、11个中断源、33个I/O脚。这样一个型号可以和其它品牌的高档型号媲美。
2) 精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。
3) 产品上市零等待(Zero time to market)。采用PIC的低价OTP型芯片,可使单片机在其应用程序开发完成后立刻使该产品上市。
4) PIC有优越开发环境。OTP单片机开发系统的实时性是一个重要的指标,象普通51单片机的开发系统大都采用高档型号仿真低档型号,其实时性不尽理想。PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。就我个人的经验看,还没有出现过仿真结果与实际运行结果不同的情况。
5) 其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。
6) 彻底的保密性。PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。
7) 自带看门狗定时器,可以用来提高程序运行的可靠性。
8) 睡眠和低功耗模式。虽然PIC在这方面已不能与新型的TI-MSP430相比,但在大多数应用场合还是能满足需要的。 |