当前位置: 代码迷 >> 单片机 >> MCS-51单片机原理与接口技术-阅览笔记(原创)
  详细解决方案

MCS-51单片机原理与接口技术-阅览笔记(原创)

热度:33   发布时间:2016-04-28 15:53:45.0
MCS-51单片机原理与接口技术--阅读笔记(原创)

???????? MCS-51单片机原理与接口技术--阅读笔记(原创)

?

由? 王宇 原创并发布


第1章 单片机概述

??? MSC-51美国Intel公司

第2章 基本机构

??? 制造工艺为HMOS

??? MSC-51外部引脚,40引脚

??? ??? 2.1外部引脚及功能

??? ??? ??? 时钟引脚XTAL1(19脚)、XTAL2(18脚)

??? ??? ??? Vcc(+540脚)、Vss(-520脚)电源引脚

??? ??? ??? RST/Vpd(RESET9脚)复位信号输入端,备用电源保持内部RAM数据

??? ??? ??? ALE/PROG(地址锁存允许30脚)

??? ??? ??? PSEN(程序存储器允许输出控制端29脚)

??? ??? ??? EA/Vpp(内外程序存储器选择控制端31脚)

??? ??? ??? P0 P1 P2 P3 输入输出引脚

??? ??? ??? ??? P0三态双向I/O口,通用I/O,访问外部存储器时,分时复用口

??? ??? ??? ??? P18位准双向I/O

??? ??? ??? ??? P2地址总线高8位复用

??? ??? ??? ??? P3双功能口

??? ??? ??? ??? ??? 通用I/O

??? ??? ??? ??? ??? 控制口,参考功能表

??? ??? ??? ??? ARM9A-J9组130个

??? 2.2内部结构

