必威体育Betway必威体育官网
当前位置:首页 > IT技术

基于80C51单片机——中断小结

时间:2019-10-01 02:42:12来源:IT技术作者:seo实验室小编阅读:60次「手机版」
 

80c51

最近看了一下80C51单片机的中断部分的实验,做一些笔记,方便以后学习查找。

首先说一下什么是中断吧,中断是指cpu在执行当前程序的过程中,由于某种随机出现的外设(外部设备)请求或CPU内部的异常事件,使CPU暂停正在执行的程序而转去执行相应的服务处理程序;当服务处理程序运行完毕之后,CPU再返回到暂停处继续执行原来的程序。

那什么是中断嵌套呢?简单点说就是低优先级的中断可以被高优先级的中断源所中断,等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序。

举个简单的栗子吧(之前写过但不知道怎么删了,,又让我重新编辑):比如我们就是一个CPU,我们当前在洗衣服(当前程序),突然电话铃声响了(中断来了),它的优先级肯定高于洗衣服嘞,此时我们会停止洗衣服而转去接电话,等到电话打完,我们继续回去洗衣服(也就是所谓的“”等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序“”)。

好了,接下来我们来说说怎么去设置一个中断:

TCON(定时器/计数器控制寄存器)高4位是设置定时计数器,低4位是用来设置外部中断

这里写图片描述

* IT0和IT1是设置外部中断的触发方式

当其为0时,为低电平触发方式。

当其为1时,为负跳变触发方式。

* IE0和IE1是外部中断标志位。

* 其他事定时/计数器的控制。

* TF0和TF1是定时器的中断标志。

* TR0和TR1是打开相应的定时器。

中断允许寄存器IE

这里写图片描述

* EA总中断允许。

0时:CPU屏蔽所有的中断请求。

1时:CPU开放所有的中断。

* ES串行口中断允许位。

0时:禁止串行中断。

1时:允许串行中断。

* ET1和ET0:分别是定时计数器1和定时计数器0中断允许位。

0时:禁止相应的定时计数器中断。

1时:允许相应的定时计数器中断。

 *  EX1和EX0:分别是外部中断1和外部中断0的中断允许位
    0时:禁止相应的外部中断。
    1时:允许相应的外部中断。

中断优先级寄存器IP

这里写图片描述

* PS:串行口中断优先级

0时:串行口中断优先级定义为高优先级

1时:串行口中断优先级定义为低优先级

 *  PT1和PT0:分别是定时计数器1和定时计数器0的中断优先级
    0时:相应的定时计数器中断为高优先级
    1时:相应的定时计数器中断为低优先级

 *  PX1和PX0:分别是外部中断1和外部中断0的中断优先级
    0时:相应的外部中断为高优先级
    1时:相应的外部中断为低优先级

**一般默认低优先级,不是特别需求不用改**********

中断地址

这里写图片描述

中断函数的写法

void  函数名()interrupt 中断编号
{
    ;
}

接下来我们来说一下定时器:这里写图片描述

定时/计数器实质上是一个加1计数器。它随着计数器的而输入脉冲进行自加1,也就是每来一个脉冲,计数器 就自动加1,当加到计数器为全1 的时候,再输入一个脉冲使计数器归零,且计数器的溢出使相应的中断标志位置为1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到,如果工作于计数模式,则表示计数值已满。

**可见,由溢出时计时器的值减去计数初值才是加1计数器的计值。*

TMOD(工作方式寄存器)

这里写图片描述

* GATE:门控制

0时:仅有运行控制位TRx来控制定时/计数器的开启。

1时:由TRx和外部中断脉冲计数(用于计算外部中断负跳变的次数)

* C/T:计数器模式和定时器模式选择

0时:选择定时器模式。

1时:选择计数器模式。

M1和M0:选择定时/计数器的工作方式

这里写图片描述

计数器初值的计算:

  • 机器周期:CPU完成一个基本操作所需要的时间
  • 机器周期=1/单片机的时钟频率。
  • 51单片机内部时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。比如你用的是12MHZ的晶振,那么单片机内部的时钟频率就是 12/12MHZ,当你使用12MHZ的外部晶振的时候,机器周期=1/1M=1us.

  • 而我们定时1ms的初值是多少呢,1ms/1us=1000.

    也就是要计数1000个数,初值=6553-1000+1(因为实际上计数器计数到66636才溢出)=64536=FC18H

    定时/计数器的工作方式:

    这里写图片描述这里写图片描述工作方式2特别适合于用作比较精确的脉冲信号发生器工作方式3将T0分成为两个独立的8位计数器TL0和TH0

    定时器操作步骤:

    • 选择工作方式(设置M1,M0)
    • 选择控制方式(设置GATE)
    • 选择定时器还是计数器模式(设置C/T)
    • 给定时/计数器赋初值(设置THx和TLx)
    • 开启定时器中断(设置ET0或ET1)
    • 开启总中断(设置EA)
    • 打开计数器(设置TR1或TR0)
    void Timeconfiguration()
    {
        TMOD = 0x01;         //定时器0选择工作方式1
        TH0 = 0x3C;          //设置初始值
        TL0 = 0xB0;          
        EA = 1;              //打开总中断
        ET0 = 1;             //打开定时器0中断
        TR0 = 1;             //启动定时器
    }

中断操作步骤:

* 打开总中断(设置EA)

* 设置外部中断的触发方式(设置IT0或IT1)

* 设置外部中断的中断允许位(设置EX0或EX1)

* 设置外部中断的优先级(一般默认低优先级,不是特别需求不用改,设置PX0或PX1)

void InConfiguration()
{
        EA=1;             //打开总中断
        IT1=1;        //设置外部中断触发方式为负跳变触发方式
        EX1=1;        //允许外部中断1发生中断
        PX1=0;        //相应的外部中断为高优先级
}

好了,这部分内容就先小结到这,,要去睡觉了。不能熬夜!不能熬夜!不能熬夜!

相关阅读

合泰Holtek单片机入门

初次接触HT66F018初识合泰环境安装软件安装资料下载芯片介绍CPU 特性周边特性综合初识合泰 由于项目需要,首次使用合泰Holtek的一

基于AT89C51单片机 的音乐盒(十分简单)

#include<reg51.h>   //包含51单片机寄存器定义的头文件sbit sound=P1^6;    //蜂鸣unsigned int C;     //储存定时器的定

单片机IO口悬空,高阻态究竟是什么意思?

悬空,顾名思义,就是不接任何器件啦高阻态:无上拉和无下拉,对外表现出电平不确定性不是所有的单片机都支持三态输出。三态输出一般由

蓝桥单片机之 客观题

不积跬步无以至千里,不积小流无以成江海。 再推荐一个博主的蓝桥博客,也挺不错<传送门>… 1、IAP15F2K61S2单片机具有 ___2____KByte

单片机到底是个什么东西

1 从电路到集成电路 1.1 电路发展变化的趋势 (1)功率。电子设备越来越省电,待机时间越来越长,工作电压越来越低。 (2)体积。体

分享到:

栏目导航

推荐阅读

热门阅读