我是靠谱客的博主 无私春天,最近开发中收集的这篇文章主要介绍中断&定时器(三)单片机中断简介中断允许寄存器IE中断优先级寄存器IP定时器中断如何计算定时器的初值 中断服务程序的写法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

单片机中断简介

52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下:

  1. INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起
  2. INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起
  3. T0    - 定时器/计数器0中断, 由T0计数器计满回零引起
  4. T1    - 定时器/计数器1中断, 由T1计数器计满回零引起
  5. T2    - 定时器/计数器2中断, 由T2计数器计满回零引起
  6. TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起

其中T2是52单片机特有的。

中断允许寄存器IE

 

中断优先级寄存器IP

 

 

定时器中断

51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1

52单片机内部多一个T2定时器/计数器

 

它们既有定时功能,也有计数功能。可通过设置与它们相关的特殊功能寄存器选择启用定时功能还是计数功能。

这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时功能后,定时器便在晶振的作用下自动开始计时,但定时器的计数器计满后,会产生中断。

 

定时器/计数器的实质是加1计数器(16位), 由高8位和低8位两个寄存器组成,

TMOD:定时器/计数器的工作方式寄存器,确定工作方式和功能。

TCON:控制寄存器,控制T0,T1的启动和停止及设置溢出标志。

 

TMOD:定时器/计数器工作方式寄存器

 

 TCON:定时器/计数器控制寄存器

       

 

 每个定时器有4种工作方式,可通过设置TMOD寄存器中的M1和M0来进行工作方式选择。

方式1的技术位数是16bit,对T0来说, TL0寄存器作为低8bit,TH0寄存器作为高8bit,组成了16bit加1计数器,逻辑结构框图如下

 

 

如何计算定时器的初值

 

 中断服务程序的写法

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit led1 = P0^0;
uchar num = 0;

//主程序
void main()
{
    TMOD = 0x01;
    TH0 = (65536 - 45872) / 256;    // 设置定时器0为工作方式1(M1M0为01)
    TL0 = (65536 - 45872) % 256;    // 装初值11.0592M晶振定时50ms数位45872
    EA = 1;                            // 开总中断
    ET0 = 1;                        // 开定时器0中断
    TR0 = 1;                        // 启动定时器0
    while(1)
    {
        if (num == 20)
        {
            num = 0;
            led1 = ~led1;
        }
    }
}


void T0_time() interrupt 1
{
    TH0 = (65536 - 45872) / 256;
    TL0 = (65536 - 45872) % 256;
    num++;
}

 

最后

以上就是无私春天为你收集整理的中断&定时器(三)单片机中断简介中断允许寄存器IE中断优先级寄存器IP定时器中断如何计算定时器的初值 中断服务程序的写法的全部内容,希望文章能够帮你解决中断&定时器(三)单片机中断简介中断允许寄存器IE中断优先级寄存器IP定时器中断如何计算定时器的初值 中断服务程序的写法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部