??? ??? 处理器(CPU

??? ??? ??? 运算器ALU

??? ??? ??? 定时控制器


??? ??? ??? ??? 程序计算器(PC)

??? ??? ??? ??? 指令寄存器IR

??? ??? ??? ??? 指令译码器

??? ??? ??? ??? 定时控制逻辑

??? ??? ??? ??? ??? OSC配合下产生指令的时序脉冲

??? ??? ??? ??? 振荡器

??? ??? ??? 专用寄存器

??? ??? ??? ??? 程序计数器(PC)

??? ??? ??? ??? ??? 专门用来存放下一条需要执行的指令在程序存储器中的地址

???????????? 工作方式

??? ??? ??? ??? ??? ??? 程序计数器自动加1

??? ??? ??? ??? ??? ??? 执行有条件或无条件转移指令时,放入新的数值使程序流向发生改变

??? ??? ??? ??? ??? ??? 执行子程序或响应中断

??? ??? ??? ??? ??? ??? ??? 下一条指令地址自动送入堆栈

??? ??? ??? ??? ??? ??? ??? 将程序入口地址或中断向量地址送入PC,程序流向发生改变

??? ??? ??? ??? ??? ??? ??? 子程序结束后,将栈顶的断点值弹到PC中。程序又返回到原来的地址

??? ??? ??? ??? ??? 16个触发器构成,编码范围:0000H~FFFFH,即程序存储器寻址范围64k

??? ??? ??? ??? 累加器(A,ACC)

??? ??? ??? ??? ??? 专门存放操作数或运算结果

??? ??? ??? ??? ??? 作用

??? ??? ??? ??? ??? ??? 是ALU单元的输入一,是数据处理器之一。同时它还是ALU运算结果的存放单元

??? ??? ??? ??? ??? ??? 相当数据的中转站

??? ??? ??? ??? 通用寄存器(B)

??? ??? ??? ??? ??? 专门为乘法和除法设置的寄存器

??? ??? ??? ??? 程序状态字寄存器(PSW)

??? ??? ??? ??? ??? CY进位标志位

??? ??? ??? ??? ??? AC辅助进位标志

??? ??? ??? ??? ??? F0用户标志位

??? ??? ??? ??? ??? RSI、SR0寄存器选择位

??? ??? ??? ??? ??? OV溢出标志位

??? ??? ??? ??? ??? P奇偶标志位

??? ??? ??? ??? 堆栈指针(SP,StackPointor)

??? ??? ??? ??? ??? 指示堆栈的位置

??? ??? ??? ??? ??? 先进后出或后进先出

??? ??? ??? ??? 数据指针(DPTRDataPointer)

??? ??? ??? ??? 端口P0-P3

??? ??? ??? ??? 串行数据缓冲器SBUF

??? ??? ??? ??? 定时器计数器

??? ??? ??? ??? 其他控制寄存器

??? ??? 存储器结构

??? ??? ??? MCS-51有4个存储器空间:

??? ??? ??? ??? 片内程序存储器

??? ??? ??? ??? 片外程序存储器

??? ??? ??? ??? 片内数据存储器

??? ??? ??? ??? 片外数据存储器


??? ??? ??? 程序存储器

??? ??? ??? ??? EA引脚接高电平时,程序将从片内程序存储器开始执行

??? ??? ??? ??? EA引脚接低电平时,程序将从片外程序存储器开始执行

??? ??? ??? ??? 8051和8751内部有4KBROM/EPROM程序存储器,1000H-FFFFH为外部扩展程序存储器空间。总共是64K0000H-FFFFH

??? ??? ??? ??? 系统从0000H单元开始取指令,执行程序

??? ??? ??? 片内数据存储器(片内RAM)

??? ??? ??? ??? RAM有片外和片内之分

??? ??? ??? ??? ??? 片外RAM可有64KB,地址范围为:0000H-FFFFH

??? ??? ??? ??? ??? 片内RAM(255b)分为3个不同的块

??? ??? ??? ??? ??? ??? 工作寄存器区

??? ??? ??? ??? ??? ??? ??? 00H-1FH32B

??? ??? ??? ??? ??? ??? ??? 分为4个通用工作寄存器区,每个区含8个寄存器,编号为R0-R7

??? ??? ??? ??? ??? ??? 位寻址区

??? ??? ??? ??? ??? ??? ??? 20H-2FH

??? ??? ??? ??? ??? ??? ??? 16个RAM单元具有双重功能。它们既可以像普通RAM单元一样按字节存取,也可以对每个RAM单元中的任何一位单独存取,这就是位寻址

??? ??? ??? ??? ??? ??? 数据缓冲区

??? ??? ??? ??? ??? ??? ??? 30H-7FH

??? ??? ??? ??? ??? ??? ??? 总共80个RAM单元

??? ??? ??? ??? ??? ??? ??? 用于存放用户数据或做堆栈操作使用

??? ??? ??? ??? ??? ??? ??? 中断系统中的堆栈一般都设在这一区域内

??? ??? ??? ??? ??? ??? ??? 51对数据缓冲区中的每个RAM单元是按字节存取的

??? ??? ??? ??? RAM主要是用来存放数据的,又称数据存储器

??? ??? ??? 特殊功能寄存器

??? ??? ??? ??? 80H-FFH

??? ??? ??? ??? 特殊功能寄存器是指有特殊用途的寄存器集合,本质上是一些具有特殊功能的片内RAM单元,它离散地分布在地址范围:80H-FFH

??? ??? ??? 位地址空间

??? ??? ??? 外部数据存储器

??? ??? I/O端口

??? ??? ??? 并行I/O端口

??? ??? ??? 串行I/O端口

??? ??? 定时器/计算器

??? ??? 中断系统

??? ??? 布尔(位)处理器


??? 2.3 工作方式

??? ??? 复位方式

??? ??? 程序执行方式


??? ??? ??? 单步执行方式

??? ??? ??? 连续执行方式

??? ??? 省电工作方式

??? ??? ??? 空闲方式

??? ??? ??? 掉电模式

??? ??? EPROM编程和校验方式

??? ??? ??? EPROM的编程方式

??? ??? ??? EPROM程序校验方式

??? ??? ??? EPROM加密方式

??? 2.4 时钟电路

??? ??? 内部方式时钟电路

??? ??? 外部方式时钟电路

??? 2.5 工作时序

??? ??? 机器周期和指令周期

??? ??? 指令的取指/执行时序(51111指令共6类)


??? ??? ??? 单字节单周期指令时序

??? ??? ??? 双字节单周期指令时序

??? ??? ??? 单字节双周期指令时序

??? ??? 访问片外ROM/RAM的指令时序

??? ??? 读写片外RAM指令时序


第3章 指令系统

??? 3.1 指令系统(111条指令)

??? ??? 基本概念

??? ??? 指令分类


??? ??? ??? 按字节分类

??? ??? ??? 按执行时间分类

??? ??? ??? 按功能分类

??? ??? 指令格式

??? ??? ??? 单字节指令:操作码和操作数同在一个字节中

??? ??? ??? 双字节指令:操作码和操作数各占一个字节

??? ??? ??? 三字节指令:操作码占一个字节,操作数占两个字节

??? ??? 符号说明(参考表)

??? ??? 指令过程


??? ??? ??? 取指令

??? ??? ??? 执行指令

??? 3.2 7种寻址方式

??? ??? 立即寻址

??? ??? ??? 前缀#同地址区别

??? ??? 寄存器寻址

??? ??? 直接寻址

??? ??? 寄存器间接寻址

??? ??? 基址寄存器加变址寄存器间接寻址

??? ??? 相对寻址

??? ??? 位寻址


??? 3.3 指令系统详解

??? ??? 数据传送指令(28条)

??? ??? ??? MOV

??? ??? ??? PUSH入栈

??? ??? ??? POP出栈


??? ??? 算数运算指令(24条)

??? ??? ??? ADD

??? ??? ??? ADDC带进位加法

??? ??? ??? SUBB带带借位减法

??? ??? ??? MUL乘法

??? ??? ??? DIV除法

??? ??? ??? INC加1指令

??? ??? ??? DEC减一指令


??? ??? 逻辑运算指令(25条)

??? ??? ??? CLR清零

??? ??? ??? CPL取反

??? ??? ??? RL逻辑左移

??? ??? ??? RLC加上进位位逻辑左移

??? ??? ??? RRC加上进位位逻辑右移

??? ??? ??? SWAP低4位交换

??? ??? ??? ANLA,RnA与Rn中的值按位与,结果存放在累加器A中

??? ??? ??? ORLA,RnA与Rn中的值按位或,结果存放在累加器A中


??? ??? ??? XRLA,RnA与Rn中的值按位异或,结果存放在累加器A中

??? ??? ??? SETB进位标志位指令

??? ??? 控制转移指令(17条)


??? ??? ??? 无条件转移

??? ??? ??? ??? AJMP2K

??? ??? ??? ??? LJMP64K

??? ??? ??? ??? SJMP256K

??? ??? ??? 间接转移

??? ??? ??? ??? JMP

??? ??? ??? 条件转移

??? ??? ??? ??? JZ按顺序执行指令

??? ??? ??? ??? ??? 判断A内容是否为零

??? ??? ??? ??? JNZ跳转后,执行下一条指令

??? ??? ??? ??? ??? 判断A内容是否不是零

??? ??? ??? 比较转移

??? ??? ??? ??? CJNE

??? ??? ??? 环转移

??? ??? ??? ??? DJNZ

??? ??? ??? 调用与返回

??? ??? ??? ??? LCALL(长调用指令)调用子程序,子程序结束使用RET

??? ??? ??? ??? ACALL

??? ??? ??? 空操作指令

??? ??? ??? ??? NOP

??? ??? 布尔变量操作类指令(17条)

第4章 汇编语言设计

??? 4.1 汇编语言概述

??? 4.2 汇编语言


??? ??? 格式

??? ??? ??? 标号:操作数操作码;注释

??? ??? 伪指令

??? ??? ??? ORG汇编起始地址伪指令

??? ??? ??? END汇编结束伪指令

??? ??? ??? EQU赋值伪指令

??? ??? ??? DL定义标号值伪指令

??? ??? ??? DB定义字节伪指令

??? ??? ??? DW定义字伪指令

??? ??? ??? DS定义存储区伪指令

??? ??? ??? BIT位定义伪指令


??? 4.3 汇编程序设计

??? ??? 顺序结构程序设计

??? ??? 分支程序设计

??? ??? 散转程序设计

??? ??? 循环程序设计

??? ??? 查表程序设计

??? ??? 子程序设计


??? 4.4 实验程序设计


??? ??? 数码转换类程序

??? ??? 查找与排序

第5章 中断系统原理与应用

??? 5.1系统概述

??? ??? 基本概念

??? ??? ??? 中断:暂停当前处理过程,转去处理所发生事件,处理后再回到原来被中止地方

??? ??? ??? 中断优先级

??? ??? ??? 中断嵌套

??? ??? 主要功能

??? ??? ??? 实现CPU与外部设备的速度配合

??? ??? ??? 实现实时控制

??? ??? ??? 实现过账及时发现和处理

??? ??? ??? 实现人机联系

??? 5.2 中断系统结构(图)

??? ??? 5个中断源

??? ??? ??? 两个外部中断

??? ??? ??? 两个定时器、计数器中断

??? ??? ??? 一个串口中断

??? ??? ARM730个中断源

??? ??? ARM960个中断源

??? 5.3 中断请求源

??? ??? TCON简介(锁存外部中断请求)

??? ??? ??? 地址:88H

??? ??? ??? IT0跳沿触发方式(1)或电平触发方式(0)

??? ??? ??? IT1外部1跳沿触发方式或电平触发方式,同IT0类似

??? ??? ??? IE0中断请求标志位

??? ??? ??? IE1外部中断请求标志位

??? ??? ??? TF0T0溢出中断请求标志位

??? ??? ??? TF1T1溢出中断请求标志位


??? ??? SCON简介(串口控制寄存器,锁存串行口接收中断和发送中断标志)

??? ??? ??? 地址:98H

??? ??? ??? T1:串行口发送中断请求标志位

??? ??? ??? RI:串行口接收中断请求标志位

??? ??? 5个中断源

??? ??? ??? INT0外部中断0请求INT0引脚输入中断请求IE0

??? ??? ??? INT1外部中断0请求INT1引脚输入中断请求IE1

??? ??? ??? 定时器、计时器T0溢出中断请求,中断标志:TF0

??? ??? ??? 定时器、计时器T1溢出中断请求,中断标志:TF1

??? ??? ??? 串行口中断请求,中断请求标志为T1或RI


??? 5.4 中断控制

??? ??? 中断允许寄存器IE

??? ??? ??? EA:中断允许总控制位0关中断,1开中断

??? ??? ??? ES:串行口中断允许位0关中断,1开中断

??? ??? ??? ET1:定时器计算器T1溢出中断允许位

??? ??? ??? EX1:外部中断1中断允许位

??? ??? ??? ET0:定时器计算器T0溢出中断允许位

??? ??? ??? EX0:外部中断0中断允许位


??? ??? 中断优先级寄存器IP,1高优先级、0低优先级

??? ??? ??? PS:串口中断优先级控制位

??? ??? ??? PT1:定时器T1中断优先级控制位

??? ??? ??? PX1:外部中断1中断优先级控制位

??? ??? ??? PT0:定时器T0中断优先级控制位

??? ??? ??? PX0:外部中断0中断优先级控制位

??? 5.5 中断响应过程

??? ??? 中断响应条件

??? ??? ??? 该中断源发出中断请求

??? ??? ??? CPU开中断,EA=1

??? ??? ??? 申请中断的中断源的中断允许=1

??? ??? ??? 无同级或更高级中断正在被服务

??? ??? 中断响应封锁条件

??? ??? ??? CPU正在处理优先级相同或更高的中断

??? ??? ??? 所查询的机器周期不是所执行指令的最后一个机器周期

??? ??? ??? 正在执行的指令是RETI或访问IE、IP寄存器的指令

??? 5.6 外部中断的响应时间

?? 5.7 外部中断的触发方式选择


??? ??? 跳沿触发方式

??? ??? 电平触发方式

??? 5.8 中断请求撤销

??? ??? 定时器计数器中断请求的撤销

??? ??? 外部中断请求的撤销

??? ??? 串行口中断请求的撤销

??? 5.9 中断服务程序设计

??? ??? 中断服务程序设计的任务

??? ??? ??? 设置中断允许控制寄存器IE,允许相应的中断请求源中断

??? ??? ??? 设置中断优先级寄存器IP,确定并分配所使用的中断源的优先级

??? ??? ??? 若是外部中断,设置请求的触发方式IT1或IT0

??? ??? ??? 编写中断服务程序

??? ??? 主程序结构

??? ??? 程序流程

??? ??? ??? 关中断

??? ??? ??? 现场保护

??? ??? ??? 开中断

??? ??? ??? 中断处理

??? ??? ??? 关中断

??? ??? ??? 现场恢复

??? ??? ??? 开中断

??? ??? ??? 中断返回


??? 5.10 多个外部中断源系统设计

??? ??? 定时器计算器作为外部中断源的使用方法

??? ??? 中断和查询结合的方法

??? ??? 用优先权编码器扩展外部中断源

??? 5.11 中断编程实例

第6章 定时器计数器

??? 6.1 概述

??? ??? T0 T1两个定时器计数器

??? ??? 定时计数计算机控制中两个重要功能

??? ??? 定时器计数器结构

??? ??? ??? 工作模式控制寄存器TMOD

??? ??? ??? 控制寄存器TCON

??? ??? 初始化

??? ??? ??? 初始化的步骤

??? ??? ??? 计算初值的计算

??? ??? 工作方式

??? 6.2 应用举例

第7章 串行口

??? 7.1 概念

??? ??? 传输方式

??? ??? ??? 单工传输

??? ??? ??? 半双工传输

??? ??? ??? 全双工传输

??? ??? ??? 多工传输

??? ??? 通讯方式

??? ??? 传送速率

??? ??? ??? bit/s每秒传送的位数

??? ??? ??? 波特率每秒传送的符号数

??? ??? ??? PC输出串口终端信号是并行

??? ??? ??? 串口终端传送PC信号是串行

??? 7.2 工作方式

??? ??? 方式0

??? ??? 方式1

??? ??? 方式2

??? 7.3 波特率的设计

??? 7.4 多机通讯

??? 7.5 编程和应用


第8章 单片机的存储器扩展

第9章 I/O接口扩展及应用

第10章 D/AA/D的接口设计

第11章 应用系统设计及开发

  相关解决方案