51单片机详解(汇编版,山东大学单片机课程考试复习)

56次阅读

[toc]

单片机

特点

  • 集成度高、体积小
  • 可靠性高
  • 低功耗
  • 控制能力强
  • 可扩展性好
  • 性价比高

单片机的发展历史

  • 第一代电子管计算机
  • 第二代晶体管计算机
  • 第三代集成电路计算机
  • 第四代大规模集成电路计算机
  • 第五代人工智能计算机

计算机发展趋势

  • 巨型化
  • 微型化
  • 系列化、标准化
  • 网络化
  • 多机系统

8位单片机系列在性能、价格两方面都做到了较好的兼顾

单片机的发展趋势

  1. 多功能
  2. 高性能
  3. 低电压、低功耗
  4. 在线调试
  5. 低价格

三高优势

集成度高、可靠性高、性价比高

主要厂商

  • Intel
  • Atmel
  • Philips
  • Ti

MCS-51单片机硬件结构

MCS-51子系列的指令系统与芯片引脚完全兼容,差别仅在于片内有无ROM或者EPROM,52子系列与51系列相比,片内数据存储器增至256字节;片内程序存储器增至8KB,3个16位定时/计数器,6个中断源51子系列128BRAM,4kEPROM2个16位定时/计数器

CPU内部结构

CPU是单片机的核心,由运算器和控制器等部件组成

运算器

运算器以8位算数/逻辑运算部件ALU为核心

  1. 算数逻辑单元ALU(8位)

    • 累加器A在数据传输和处理过程中起着十分重要的作用
  2. 寄存器阵列

    • 工作寄存器R0~R7(8位)

      • 暂存运算数据和中间结果
      • 4个工作寄存器区,工作寄存器0区~3区。每个区均含8个寄存器R0~R7
      • 用PSW中的两位PSW.3和PSW.4来切换工作寄存器区,选用一个工作寄存器区进行读写操作
    • 累加器ACC(8位)

      • 需要ALU处理的数据和计算结果多数需要经过A累加器
    • 寄存器B(8位)

      • 与A累加器配合执行乘除运算,也可以用作通用寄存器
    • 程序状态字PSW(8位)

      • 存放ALU运算过程的标志状态

      51单片机详解(汇编版,山东大学单片机课程考试复习)

      • 进位标志C PSW.7
      • 表示运算是否有进位(借位),有“1”,无“0”,很多算数逻辑运算指令都会影响
      • 辅助进位标志位AC PSW.6
      • 做加减运算时,若低半字节有进位(借位),则AC=1,主要用于BCD运算调整时
      • 软件标志F0 PSW.5
      • 由用户定义,可置位、清0,测试
      • 工作寄存器组存储区域选择位RS1,RS0 PSW.4.PSW.3
      • 上电复位后默认为00
      • 溢出标志位 OV PSW.2
      • 运算结果超过机器所能表示的范围时称为溢出,有符号数运算时,数值超过了+128~-127,补码运算产生溢出OV=1,否则为0
      • 奇偶标志位P PSW.0
      • P反映执行指令后累加器A中1的个数的奇偶,若A中1的个数为奇数,则P=1,否则为0
  3. 布尔处理机

    有相应的指令系统,可以提供17条位操作指令,硬件上有自己的“累加器”,即进位位C,也有自己的位寻址空间

    • 程序控制器

      包括:程序计数器PC(16位),指令寄存器IR,指令译码器ID,数据指针DPTR,堆栈指针SP以及程序地址寄存器,16位地址缓冲器

      • PC
      • 复位时PC=0000H
      • PC可以自动加一
      • 数据指针 DPTR(16位)
      • 存放片外存储器地址,作为片外存储器的指针,可以分为两个8位寄存器DPH,DPL使用
      • 堆栈指针 SP 8位
      • 堆栈是按“先进后出”原则存取数据的存储区
      • MCS-51堆栈设在片内RAM区,数据入栈/出栈时SP自动加1/减1,其内容始终为栈顶地址
      • 复位时SP=07H
