单片机原理及应用

第1章 单片机概述

1.1单片机的概念及主要特点

  • 简称单片微型计算机,是指在一块半导体芯片中集成中央处理器、存储器、基本I/O接口以及定时/计时器等必要部件的完整的微型计算机

1.2单片机的分类及发展趋势

  • 1.2.1单片机发展现状

    • 1.8位单片机

      • 51及兼容型、非51型
    • 2.16位单片机

      • MSP430,特点:省电、超低功耗
    • 3.32位单片机

      • 代表产品RISC的ARM系列
  • 1.2.2单片机的发展趋势

    • 1.类型上

      • 51单片机主频:12MHz、24MHz、6MHz
    • 2.技术发展上

      • 1)CPU核仍以CISC为主,但朝RISC演化
      • 2)采用闪烁(Flash)或E²PROM存储器替代内EPROM
      • 3)低功耗、低电压、低价位,如CPU部分工作于1.5~2.5V、I/O口工作于3.3~5V

1.3常见的主流单片机

  • 1.3.1目前流行的51内核单片机

    • 1.Intel公司的MCS-51系列单片机

      • MCS-51子系列和MCS-51子系列
    • 2.Atmel公司的89系列单片机

      • 具有E²PROM可擦除技术、Flash存储器技术和优秀的生产工艺与封装技术
  • 1.3.2目前流行的非51内核的单片机

    • 1.TI公司的16位超低功耗型MSP430系列单片机
    • 2.Motorola单片机
    • 3.Freescale单片机

      • 汽车微控制器市场保持第一

1.4单片机的应用领域

  • 1.智能仪器仪表
  • 2.机电一体化
  • 3.实时控制
  • 4.消费类电子产品
  • 5.导航控制
  • 6.终端及外部设备控制

第2章 AT89系列单片机的硬件体系结构

2.1AT89系列单片机概述

  • 2.1..1AT89C51单片机
  • 2.1.2AT89系列单片机的主要性能

    • 1)与MCS-51单片机产品兼容
    • 2)4KB可程序设计Flash内存
    • 3)1000次以上擦鞋周期
    • 4)全静态操作:最高24MHz(默认12MHz)
    • 5)三级加密程序内存
    • 6)32根可程序设计I/O口线(理论同时32位传输)
    • 7)2个16位定时/计数器
    • 8)5个中断源
    • 9)全双工UART串行通道(可同时输入和输出)
    • 10)低功耗空闲和掉电模式
  • 2.1.3AT89系列单片机的主要品种

    • AT89C51

      • 1)4KB程序存储器Flash
      • 2)128B数据存储器
      • 3)12MHz工作频率
      • 4)2个定时/计数器
      • 5)1个UART通道
      • 6)无ISP
      • 7)4.0~6.0V工作电压
      • 8)DIP,PLCC,PQFP封装形式
  • 2.1.4AT89系列单片机的型号编码

    • 1.AT是前缀;89XXXXX是型号;YYYY是后缀
    • 2.89CXXXX中,9表示内部含Flash内存,C表示位CMOS产品
    • 3.后缀的第一个参数Y表示速度;第二个参数Y表示封装;第三个参数Y表示温度范围;第四个参数Y说明产品的处理情况

2.2AT89系列单片机的结构原理

  • 2.2.1AT89系列单片机的基本组成
  • 2.2.2AT89系列单片机的内部框图
  • 2.2.3AT89系列单片机的CPU

    • CPU由运算器和控制器组成

      • 1.运算器,以算术逻辑单元(ALU)为核心

        • 1)ACC,最频繁的寄存器,一般用于存放参加运算的操作数和运算结果
        • 2)B寄存器,专为乘法和除法指令而设置的,也可作为中间结果寄存器使用
        • 3)PSW,一个8位寄存器,标志寄存器

          • 1.CY:进位标志
          • 2.AC:辅助进位标志
          • 3.F0:用户标志位
          • 4.RS1、RS0:寄存器区间选择控制位
          • 5.OV:溢出标志
          • 6.P:奇偶标志
          • 7.PSW.1:程序状态字的第1位
      • 2.控制器,包括程序计数器(PC)、堆栈指针寄存器(SP)、数据指针寄存器(DPTR)等

        • 1)PC(16位),初始值位0000H
        • 2)SP(原则上软件只读不写),初始化07H,但最好设置为60H
        • 3)DPTR(51中唯一可读写),16位数据指针寄存器

