923存附 323存附福 523存铺号 523存储器 片内RAM共分为工作寄区、包寻姓区。项冲 323存 23存端 位寻址 安24等存山1维址对调来 6
6 Copyright © Http:// mcu.scetc.net 一、程序存储器(ROM) §2.3 存储器 复位后,程序计数器PC为0000H,即从程序存储器的0000H单元读出第一 条指令,因此可在0000H单元内放置一条跳转指令,如LJMP XXXX(XXXX表示 主程序入口地址)。由于系统给每一中断服务程序预留了8个字节,因此,用 户主程序一般存放在0033H单元以后,如: ORG 0000H ;用伪指令ORG指示随后的指令码从0000H单元开始存放 LJMP Main ;在0000H单元放一条长跳转指令,共3个字节 ORG 0003H LJMP INT0 ;跳到外中断服务程序的入口地址 . ;其他中断入口地址初始化 ORG 50H ;主程序代码从50H单元开始存放 Main: ;Main是主程序入口地址标号 SiChuan Engineering Technical College-1959 31 Copyright © Http:// mcu.scetc.net §2.3 存储器 SiChuan Engineering Technical College-1959 32 Copyright © Http:// mcu.scetc.net §2.3 存储器 二、数据存储器 1、编址与访问 MCS一51系列单片机的片内数据存储器除RAM(128B)外、还有特殊 功寄存器SFR块(128B)。 片内数据存储器的容量很小,常需扩展片外数据存储器。MCS一51系列 单片机有一个数据指针寄存器可用于寻址程序存储器或数据存储器单元, 它也有16位,寻址范围也可达64KB。故片外数据存储器的容量可大到与 程序存储器一样,其编址都自0000H开始,最大可至 FFFFH。 如只需扩展少量片外数据存储器,容量不超过 256个单元,则也可按 8 位二进制数编址,自OOH开始,最大可至FFH。 表2-3 内部RAM地址空间 字节地址 片内数据存储器SFR FFH~80H 片内数据存储器RAM 7FH~00H SiChuan Engineering Technical College-1959 33 Copyright © Http:// mcu.scetc.net §2.3 存储器 2、片内数据存储器 51子系列单片机片内RAM共分为工作寄存器区、位寻址区、数据缓冲器 区等三个区域。 (1)工作寄存器(00H~1FH) 工作寄存器也称通用寄存器,供用户编程时使用,临时寄存8位信息。由 图见它分成4个组,每个组都是8个单元,用作8个寄存器,都以RO一R7 来表示。同时只用一组工作寄存器,其他各组不工作、待用。哪一组工作 可由程序状态字 RSW中的 RSL RSO两位进行选择。 SiChuan Engineering Technical College-1959 34 Copyright © Http:// mcu.scetc.net 表 2.4 寄存器与RAM 地址对照表 §2.3 存储器 SiChuan Engineering Technical College-1959 35 Copyright © Http:// mcu.scetc.net §2.3 存储器 (2)位寻址区 (20H一2FH)单元是位寻址区,该区的每一位都被赋予了一全位地址。可 进行位寻址,对特定位进行处理、内容传送或据以判跳,给编程带来方便。 通常可把程序中用到的状态标志、位控制变量等放于位寻址区。 SiChuan Engineering Technical College-1959 36
923存附圆 (3》数板缓冲区 旋用384-7F 30H一H是数缓冲区。即用户A区,共80个单元 《布特与峰针 023在 523存储 表6钟弹功输海市●地址来 用 置数设定,却白由 2子系有21个专用寄中个为 、TCM,SCON 523存储 523存附 表26R功存地美 D.D 网出 A九A 亚Am 7
7 Copyright © Http:// mcu.scetc.net (3)数据缓冲区 30H一7FH是数据缓冲区,即用户RAM区,共80个单元。 由于工作寄存器区、位寻址区、数据缓冲区统一编址 使用同样的指 令访问三个区的单元既有自己的独特功能,又可统一调度使用。 (4)堆栈与堆栈指针 片内RAM的部分单元还可以用作堆栈。有一个8位的堆栈指针寄存器 SP,专用于指出当前堆栈顶部是片内RAM的哪一单元。51单片机系统复位 后SP的初值为07H,也就是说将从 08H单元开始堆放信息。但是,51系列 的栈区不是固定的,只要通过软件改变SP寄存器的值便可更动栈区。 §2.3 存储器 SiChuan Engineering Technical College-1959 37 Copyright © Http:// mcu.scetc.net 30H 数据缓冲区/堆栈区: 字节地址:00H~7FH 一般使用30H~7FH 位寻址区: 字节地址:20H~2FH 位地址为:00H~7FH 工作寄存器区: 字节地址:00H~1FH 51 系 列 单 片 机 片 内RAM 的 配 置 SiChuan Engineering Technical College-1959 38 Copyright © Http:// mcu.scetc.net §2.3 存储器 3、特殊功能寄存器块 特殊功能寄存器也称专用寄存器,专用于控制、管理片内算术逻辑部件、 并行I/O口,串行I/O口、定时器/计数器、中断系统等功能模块的工作,用 户在编程时可以置数设定,却不能自由移作它用。在51系列单片机中,将 各专用寄存器 (PC例外)与片内RAM统一编址,且作为直接寻址字节,可 直接寻址。除PC外,51子系列有 18个专用寄存器,其中3个为双字节寄 存器,共占用21个字节;52子系列有21个专用寄存器,其中5个为双字节 寄存器,共占用26个字节。 特殊功能寄存器SFR占用字节地址:80H~FFH 位寻址寄存器: 其字节地址可被8整除。 专用寄存器:A、B、PSW、DPTR、SP I/O接口寄存器: P0、P1、P2、P3、SBUF、TMOD、TCON、SCON . SiChuan Engineering Technical College-1959 39 Copyright © Http:// mcu.scetc.net 表 2.6 SFR特殊功能寄存器地址表 §2.3 存储器 SiChuan Engineering Technical College-1959 40 Copyright © Http:// mcu.scetc.net 表 2.6 SFR特殊功能寄存器地址表 §2.3 存储器 SiChuan Engineering Technical College-1959 41 Copyright © Http:// mcu.scetc.net 表 2.6 SFR特殊功能寄存器地址表 §2.3 存储器 SiChuan Engineering Technical College-1959 42
号24定时卷计数器 241实现定时的方法 ◆软件定时 ◆采用时基电路定时 定a 24.2定时器汁数器的结构和工作原理 2.4.2定时要计数要的结构和工作原到 ◆安器什数器的结构 ◆定时悬/计最春前工作原理 24.2定时舞/计数舞的结构和工作原理 2.4.2定时要y计数要 ◆定时应用 ◆计者运用 绿冲有基本要:中的离低电平持 斜 8
8 Copyright © Http:// mcu.scetc.net §2.4 定时器/计数器 定时器/计数器是MCS一51单片机的重要功能模块之一。在检测、控制及 智能仪器等应用中,常用定时器作实时时钟,实现定时检测、定时控制。 还可用定时器产生毫秒宽的脉冲,驱动步进电动机一类的电气机械。计数 器主要用于外部事件的计数。 一、主要特性 (1)8031/8051/8751单片机有两个可编程的定时器/计数器-定时器/计数器 0与定时器/计数器 1,可由程序选择作为定时器用或作为计数器用,定时 时间或计数值也可由程序设定。 (2)每个定时器/计数器都具有4种工 作方式,可用程序选择。 (3)任一定时器/计数器在定时时间到或计数 值到时,可由程序安排产生中断请求信号或不产生中断请求信号。 (4)8032/8052有3个可编程定时器/计数器,增加了定时器/计数器2。定 时器/计数器2有3种工作方式,可用程序选择。 SiChuan Engineering Technical College-1959 43 Copyright © Http:// mcu.scetc.net 2.4.1实现定时的方法 软件定时 软件延时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。 例如延时程序。 采用时基电路定时 例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬 件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进 行控制和修改,即不可编程,且定时时间容易漂移。 可编程定时器定时 最方便的办法是利用单片机内部的定时器/计数器。结合了软件定时 精确和硬件定时电路独立的特点。 定时器/计数器 如何使用呢? SiChuan Engineering Technical College-1959 44 Copyright © Http:// mcu.scetc.net 2.4.2.定时器/计数器的结构和工作原理 定时器/计数器的结构 定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器 组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功 能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 T1计数器 T0计数器 控制单元 SiChuan Engineering Technical College-1959 45 Copyright © Http:// mcu.scetc.net 定时器/计数器的工作原理 计数器输入的计数脉冲源 系统的时钟振荡器输出脉冲经12分频后产生; T0或T1引脚输入的外部脉冲源。 计数过程 每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时, 再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中 TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许 时)。如果定时器/计数器工作于定时模式,则表示定时时间已 到;如果工作于计数模式,则表示计数值已满。 2.4.2.定时器/计数器的结构和工作原理 SiChuan Engineering Technical College-1959 46 Copyright © Http:// mcu.scetc.net 2.4.2.定时器/计数器的结构和工作原理 定时应用 用作定时器:此时设置为定时器模式,加1计数器是对内部机器周 期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率 的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。 例如:单片机晶振频率为12MHz,机器周期为1µs,即Tcy = 1µs 。当 计数值为100时,则定时时间为100µs 。 定时与计数都是利 用计数实现!! 计数运用 用作计数器:此时设置为计数器模式,外部事件计数脉冲由T0或T1 引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部 脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。 SiChuan Engineering Technical College-1959 47 Copyright © Http:// mcu.scetc 48.net 定时器/计数器的初始化 在使用定时器/计数器之前由软件设置其功能,即初始化。 1、初始化的步骤 (1)确定工作模式(计数/定时)、工作方式和启动控制方式,并写入TMOD寄存器 (2)设置定时或计数初值:可直接写入TH0、TL0或TH1、TL1中。16位计数初值必 须分两次写入对应计数器 (3)根据要求确定是否采用中断方式:直接对IE位赋值。开中断时,对应位置 “1”;采用程序查询方式时,IE位应清0以进行中断屏蔽 (4)启动定时/计数器:使用SETB TRi指令启动 若第一步设置为软启动,即GATE设置为0时,执行指令后,定时/计数器开始工作。 若GATE设置为1时,还必须由外部中断引脚 和 共同控制,只有外部 引脚电平为高时,执行指令后,定时/计数器开始工作。 INT0 INT1 2.4.2.定时器/计数器 SiChuan Engineering Technical College-1959 48
2.4.2定时每什敏器 2.43定时计敷等的控例 ◆工作方式专存卷(TMOD) GATE 时 X一针徽道 ◆ 24.3定时器计数要的控削 2.4.3定时每计数每的控制 ◆控存TCON ◆计数工作方式选 M工作方式 00 方式 3位计量 华地址,国网一eo 01 1。 11为 信用于控制外郁中断。 24.4定时计数的工作方式 2.44定时计数的工作方式 ●方式(M1-4.M0=0) 1.标值为01例2),送增T0T几0,计数值为仁812-X 1时的最小计数值为1,时的最大计爱值为192。叶数 从0开始计数。 3.定时时同为刚2-0*1 9
9 Copyright © Http:// mcu.scetc 49.net 2、计数初值的计算 最大计数值M与定时/计数器工作方式有关: 方式0:M=213=8192 方式1:M=216=65536 方式2: M=28=256 方式3: M=256,定时/计数器分成两个独立的8位计数器,所以TH0、TL0 的M均为256. T0和T1均为加1计数器,当加到最大值(00H或0000H)时,产生溢出, 将TCON寄存器的TF位置1,产生溢出中断。 计数器初值X的计算公式: (1)计数工作模式时 X=M-计数值 (2)定时工作模式时 X= M-计数值= M-t/T=M -(fosc x t)/12 fosc为晶振频率,t为要求定时的时间。 2.4.2.定时器/计数器 SiChuan Engineering Technical College-1959 49 Copyright © Http:// mcu.scetc.net 2.4.3.定时器/计数器的控制 工作方式寄存器(TMOD) GATE:门控位。 GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时 器/计数器工作;(即需要一个启动条件,一般情况下GATE=0) GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电 平时,才能启动定时器/计数器工作,即需要两个启动条件。 C/T :定时/计数模式选择位。 C/T =0为定时模式; C/T =1为计数模式。 M1M0:工作方式设置位。 GATE C/T M1 M0 GATE C/T M1 M0 D7 D6 D5 D4 D3 D2 D1 D0 定时器T1 定时器T0 SiChuan Engineering Technical College-1959 50 Copyright © Http:// mcu.scetc.net 计数器工作方式选择 M1 M0 工 作 方 式 功 能 说 明 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式2 自动重装8位计数器 1 1 方式3 定时器0:分成两个8位 定时器1:停止计数 建议不采用该工 作方式! 在精确定时采用 该工作方式! 2.4.3.定时器/计数器的控制 SiChuan Engineering Technical College-1959 51 Copyright © Http:// mcu.scetc.net 控制寄存器TCON TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于 控制定时器/计数器的启动和中断申请。其格式如下: TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自 动置TF1为1。CPU响应中断后TF1由硬件自动清0。 TR1(TCON.6):T1起/停控制位。1:启动 0:停止 TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 TR0(TCON.4):T0起/停控制位。1:启动 0:停止 TCON的低4位用于控制外部中断。 2.4.3.定时器/计数器的控制 SiChuan Engineering Technical College-1959 52 Copyright © Http:// mcu.scetc.net 2.4.4定时器/计数器的工作方式 方式0 (M1=0,M0=0) 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成 TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志, 向CPU发出中断请求。 中断请求 13位计数器 计数/定时选择 该方式计算不方便, 建议不采用! SiChuan Engineering Technical College-1959 53 Copyright © Http:// mcu.scetc.net 方式0 (M1=0,M0=0) 1. 初值X为0~8191(213~1),送给TH0、TL0。计数初值为N=8192-X。 X=8191时的最小计数值为1, X=0时的最大计数值为8192。即计数 范围为1~8192。 2. 当加法计数器TH0溢出后,必须对TH0、TL0重修设置初值,否则按 从0开始计数。 3.定时时间为T=N*TCY =(8192-X)* TCY 2.4.4定时器/计数器的工作方式 SiChuan Engineering Technical College-1959 54
24.4定时善什数舞的工作方式 2.44定时计数每的工作方式 ◆方(1.3=) ◆方式(M=) 1,舞值x065位4力,要修、几1。计要初情大5536-1 行535时的番小计数值为1,X-0时的量大计数值为6536。即计数 1定时时为T-60 244定时什的工作方式试 244定时墨计数的工作方式 方式 e为2m,要定时隔/叶0产生10m定时 66-01=10- 》编程:: 片 0 (o)-00000o1 不 Colrpe-tas Calege-thag 24.4定时量计数最的工作方式 24.4定时卷计数每的工作方式 ●方试2(11=1.M0- 法计数器使用,作为值存。m、1的值由 件预。即计数地围为 25 为12,要求每隔20s产生一个定时控制 一0 工作方式将口分为个立位计南门。 10
10 Copyright © Http:// mcu.scetc.net TF1 TR1 TF0 TR0 GATE C/T M1 M0 GATE C/T M1 M0 1 &≥1 1 0 T0引脚 INT0引脚 1 0 机器周期 TH0 TL0 8位 8位 溢出 TCON TMOD D0 D7 D7 D0 申请 中断 TF1 TR1 TF0 TR0 GATE C/T M1 M0 GATE C/T M1 M0 1 &≥1 1 0 T0引脚 INT0引脚 1 0 机器周期 TH0 TL0 8位 8位 溢出 TCON TMOD D0 D7 D7 D0 申请 中断 方式1(M1=0,M0=1) 方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高 8位,组成了16位加1计数器 。 16位计数器 2.4.4定时器/计数器的工作方式 SiChuan Engineering Technical College-1959 55 Copyright © Http:// mcu.scetc.net 方式1 (M1=0,M0=1) 1. 初值X为0~65535(216~1),送给TH1、TL1。计数初值为N=65536-X。 X=65535时的最小计数值为1, X=0时的最大计数值为65536。即计数 范围为1~65536。 2. 当加法计数器TH1溢出后,必须对TH1、TL1重修设置初值,否则按 从0开始计数。 3.定时时间为T=N*TCY =(65536-X)* TCY 2.4.4定时器/计数器的工作方式 SiChuan Engineering Technical College-1959 56 Copyright © Http:// mcu.scetc.net 方式1 例:已知振荡器振荡频率fosc为12MHz,要求定时器/计数器0产生10ms定时, 试编写初始化程序。 TCY机器周期为1µs,选择工作方式1。 1)定时器0计数初值:T=(65536-X)* TCY = (65536-X)* 1µs=10ms X=55536=D8F0H TH0=D8H, TL0=F0H 2.4.4定时器/计数器的工作方式 GATE C/T M1 M0 GATE C/T M1 M0 D7 D6 D5 D4 D3 D2 D1 D0 定时器T1 定时器T0 初始化程序:START: MOV TL0, #F0H MOV TH0, #D8H MOV TMOD,#01H SETB TRO (TMOD)=0000 0001b 2)编程:TMOD: SiChuan Engineering Technical College-1959 57 Copyright © Http:// mcu.scetc.net 方式2 方式2为自动重装初值的8位计数方式。 在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入 TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。 8位计数器 TH1重装单元 2.4.4 定时器/计数器的工作方式 (M1=1,M0=0) SiChuan Engineering Technical College-1959 58 Copyright © Http:// mcu.scetc.net 方式2 (M1=1,M0=0) 1. TL1为8位加法计数器使用,TH1作为初值寄存器。 TH1、TL1 的初值由软 件预置。即计数范围为1~256。 2.当加法计数器TL1溢出后,置位TF1,且重装设置初值,将TH1中的初值自 动装入TL1,使TL1重新计数。 TH1中的内容保持不变。 例:已知振荡器振荡频率fosc为12MHz,要求每隔200µs产生一个定时控制 信号,试计算定时初值是多少。 2.4.4定时器/计数器的工作方式 T=(256-X)* TCY = (256-X)* 1µs=200µs X=56=38H, TH1=38H, TL1=38H SiChuan Engineering Technical College-1959 59 Copyright © Http:// mcu.scetc.net 方式3 (M1=1,M0=1) 方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0, 停止计数。 工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。 2.4.4定时器/计数器的工作方式 SiChuan Engineering Technical College-1959 60