存储器
  • 程序存储器ROM

    采用片内、片外统一编址的方式,共有64KB,地址范围为0000H~FFFFH

    • 片内程序存储器
    • 片外程序存储器
  • 数据存储器ROM

    • 片内程序存储器
    • 256B 地址范围00H~FFH
    • 片外程序存储器
    • 64KB 地址范围0000H~FFFFH
    • 片内片外数据存储器空间的访问通过不同的数据访问指令来区分开
  1. 程序存储空间
    1. 采用片内片外统一编址的方式,共有64KB

因此在物理上3个存储器地址空间,64KB程序存储器,256B片内和64KB片外数据存储器

​ 程序存储器空间的片内、片外选择通过单片机的引脚EA来实现

  • EA低,程序存储空间的前4KB由片外实现,EA接高,程序存储器空间的前4KB由片内实现
片内数据存储器空间配置

共256B,低128B(00H\~7FH)是真正的RAM区,高128B(80H~FFH)是特殊功能寄存器区

MCS-52 SFR使用直接寻址,而数据存储单元使用间接寻址

  • 片内RAM
    • 工作寄存器区
    • 四组R0~R7,单片机工作寄存器的特性提供了快速保护现场功能
    • 位寻址区
    • 内部RAM的20H~2FH这16个字节,CPU对其不仅有字节寻址能力,还有位寻址能力
    • 16字节*8=128位赋以00H~7FH,能够直接寻址这些位,执行置位操作
    • 数据缓冲区(一般使用30H~7FH)
    • 指在片内RAM专门开辟出来一个区域,数据的存取以“先进先出”的结构方式粗合理的,这种方式对于处理中断,调用子程序都非常方便
    • SP是一个双向计数器
    • 栈顶由堆栈指针SP自动管理
    • 堆栈区的设置应该和整个RAM分配统一起来考虑,工作寄存器区和位寻址区分配好之后再指定堆栈区
    • MCS-51的堆栈是向上生成的
    • 上电复位后,SP=07H,应该重新赋值
    • 特殊功能寄存器SFR
    • MCS-51除PC和R0~R7外,其余22个寄存器都属于SFR
    • 5个16位,其余8位,共占22+5=27字节,8051中为21字节
    • 占用字节地址:80H~FFH
    • 位寻址寄存器其字节地址可以被8整除
    • SFR分为
      • 与引脚有关的SFR
      • 内部功能控制用SFR
    • 单片机访问外部数据存储器所需要的16位地址通过P0、P2口提供,地址范围为0000H-FFFFH,共64KB,程序中用地址指针寄存器DPTR(一个16位寄存器)间接给出。所需要的控制信号由/RD、/WR、ALE、/PSEN等引脚给出。
    • MOVX @DPTR, A
    • 访问外部数据存储器也可用P2口给出高八位地址,由P0口给出低八位地址,低八位地址在程序中由R0、R1间址给出。如:MOV P2,#20HMOVX @R0, A在编址时,片外数据存储器的地址可与片内数据存储器的地址重叠 ,事实上,数据存储器与程序存储器的地址也是重叠的。

访问片内数据存储器用MOV指令,访问片外数据存储器用MOVX指令,而访问程序存储器则用MOVC指令,应用系统存储数据一般先充分使用内部RAM,只有再数据量比较大时才使用外部数据存储器

IO口

  • 四个8位并行双向IO口
  • P0口驱动能力高于其他IO口
  • 所有口做输入口使用时要先写1,准双向口

引脚

  • 电源引脚
    • VCC:+5V工作电源
    • VSS:接地端
  • 时钟:
    • XTAL1,XTAL2
    • 时钟频率:范围要求再1.2MHz~12MHz之间
  • 控制线
    • ALE/PROG:
    • 地址锁存允许信号端
    • 输出脉冲频率时震荡频率的六分之一
    • PSEN
    • 外部程序存储器读选通信号
    • 六分之一
    • EA/VPP:
    • 程序存储器选择信号端和编程电源输入端
    • RST/Vpd
    • 复位信号端和后备电源输入端
    • 输入24个震荡周期以上的高电平脉冲,单片机复位