2.3AT89系列单片机的存储器结构

  • 哈弗结构,有单独的程序存储器(ROM)和数据存储器(RAM)

    • 2.3.1AT89系列单片机的程序存储器

      • 1.AT89系列单片机程序存储器ROM,正常工作时可读不可写,掉电数据不丢失

        • 1)具有4KBFlash结构的电可擦除只读存储器
        • 2)逻辑上仅一个64KB,内部与外部只能选择一个,最好不要外扩ROM
        • 3)单片机引脚EA非的电平来选择,若接Vcc,当地址为0000H~0FFFH时,访问内部Flash;当地址为1000H~FFFFH时,则访问外部程序内存
      • 2.AT89系列单片机程序存储器管理

        • 1)系统复位后,PC的初始值为0000H(0~48字节有特殊用途,中断向量表),它的值代表单片机下一条(main程序)要执行的指令在ROM中存放的位置,用户不能直接对PC进行操作
    • 2.3.2AT89系列单片机的数据存储器

      • 1)数据存储器RAM用于存放程序中的“中间数据”或程序运行后的结果,掉点后会丢失
      • 2)数据存储器分为两个地址空间:一个为内部128B内存空间;一个为外部扩展的64KB内存空间
      • 1.内部数据存储器的结构,对于51系列,高128B被特殊功能寄存器占用

        • 1)低128B RAM区

          • i)工作寄存器组区

            • 最低32个单元,PSW中RS1、RS0确定当前采用哪一个工作寄存器,系统复位后,指向工作寄存器组0(07H)
          • ii)位寻址区

            • 20H~2FH单元(16B)可供寻址,共128位
            • 两种地址表示方式:位地址形式;“字节地址(20H~2FH).位数”方式
          • iii)用户RAM区

            • 30H~7FH共80个字节单元(但只有48B可供使用)
        • 2)高128B的特殊功能寄存器(SFR)区

          • SFR使用方法

            • i)使用位名称表示,例如:CY
            • ii)使用SFR“名称.位”形式表示,例如:PSW.7
      • 2.外部数据存储器,寻址空间可达64KB,地址范围是0000H~FFFFH(能不使用就不使用,消耗占用资源)

2.4AT89系列单片机的引脚功能

  • 2.4.1外部引脚

    • 1.输入输出引脚(C51共40个引脚,32个皆为输入输出口)

      • P0、P1、P2、P3口4个8位并行I/O口
    • 2.控制引脚

      • 1)RST复位输入端(未复位,低电平;复位时,高电平(持续几个微秒))
      • 2)ALE/PROG非地址所存允许/编程脉冲(用于发送地址信号(输出),高电平有效)

        • 输出信号用于所存低字节地址
      • 3)PSEN非外部程序存储器的选通信号(输出)(有效,则外部程序;无效,则内部数据)

        • 用于读外部程序存储器的选通信号,低电平有效
      • 4)EA非/Vpp外部程序存储器访问允许端/编程电源输入端(输入)(低电平有效,访问外部程序4KB;反则内部程序)

        • 通过EA非从外部程序内存中读取代码
    • 3.电源和时钟引脚(物理引脚)

    • 4.外接晶体引脚(与时钟有关系)

      • 1)内部振荡器:XTAL1、XTAL2同时使用
      • 2)外部振荡器:只是用XTAL1
  • 2.4.2片外总线结构

    • P0口的8个引脚既可以是地址总线(低8位),也可以是数据总线;P2口的8个引脚作为地址总线的高8位;P3口的8个引脚只能占用两个

      • 1.地址总线,分时复用技术
      • 2.数据总线
      • 3.控制总线

