zoukankan      html  css  js  c++  java
  • C51单片机

    C51单片机

    img

    SFR(Special Function Register)

    地址与RAM高位相同但寻址方式不同,SFR直接寻址,RAM通过R0/R1间接寻址。

    .7 .6 .5 .4 .3 .2 .1 .0
    IE(A8H) EA ES ET1 EX1 ET0 EX0
    IP(B8H) PS PT1 PX1 PT0 PX0
    TCON(88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
    TMOD(89H) GATE C/T M1 M0 GATE C/T M1 M0
    SCON(98H) TI RI

    image-20200322084535298

    IE(A8H)Interrupt Enable

    中断允许寄存器

    EA(IE.7)Enable All interrupt

    中断总允许位

    • 相当于总开关

    • 默认为0,禁止一切中断响应

    • EA=1,CPU对所有中断开放

    • 外部中断INT0/INT1中断请求标志位,外部中断源有请求时,TCON中对应的标志位IE0/IE1由硬件置“1”,当CPU响应该中断后,又由硬件自动置“0”,为电平触发。

    ES(IE.4)Enable Serial

    串口中断允许控制位

    • 相当于串口单独开关
    • ES=1,允许串口接受,发送中断
    • 外部中断INT0/INT1的触发方式选择位,IT0/IT1=0,对应外部中断设置为低电平触发方式,TCOM中,IT0/IT1=1,对应外部中断设置为边沿触发方式。

    ET1/0(IE.3/1)Enable Timer

    定时/计数器1/0中断允许控制位

    • 选择时赋值为1即可
    • ET0=1,允许定时/计数器0的溢出中断

    EX1/0(IE.2/0)Enable eXterior

    0/1外部中断0/1允许控制位

    • EX0是外部中断0的使能控制位,如果EX0设置为0,则外部中断0失效,无论外部中断引脚如何变化,都不会发生外部中断。

    IP(B8H)Interrupt Priority

    中断优先级寄存器

    【1】51有默认的中断优先级,在有中断标志时,MCU查询的顺序是:
    image-20200322090859836

    【2】设置IP = 0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。
    【3】T1中断会一直等待cpu执行完T0中断函数再执行T1中断函数。一直要等到T0中断函数执行完毕后才会处理T1中断。如果在执行T0中断的过程中T1第二次相应中断,也要等T0全部执行完之后再相应T1中断,这时候T1中断只会被执行一次。

    PS(IP.4)Priority Serial

    串口优先级标志位

    PT1/0(IP.3/1)Priority Timer

    1/0定时器1/0优先级标志位

    PX1/0(IP.2/0)Priority eXterior

    1/0外部中断1/0优先级标志

    PCON(87H)Power CONtrol

    电源控制和波率选择

    Timer 初始化

    由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤一般如下:

    1、确定工作方式(即对TMOD赋值);

    2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);

    3、根据需要开放定时器/计数器的中断(直接对IE位赋值);

    4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。

    下面介绍一下确定定时器/计数器初值的具体方法。

    因为在不同工作方式下计数器位数不同,因而最大计数值也不同。

    现假设最大计数值为M,那么各方式下的

    最大值M值如下:

    方式0:M=2 ^13=8 192

    方式1:M=2^16=65 536

    方式2:M=2^8=256

    方式3:定时器0分成两个8位计数器,所以两个M均为256。

    因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:

    在计数方式下:X=M-计数值

    在定时方式下:X=M-定时值/机器周期

    TCON(88H)Time CONtrol

    定时器控制寄存器

    可位寻址

    设定好了定时器/计数器的工作方式后,它还不能进入工作状态,必须通过设置控制寄存器TCON中的某些位来启动它工。要使定时器/计数器停止运行,也必须通过设置TCON中的某些位来实现。当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。

    定时器 启动/暂停/中断/溢出 控制

    TF1/0(TCON.7/5)Timer Flag

    T1/0溢出标志

    当定时/计数器溢出,会触发TF1/0位,然后CPU检测TF1/0位,执行对应的中断,响应中断后,硬件清零。(也可软件清零)

    TR1/0(TCON.6/4)Timer Run

    T1/0运行控制

    可由软件置1(或清零)来启动(或关闭)定时器,使定时器开始计数。例如用指令SETB TR1(或CLR TR1)使TR1置1(或清零)。

    IE1/0(TCON.3/1)Intrrupt Enable

    外部中断1/0溢出标志

    外部中断请求标志,外部中断执行,请求中断,对应IE1/0=1,CPU响应中断,硬件对IE1清零。

    IT1/0(TCON.2/0)Interrupt Touch

    外部触发1/0触发方式选择

    但是对于外部中断,却有两种中断触发方式,一种是低电平触发,一种是下降沿触发。我们对于不同情况要进行不同的控制.我们看TCON的第二位和第零位,第二位IT1对应外部中断1,第零位IT0对应外部中断0,给他们高电平就为下降沿触发,给他们低电平就为低电平触发。

    TMOD(89H)Timer MODe

    定时器方式控制寄存器

    字节寻址

    高四位定义“1”模式,低四位定义“0”模式

    img

    GATE(TMOD.7/3)

    门控制

    GATE=1,内外一起控制定时/计数器

    • “与门”的输出信号K由INTx输入电平和TRx位的状态一起决定(即此时K=TRx·INTx),当且仅当TRx=1,INTx=1(高电平)时,计数启动;否则,计数停止。(启动外部中断)

    • 当INT0引脚为高电平时且TR0置位,TR0=1;启动定时器T0;

    • 当INT1引脚为高电平时且TR1置位,TR1=1;启动定时器T1。

    GATE=0,只有内部控制

    • “或门”输出恒为1,“与门”的输出信号K由TRx决定(即此时K=TRx),定时器不受INTx输入电平的影响,由TRx直接控制定时器的启动和停止。(启动内部中断)

    • TR0=1,启动定时器T0。

    • TR1=1,启动定时器T1。

    C/T(TMOD.6/2)Count/Timer

    功能选择位

    C/T=0时为定时功能: 加1计数器对脉冲f进行计数,每来一个脉冲,计数器加1,直到计时器TFx满溢出;

    C/T=1时为计数功能: 加1计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外信号脉冲进行计数,每来一个脉冲,计数器加1,直到计时器TFx满溢出;

    M1,M0(TMOD.5,4/1,0)Mode

    方式选择功能

    MCS-51的定时器T0有4种工作方式:方式0,方式1,方式2,方式3。

    MCS-51的定时器T1有3种工作方式:方式0,方式1,方式2。

    M1 M0 工作方式 功能说明
    0 0 方式0 13位定时器/计数器
    0 1 方式1 16位定时器/计数器
    1 0 方式2 自动重载8位定时器/计数器
    1 1 方式3 T0分为2个8位独立计数器,T1无方式3

    SCON(98H)

    TI(SCON.1)

    串行口发送中断标志位

    RI(SCON.0)

    串行口接收中断标志位

  • 相关阅读:
    npm install --save
    ajax总结
    javascript学习资料
    前端工具学习资料
    php学习资料
    Bootstrap学习资料
    css学习资料
    Express搭建一个Node项目
    网站性能优化
    POJ 1862 Stripies【哈夫曼/贪心/优先队列】
  • 原文地址:https://www.cnblogs.com/transmigration-zhou/p/12835700.html
Copyright © 2011-2022 走看看