复位之后所有IO口P0~P3全1

时序

指令是宏观组成程序的最小单位

  • 振荡周期
    • 单片机内部所有时序电路工作的时间基准
    • 外接晶振时是晶振周期
    • 频率:0~12MHz
  • 状态周期
    • 振荡周期的2倍
    • 每个状态周期分为P1和P2两个状态
    • P1:完成算数逻辑运算
    • P2:完成寄存器传输
  • 机器周期
    • 一个机器周期包括12个振荡周期,分为6个S状态S1~S6
  • 指令周期
    • 一条指令的执行周期
    • 每条指令的指令周期由一个或几个机器周期组成
    • 单周期,双周期,四周期
    • 没有三周期指令
    • 只有乘法和除法指令占用了4个机器周期

MCS-51汇编指令系统

汇编语言指令格式:

[标号:]操作码 [操作数1,] [操作数2,] [ 操作数3] [;注释]例:LOOP: MOV A, #40H;取参数LP: MOV A, R0;将R0的内容送A[标号] 操作码 第一操作数 第二操作数 [注释](目的操作数)(源操作数)

  • 标号:指令的符号地址
  • 操作码:指明指令功能
    • MCS-51汇编语言只需42种功能助记符
    • 助记符和操作数组合可得111条指令
  • 操作数:指令操作对象
    • 位(b):位寻址区中的一位二进制数据
    • 字节(B):8位二级制数据
    • 字(W):16位双字节数据

汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指 令代码。

把指令从汇编语言译成机器语言的程序称为汇编 程序,把指令从机器语言译成汇编语言的程序称 为反汇编程序

寻址方式

  • 立即寻址

    • 操作数就在指令中,跟在操作码的后面,该操作 数被称为立即数。在指令中,立即数前面加“#”符 号作为标志。指令中给出实际操作数据(立即数), 一般用于为寄存器或存储器赋常数初值
    • MOV A,#40H
    • 将40H送入累加器
    • MOV DPTR.#2100H
    • 将2100H送入DPTR
  • 直接寻址

    • 指令中直接给出的是操作数所在存储器单元的地址, 操作数在该存储器单元中。MOV A,40H ;A(40H)
    • 在指令中直接给出操作数所在的存储单元的地址。 可用于访问程序、数据存储器。直接地址也可用标 号表示。
    • 是访问特殊功能寄存器的唯一方法
    • 访问片内RAM的低128个单元
    • 在进行位寻址时也采用直接寻址的方式
    • 直接寻址方式还用于在转移及子程序调用指令,执行 这些指令后,用给出的直接地址代替PC的整16位或低 11位地址,然后从PC值处开始执行指令。
    • 直接寻址方式对数据操作时,地址是 固定值,而地址所指定的单元内容为 变量形式。
  • 寄存器寻址

    • 指令中的操作数为寄存器名,数据位于该寄存器中。 例: MOV A,R0;AR0
    • 寄存器可以是A、B、DPTR、CY,其具体 寄存器隐含在操作码中;也可对选定的8个工作 寄存器R0-R7进行操作,指令操作码字节的低3位 指明寄存器
  • 寄存器间接寻址

    • 指令的操作数为寄存器名,寄存器中数据为 操作数的地址。
    • 存放地址的寄存器称为间址寄存器或数据指 针。
    • 在指令中用工作寄存器(R0、R1、DPTR)给 出存储单元的地址,而操作数在该存储单元中 (片内RAM或片外RAM),指令中寄存器名前要 加@
    • 可访问片内及片外RAM,由于片内RAM与片外 RAM地址有重叠现象,故用MOV指令访问片内 RAM,用MOVX指令访问片外RAM,并且片外RAM 的访问只能采用MOVX指令来进行
    • 访问片内RAM用工作寄存器R0、R1,访 问片外RAM时,R0、R1、DPTR均可(区别)
    • 用@R0,@R1作间址访问外部RAM时,由 于R0,R1只有8位只能访问256字节,用 DPTR可访问64K字节
  • 相对寻址

    • 相对寻址也用于访问程序存储器,只适用于 相对转移指令。

    • 相对寻址是以当前程序计数器 PC的值加上指令规定的偏移量rel,从而构成实 际操作数地址的寻址方法。

    • 偏移量rel用8位带符号补码表示,范围为:-128~127。

    • 在编写程序时,常用标号代替rel值,由编 译器在编译时自动计算得出rel值。

    • 指令举例: JZ table ;

    Z标志位置1时转移到标号table所代表的指令处执行

    • 相对寻址时目的地址的求法: 目的地址=源地址+2(相对转移指令字节数) +偏移量( rel )
  • 变址寻址

    • 用于访问程序存储器,它以DPTR或PC计数 器作为基址寄存器,以累加器A作为变址寄存器, 两者之和为操作数在程序存储器中的地址。常 用于查表。操作数在程序存储器单元中。 数据地址 = 基地址 + 偏移量。

    • 有三种指令:MOVC A,@A+DPTR

    ​ MOVC A,@A+PC

    ​ JMP @A+DPTR

  • 位寻址

    • 指令给出位地址。位数据在存储器位寻址区。
    • 例: MOV C,40H ;Cy=0(位地址40H)