2.5AT89系列单片机的I/O接口

  • 2.5.1P0口,一个8位漏极开路的双向I/O口

    • 1.P0口作为通用I/O口使用

      • 1)I/O模式下作为输出口,P0需外接上来电阻(10kΩ左右)
      • 2)在I/O模式下作为输入口使用时,在输入操作前应先向端口写“1”(P0=0xff);称作“准双向口”
    • 2.P0口作为低8位地址/数据复用总线使用

  • 2.5.2P1口,无需多路转接电路MUX和外接上拉电阻

    • 1.P1口作通用I/O使用
  • 2.5.3P2口,作通用I/O口使用时,是一个准双向口

  • 2.5.4P3口,一个多用途口,是一个准双向口

    • P3口引脚与复用功能

      • P3.0

        • RXD(串行输入口)
      • P3.1

        • TXD(串行输出口)
      • P3.2

        • INT0(外部中断0)
      • P3.3

        • INT1(外部中断1)
      • P3.4

        • T0(定时器0的外部输入)
      • P3.5

        • T1(定时器1的外部输入)
      • P3.6

        • WR(外部数据存储器写选通)
      • P3.7

        • RD(外部数据存储器读选通)

2.6AT89S系列单片机内部看门狗定时器

2.7AT89系列单片机复位工作方式

  • 当系出于正常工作状态时,如果RST引脚上有一个高电平并维持2个机器周期(24个震荡周期,约2μs)以上,则CPU就可以实现可靠复位
  • 复位后寄存器的初始状态

    • 寄存器

      • PC
      • ACC
      • PSW
      • SP
      • DPTR
      • P0、P1、P2、P3
      • IP
      • IENO
    • 初始状态值

      • 0000H
      • 00H
      • 00H
      • 00H
      • 07H
      • 0FFH
      • xxx00000B
      • 0x00000B
    • 寄存器

      • TMOD
      • TCON
      • TH0
      • TL0
      • TH1
      • TL1
      • SCON
      • PCON
      • SBUF
    • 初始状态值

      • 00H
      • 00H
      • 00H
      • 00H
      • 00H
      • 00H
      • 00H
      • 0xx00000B
      • 不定

2.8AT89系列单片机的低功耗方式

  • 省电工作方式(尽可能降低系统的功耗)

    • 空闲方式
    • 掉电方式
  • 2.8.1空闲工作方式

    • 1.任何中断请求都可以由硬件将PCON.0(IDL)清零而中止空闲工作方式
    • 2.硬件复位
  • 2.8.2掉电工作方式

    • 当CPU执行一条置PCON.1位(PD)为1的指令后,系统进去掉电工作方式,但内部RAM区和特殊功能寄存器的内容被保留
    • 退出掉电工作方式的唯一方法是硬件复位。复位后将所有的特殊功能寄存器的内容初始化,但不改变内部RAM区的数据

2.9AT89系列单片机的时序

  • 时序,即指各种操作信号的时间序列,它表明了指令执行中各种信号之间的相互关系

    • 2.9.1几个基本时序单位

      • (1)时钟周期(12MHz=1/12μs),也称为振荡周期,定义为时钟脉冲频率(fosc)的倒数,是计算机中最基本的,最小的时间单位
      • (2)状态周期(1/6μs),时钟周期经2分频后成为内部的时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,用S表示;一个状态周期有两个时钟周期
      • (3)机器周期(1μs),完成一个基本操作所需要的时间称为机器周期,一个机器周期有6个状态,包含12个振荡脉冲
      • (4)指令周期(1~4μs),指CPU执行一条指令所需要的时间,一般由若干机器周期组成;一个指令周期包含1~4个机器周期
    • 2.9.2CPU取指令和执行指令时序

      • 大部分指令在整个指令执行过程中,在每个机器周期内ALE信号出现两次(有效)

第3章 单片机的指令系统及汇编语言程序设计

3.1 51系列单片机指令系统概述

  • 指令就是要计算机执行某种操作的指令,一台计算机中所有指令的集合,称为这台计算机的指令系统
  • 操作码字段表征指令的操作特性与功能,而地址马自担通常指定参与操作的操作数地址
  • 精简指令系统RISC:单字节、双字节、三字节等不同长度的指令

    • 单字节指令只有1字节
    • 双字节指令包括2字节,操作码+操作数
    • 三字节指令,操作码占1字节,操作占2字节

3.2 51系列单片机的寻址方式

  • 顺序寻址、跳转寻址

    • 3.2.1立即寻址(常数寻址)

      • 为表示指令中的立即数,在操作数前面加“#”标志

        • MOV A, #90H —— 指令功能是把90H这个数据送到累加寄存器A(即存放在程序存储器中)
    • 3.2.2(最好的)寄存器寻址(寄存器数寻址)

      • MOV A, R0 —— 指令功能是把寄存器R0的内容传送到累加寄存器A中

        • 1)通用寄存器,即R0~R7
        • 2)部分专用寄存器,如累加器A和B寄存器,以及数据指针DPTR寄存器
    • 3.2.3(不用)直接寻址(存储器数寻址)

      • 存放在内部数据存储和特殊功能寄存器

        • 寻址范围只限于内部RAM,SBUF是专用寄存器名

          • 1)低128单元
          • 2)专用寄存器
    • 3.2.4寄存器间接寻址

      • 1)内部数据RAM的寄存器间接寻址,采用寄存器R0、R1,如MOV A, @R0
      • 2)外部数据RAM的寄存器间接寻址

        • 1.采用R0、R1作为间接寄存器
        • 2.采用16位的DPTR
    • 3.2.5相对寻址(指令寻址)

      • 将指令中给定的地址偏移量与PC的当前值相加,得到真正的程序转移地址

        • 偏移量是一个带符号的8位二进制补码数,表示数的范围是-128~+127
    • 3.2.6编制寻址

      • 1)变址寻址只能对程序存储器进行寻址,范围达64KB
      • 2)变址寻址的指令只有3条

        • MOVC A, @A + DPTR
        • MOVC A, @A + PC
        • JMP@ A + DPTR
    • 3.2.7位寻址

      • 1)内部RAM中的位寻址区单元地址位20H~2FH,共16个单元128位,位地址是00H~7FH
      • 2)专用寄存器的可寻址区,可以位寻址的专用寄存器共有11个,实有寻址位83位

第4章 C51程序设计

4.1 C51程序设计基础

  • 4.1.1 C51语言特点和程序结构

    • 1.C51语言功能上的特点

      • (1)C51语言兼具高级语言和汇编语言的特点
      • (2)C51语言简洁、运算丰富、数据结构众多
      • (3)C51采用结构化设计程序,程序可移植性好
      • (4)生成目标代码效率高

4.2 C51数据类型

  • 4.2.1字符型

    • unsigned char;单字节;0~255;无符号字符型
  • 4.2.2整型

    • unsigned int;双字节;0~65535;无符号整型
  • 4.2.5位型

    • bit型
    • sbit型
  • 4.2.6寄存器型

    • sfr,字符型特殊功能寄存器类型,占用1字节单元
    • sfr16,双字节特殊功能寄存器类型,占用2字节单元

      • 访问所有2字节特殊功能寄存器(DPTR)