功能指令

  • 数据传输指令
    • 数据传输指令一般不影响程序状态字寄存器PSW,只有再往累加器A中送数时有可能影响到PSW的奇偶位P
    • 共29条
    • MOV 16条
      • 51单片机详解(汇编版,山东大学单片机课程考试复习)
      • 立即数可以为累加器A、寄存器Rn和DPTR、 直接寻址或间接寻址的RAM赋值,只能作为源 操作数,不能作为目的操作数。
      • 累加器A可以和寄存器Rn、直接寻址或间接 寻址的RAM之间相互赋值,既可以作为源操作 数,也可以作为目的操作数
      • 直接寻址的RAM可以和累加器A、寄存器Rn、直接寻址或间接寻址的RAM之间相互赋值,既可以作为源操作数,也可以作为目的操作数
      • 间接寻址的RAM可以和累加器A、直接寻址的RAM之间相互赋值,既可以作为源操作数,也可以作为目的操作数。但不能和寄存器Rn与间接寻址的RAM之间相互赋值。
      • 寄存器Rn可以和累加器A、直接寻址的RAM之间相互赋值,既可以作为源操作数,也可以作为目的操作数。但不能和寄存器Rn与间接寻址的RAM之间相互赋值。
        51单片机详解(汇编版,山东大学单片机课程考试复习)
      • 1.一条指令中不能同时出现两个工作寄存器: 非法指令: MOV R1,R2 MOV R2,@R0
      • 2.间址寄存器只能使用 R0、R1。 非法指令:MOV A,@R2
      • 3.SFR区只能直接寻址,不能用寄存器间接寻址。 非法指令: MOV R0,#80H MOV A,@R0
      • 4.只有指令表中的指令才有对应指令代码,计算机才 能执行。编程时,不能随意创造发明指令。
    • 非MOV 13条
      • 外部RAM读写指令
      • MOVX 片外数据存储器数据传送
      • MCS-51单片机对片外扩展的数据存储器RAM或I/O接口进行数据传送时使用的指令
      • 采用寄存器间接寻址,通过累加器A来完成。
      • ROM查表指令 2周期
      • MOVC 程序存储器数据传送
      • 查表指令就是把存放在程序存储器(ROM)中的表格数据读出,传送到累加器A 的指令。查表指令采用变址寻址方式,共有2条指令
      • DPTR内容为基址的查表指令
        • 首先执行16位无符号数加法,将获得的基址与变址之和作为16位的程序存储器地址,然后将该地址单元的内容传送到累加器A。指令执行后DPTR的内容不变。特点:可访问整个64KB的程序存储器空间。
      • PC内容为基址的查表指令
      • 该指令后一条指令的PC的值作为基址与变址之和作为16位的程序存储器地址。然后将该地址单元的内容传送到累加器A。指令执行后PC的内容不受影响。优点:不需改变PC的状态,根据A的内容取得表格常数。缺点:1、表格只能存放在查表指令以下的256个单元内。2、当表格首地址与本指令间有其他指令时,须用偏移量调整,调整量为下一条指令的起始地址到表格首址之间的字节数
      • 堆栈操作指令 2周期
      • PUSH POP 片内数据存储器数据传送
      • 堆栈操作有进栈和出栈两种操作,即压入和弹出数据。常用于现场保护和恢复。这类指令共有2条,
      • 交换指令 1周期
      • XCH XCHD SWAP 片内数据存储器数据传送
      • 数据交换类指令完成的传送是双向的,涉及传送的双方互为源地址和目的地址,指令执行后,双方数据互换。数据交换指令共5条,完成累加器A和内部RAM单元之间的字节或半字节交换。
        51单片机详解(汇编版,山东大学单片机课程考试复习)
  • 算术运算指令
    • 多数算术运算指令 会影响标志位的状态
    • 即CPU执行算术运 算指令后,根据数据操作情况自动设置 PSW中的CY、AC、OV、P 标志位。进位 (借位)标志CY为无符号整数的多字节加 法、减法、移位等操作提供了方便;溢出 标志OV可方便的控制补码运算;辅助进位 标志AC则可用于BCD码运算。
    • 加1指令(INC)和减1指令(DEC)中只有对累 加器的操作(INC A和DEC A)对奇偶位P有影响,对 其它标志没有影响,而其它的加1指令和减1指令对标 志位也没有影响。 注意: 没有指令 DEC DPTR 可用指令 DEC DPL代替51单片机详解(汇编版,山东大学单片机课程考试复习)51单片机详解(汇编版,山东大学单片机课程考试复习)
    • DA指令的功能是对累加器A中刚进行的两个BCD码加法的结果进行十进制调整(加6修正)。 该指只能紧跟在加法指令(ADD/ADDC)后进行并且两个加数必须已经是BCD码,而且也只能对累加器A中结果进行调整。当累加器A中的低4位数出现了非BCD码(1010~1111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。当累加器A中的高4位数出现了非BCD码(1010~1111)或高4位产生进位(CY=1),则应在高4位加6调整,以产生高4位正确的BCD结果。注意,DA指令不能对减法进行十进制调整。 如果要进行十进制减法,必须采用补码相加的方法
    • 十进制补码如何求? 同样,也是可以看成是用单字节十进制的最 大数(99)减去该数然后加1得到。51单片机详解(汇编版,山东大学单片机课程考试复习)
  • 逻辑运算指令
    • 逻辑运算类指令共有24条,包括与、或、异或、 清零、求反及移位指令。当目的操作数为累加 器A时会影响奇偶标志位P,带进位的移位指令 会影响C,除此之外,逻辑运算类指令不影响程 序状态PSW。
    • 逻辑“与”指令常常用于屏蔽字节中的某些位 ,若清除某位,则用“0”与该位进行逻辑“与”,若保留某位,则用“1”与该位进行逻辑“与”。
    • 逻辑“或”指令常常用于使字节中的某些位置“1”。若置“1”某位,则用“1”与该位进行逻辑“或”,若保留某位,则用“0”与该位进行逻辑“或”。
    • 逻辑“异或”指令常用于使字节中的某些位取反。若用“1”与某位进行逻辑“异或”则该位取反,若保留某位,则用“0”与该位进行逻辑“异或”。还可以利用异或指令对某个单元进行自身异或,以实现清零操作。
    • “RL A” 使累加器A的各位循环左移1位相当于原内容乘2为左移,“RR A”使累加器A的各位循环右移1位相当于原内容除2。预先清零CY,采用带进位位的左移和右移,能够保留乘除产生的进位和余数。
  • 控制转移类指令
    • LJMP提供的是16位地址,因此程序可以转向64KB的程序存储器地址空间的任何单元。
    • AJMP指令的转移范围为AJMP下面一条指令的存储地址相同的2KB区间内,可以向前也可以向后。
    • 我们往往并不是直接把要转移(或调用)到的目标指令的地址给出,而是通过标号给出,该标号对应的地址由编译器自动计算出。
    • 指令JMP @A+DPTR的转移地址由数据指针DPTR的16位数和累加器A的8位数进行无符号数相加形成,并直接送入PC,指令执行过程对DPTR、A和标志位均无影响。该条指令具有散转功能其转移地址不是在汇编或编程时确定的,而是在程序运行过程中动态决定的。
    • 无条件转移
    • 条件转移
    • 子程序调用和返回指令 RET
    • 不要忘记给栈指针设初始值调用时有时用到压栈出栈指令,两者要配对使用堆栈区设置要合理子程序起始指令要使用标号,用作子程序名。执行返回指令RET之前,保证栈顶内容为主程序返回地址,以便正确返回主程序
    • 中断返回指令 RETI;32H
    • CPU响应中断后执行的中断服务程序也存在返回主程 序的问题,在中断服务程序中用RETI返回主程序。 RETI也具有恢复断点的功能,与RET类似,除此之外, 它还会清除“优先级激活”触发器,以重新开放同 \级或低级的中断申请。
    • 注意:在调用子程序和执行中断服务程序时都需要用到堆栈,单片机上电复位后,SP=07H,堆栈区域 与工作寄存器区重叠,应注意修改堆栈指针。51单片机详解(汇编版,山东大学单片机课程考试复习)51单片机详解(汇编版,山东大学单片机课程考试复习)51单片机详解(汇编版,山东大学单片机课程考试复习)51单片机详解(汇编版,山东大学单片机课程考试复习)51单片机详解(汇编版,山东大学单片机课程考试复习)
  • 位操作指令
    • 位操作指令是以位地址与进位位C为操作 数。单片机中可进行寻址的有片内 RAM20H~2FH中连续的128位及SFR中的可 寻址位。51单片机详解(汇编版,山东大学单片机课程考试复习)

中断

  • 中断概念:
    • 中断系统
    • 中断源
    • 中断请求
    • 中断响应过程
    • 中断服务
    • 中断返回
  • 计算机按照中断源级别高低逐次响应的过程称为优先级排队
  • 返回主程序之前,中断请求应该撤除
  • MCS-51中断系统只能对一部分中断申请,在响应后自动撤除
  • 中断处理过程
    • 关中断
    • 保护断点
    • 寻找中断源
    • 保护现场
    • 中断处理
    • 恢复现场
    • 开中断
    • 中断返回 RETI指令
  • MCS-51提供5个中断请求源,2个中断优先级
  • 每个中断源可以由软件编程为允许中断和禁止中断

中断系统内部结构

  • 4个特殊功能寄存器
    • TCON
    • SCON
    • IE
    • IP
  • 5个中断源,可以提供两个中断优先级,即可以实现二级中断嵌套
中断源
  • 外部中断类
    • INT0
    • IT0决定触发方式,可以由软件置1或0
    • IE0=1 CPU申请中断,硬件自动清0
    • INT1
    • IT1决定触发方式
    • IE1=1 CPU申请中断
  • 定时中断类
    • TF0
    • 定时器T0溢出中断请求
    • 产生溢出时TF0=1,硬件自动清0,也可以用查询方式软件清0
    • TF1
    • 定时器T1溢出中断请求
    • 产生溢出时TF1=1
  • 串行口中断类
    • RI或TI
  • 以上寄存器TCON
中断允许控制 IE

EA,ES,ET1,EX0,ET0,EX0

  • EA:CPU中断总允许位
  • ES:串行口中断允许位
  • ET:定时器中断允许位
  • EX:外部中断允许位
中断优先级 IP
  • PS ——串行口中断优先级控制位。
  • PT1——T1中断优先级控制位。
  • PX1——外部中断1中断优先级控制位。
  • PT0——T0中断优先级控制位。
  • PX0——外部中断0中断优先级控制位

​ 以上对应位为1,高优先级;为0,低优先级。

自然优先级:从下往上 PX0 PT0 PX1 PT1 PS

中断响应
CPU的中断响应条件
  • (1)有中断源发出中断申请;
  • (2)中断总允许位EA=1,即CPU允许 所有中断源申请中断;
  • (3)申请中断的中断源的中断允许位为1, 即此中断源可以向CPU申请中断。

有下列任何一种情况存在,中断响应都会 受到阻断:

  • (1) CPU正在执行一个同级或高一级的中断服务程序;
  • (2)当前的机器周期不是正在执行的指令的最后一个周 期,即正在执行的指令完成前,任何中断请求都得不到 响应;
  • (3)正在执行的指令是返回(RETI)指令或者对专用寄存 器IE、IP进行读/写的指令,此时,在执行RETI或者 读写IE或IP之后,不会马上响应中断请求。
  • 由于存在中断阻断的情况而未被及时响应,待上述封 锁中断的条件被撤消之后,由于中断标志还存在,仍会响应
中断响应过程

单片机响应中断时,先置位相应的优先级 状态触发器(该触发器指示CPU开始处理 的中断的优先级别,它为屏蔽所有同级中 断 ),然后执行一条硬件子程序调用,使 程序转移到相应的入口:清零中断请求标志 (RI、TI除外),由硬件将PC当前值压栈 (不保护PSW),将中断服务程序入口地 址送PC

MCS-51中断入口地址和中断源是一一对 应的,从哪个中断源进入的中断请求,它 的中断服务程序入口地址一定是某个固定 值

中断响应时间

不同的情况对中断响应的时间不同:

  • (1) 最短的响应时间,需要3个机器周期。
  • (2)如果遇到中断受阻的情况,响应时间会更 长一些。
  • (3)如果有两个以上中断源同时申请中断,则 响应时间将更长。
  • —般情况下,可不考虑响应时间,但在精确定时控制的场合需要考虑此问题。
外部触发中断
  • 边沿触发

    • 这种方式外中断请求触发器能锁存外部中 断输入线上的负跳变,即使CPU暂时不响 应,中断申请标志也不会丢失。这种方式 在两个机器周期里两次采样到由高到低变 化则置位中断申请触发器IEx,直到CPU 响应才清0。这样不会丢失中断,但输入 的负脉冲必须保持12个时钟周期,以保 证能被采样到
  • 电平触发

    • 此时外中断申请触发器的状态随CPU在每个 机器周期采样到的外部中断输入线的电平变 化而变化,这样可提高CPU对外部中断的响 应速度。这种触发方式,在中断服务程序返 回前,外部中断请求必须无效(高电平)。 否则CPU返回后会再次响应

请求中断的低电平应保持足够时间, 低电平时间也不能太长,返回前必须撤销

这样产生外部中断请求到开始执行中断服 务程序的第一条指令之间最少需3个完整 的机器周期。

中断程序入口

外部中断0 0003H定时器T0中断 000BH外部中断1 0013H定时器T1中断 001BH串行口中断 0023H

51单片机详解(汇编版,山东大学单片机课程考试复习)

定时器

有两个16位的定时器/计数器,即定时器0(T0)和定时器1(T1)。它们实际上都是16位加1计数器。

T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。

K1(TMOD的GATE和C/T位)决定工作状态: 接内部振荡器为定时,接外部脉冲源为计数。

K2(TCON的TRX(X=0或1))决定计数器的 开启与停止。

  • 定时器
    • T = 计数值*机器周期
  • 计数器
    • 计数操作中,每个机器周期的S5P2期间采样外部 输入信号,当一个机器周期采样值为高电平,另一 个机器周期采样值为低电平时,计数器加一。

两个16位可编程定时/计数器(T0和T1)可以工作 于以下四种工作模式:

  • ① 13位定时/计数器
  • ② 16位定时/计数器
  • ③ 8位定时/计数器(自动装入常数)
  • ④ 8位定时/计数器(两个独立8位,仅T0有)

MCS-51的定时/计数器主要由几个专用寄存器组成:

  • TL0:定时/计数器0低八位计数值
  • TH0:定时/计数器0高八位计数值
  • TL1:定时/计数器1低八位计数值
  • TH1:定时/计数器1高八位计数值
  • TMOD:控制寄存器,控制定时/计数器方式 的工作方式 89H
  • TCON:控制寄存器,控制定时/计数器的起停 指示溢出中断标志

复位时,TMOD所有位均为0

TMOD 89H
  • 功能选择位C/T
  • 方式选择位M1,M0
  • 门控方式选择位GATE
TCON 88H

可以按位寻址

  • 启动控制位TR0,TR1
  • 溢出中断标志位TF0,TF1
  • 可预置初值的16位加1计数器TH0、 TL0、 TH1、TL1
工作方式
方式0

13位定时/计数器,THx 8位和TLx低5位组 成13位加1计数器,此种方式与MCS-48系列兼容, 如果不是为了兼容的目的,一般不用方式0. 方式0的全部功能,方式1都可以代替。

T0对 机器周期计数,其定时时间为: (2^13- T0初值)×时钟周期×1251单片机详解(汇编版,山东大学单片机课程考试复习)

方式1

T0对 机器周期计数,其定时时间为: (2^13- T0初值)×时钟周期×12

X =N-t/T

方式2

当M1M0两位为10时,为工作方式2

TL 0作为8位计数器,TH0用作保存计 数初值。

特别适合用作较精确的脉冲信号发 生器,脉冲信号的周期计算如下: (2^8- TH0初值)×时钟周期×12

用于需要重复定时和计数的场合。

最大计数值:256 (28)

最大定时时间(晶振12MHz时 T=1us): 256us

自动恢复初值8位定时/计数器。TLx为8位加1计数器, THx为8位初值暂存器

方式3

在方式3下,定时器T1将停止计数,只是保持其计数 值,与置TR1为0等效。 •定时器T0在方式3下分成两个独立的计数器TL0和TH0。 其中,TL0可用作定时或计数器,并占用定时器T0的所 有控制位:GATE,C/T,TR0,INT0和TF0;而TH0固定作为 定时器用,并借用定时器T1的TR1和TF1,TH0控制着定 时器的T1中断。

T1不能使用方式3工作

系统总线技术

三总线

结构
  • 地址总线

    • P2口提供高8位地址
    • P0口分时提供低8位地址 ALE锁存
  • 数据总线

    • 由P0口提供,P0,P2口用作数据、地址总线后,不能再作为通用IO使用
  • 控制总线

    • ALE
    • PSEN
    • EA

244输出驱动能力扩展

51单片机详解(汇编版,山东大学单片机课程考试复习)

51单片机详解(汇编版,山东大学单片机课程考试复习)

安装上拉电阻也可以提高总线上高电平信号的带负载能力

在系统较小的情况下,外围器件尽量采用MOS器件,这样可以减少负载,省去驱动器;对于较大的系统,当需要MOS和TTL器件混用时,最好把双向总线分为两类,所有的MOS器件接在一类总线上,所有TTL器件接在另一类总线上,以免出现CMOS器件直接驱动多个TTL负载(CMOS器件的驱动能力一般相对较弱)的情况,然后再将两类总线连接到一个公共总线上即可,

外部地址空间

对于外部扩展的器件可以根据它们本身的性质不同分别编入这些存储空间内,占据不同的地址段,这种地址分配的过程就是单片机系统外部扩展器件的编址

编址实现方式

  • 线选法
    • 直接以系统的地址线作为存储器芯片的片选信号, 只需 把用到的地址线与存储器芯片的片选端直接相连即可51单片机详解(汇编版,山东大学单片机课程考试复习)
    • 优点:简单明了,不需要译码电路,成本低。缺点:浪费了大量的存储空间,所划分的地址空间往往不连续,这种方法只适用于片外扩展不是很多的单片机系统中。
  • 译码法
    • 使用地址译码器对系统的片外地址进行译码,以其译 码输出作为存储器芯片的片选信号。
    • 优点:能有效地利用存储空间 , 适用于大容量多芯片存储器 的扩展。
    • 常用的地址译码器芯片有:74S139( 双 2-4 译码器 )、 74LS138(3-8 译码器 ) 及 74LS154(4-16 译码器 ) 等。
liubobo
版权声明:本站原创文章,由 liubobo2022-01-03发表,共计10741字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。