4.3 C51运算量

  • 4.3.1常量

    • 1.整型常量
    • 2.浮点型常量
    • 3.字符型常量
    • 4.字符串常量

      • 字符串常量所占用的字节数位字符数加1

        • 字符串中每个字符所占用1字节的存储空间,并在字符串尾部加一个结束符NULL
  • 4.3.2变量

    • 变量定义的一般格式:[存储类型] 数据类型 [存储器类型] 变量名1 [=初值],变量名2 [=初值]……

      • 1.存储类型

        • (1)动态(auto)
        • (2)外部(extern)
        • (3)静态(static)

          • 静态变量在程序运行时始终占用存储单元
        • (4)寄存器(register)

          • 用register定义的变量存放在CPU内部的RAM的寄存器中,处理速度快,但是可以定义变量的数目有限
      • 2.数据类型

        • char型,1字节
        • int型,2字节
        • bit型,1位
      • 3.存储器类型

        • C51存储器类型和变量存放区域

          • 存储器类型(关键字)

            • data
            • bdata
            • idata
            • pdata
            • xdata
            • code(需要初始化)
          • 存储区域

            • 内部RAM的00H~7FH区域(内部数据存储器)
            • 内部RAM的20H~2FH区域
            • 内部RAM的00H~7FH区域
            • 外部RAM某一页的0~FFH区域
            • 整个外部RAM的0~FFFFH区域
            • 64KB的程序存储器区域
          • 说明

            • 直接寻址的内部RAM,存取速度最快
            • 位寻址区、允许位和字节的混合访问
            • 间接寻址访问,用@R0、@R1间接访问
            • 用MOVX @R0、@R1间接访问
            • 用MOVX @DPTR间接访问
            • 用MOVC指令访问,变址寻址
      • 4.变量名

        • 变量名的第一个字符必须是字母或者下划线,不能以数字开头
  • 4.3.3 C51扩展数据类型的变量定义

    • 1.bit普通位变量

      • 普通位变量用来定义存放在内部RAM可以位寻址区域的变量

        • 严格来说只能是bdata的存储器类型

          • 定义格式:bit [存储器类型] 变量名
    • 2.sbit可位寻址的特殊位变量(无存储类型)

      • 可位寻址的特殊位变量,SFR中可以位寻址的位,操作可以位寻址或者字节寻址
      • sbit来指定位变量的绝对地址

        • sbit的一般定义方法

          • (1)用于指定已定义的可位寻址的SFR或者20H~2FH单元的某一位

            • sbit F0 = PSW^5;//定义F0为PSW.5
          • (2)指定可以位寻址的地址单元的某一位

            • sbit dis_on = 0x20^0;
          • (3)直接指定可寻址的位地址

            • sbit F0 = 0xd5;
    • 3.sfr特殊功能寄存器变量

      • sfr直接指定8位的特殊功能寄存器的直接地址

        • 定义格式:sfr 特殊功能寄存器名 = 绝对地址;
    • 4.sfr16 16位特殊功能寄存器变量

      • sfr16定义16位的特殊功能寄存器的低端地址

        • 定义格式:sfr16 16位特殊功能寄存器名 = 绝对地址的低端地址;
  • 4.3.4 C51绝对地址访问

    • 1.使用宏定义访问绝对地址

      • 定义格式如下:#include

        • define 变量名 DBYTE [绝对地址] //在内部RAM中定义绝对地址字节变量

        • define 变量名 DWORD [绝对地址] //在内部RAM中定义绝对地址字变量

        • define 变量名 XBYTE [绝对地址] //在外部RAM中定义绝对地址字节变量

    • 2.使用关键字at指定绝对地址空间

      • 格式:[存储器类型] 数据类型 变量名 at地址常数;

        • 注意:使用at定义的变量必须为全局变量
  • 4.3.5存储模式

    • 1.SMALL模式

      • 默认变量存放在idata区域,片内数据存储器00H~07FH单元
    • 2.COMPACT模式

      • 默认变量存放在pdata区域,片外RAM的低256B空间
    • 3.LARGE模式

      • 默认变量存放在xdata区域,片外RAM的64KB空间

第5章 单片机应用系统的开发环境及仿真软件简介

第6章AT89系列单片机内部资源及应用

XMind - Trial Version