找回密码
 注册

QQ登录

只需一步,快速开始

搜索

51单片机的中断系统基础知识

[复制链接]
coolfire 发表于 2021-6-5 01:19:20 | 显示全部楼层 |阅读模式
中断:停下来正在做的事,去做别的事。CPU终止正在执行的程序,转而去做中断信号发生的程序,执行完此处程序,回到原位置。
中断源:MCS-51单片机共有五个位置可以产生中断信号:外部中断INT0和INT1,定时器/计数器T0和T1,串行中断。
中断优先级:当有多个中断源向CPU发生信号时,处理中断需要优先级的设置。外部中断INT0优先级最高,串行中断优先级最低。需要设置IP寄存器。
中断源寄存器:TCON和SCON。TCON主要包含了外部中断触发方式和外部中断请求标志。当IT0、IT1为0,则是电平触发方式(低电平有效);为1时,负跳变触发方式。IE0、IE1在中断发出请求后,置为1.中断完成后,自动清零。
中断允许寄存器:IE,IE寄存器包含了总开关、外部中断、串行口中断、定时器中断等内容。
中断优先级控制寄存器:IP。对应位置为1的话,高优先级;为0,低优先级。

-----之前实现跑马灯都需要设定一个延时函数,现在有了定时器、中断,不需要设定延时函数
  1. 用定时器T0的中断方式实现跑马灯控制
  2. #include<reg52.h>
  3. sbit D1=P2^0;
  4. void main()

  5. {
  6.         char A;
  7.         EA=1;
  8.         ET0=1;
  9.         TMOD=0x01;
  10.         TH0=(65536-46083)/256;
  11.         TL0=(65536-46083)%256;
  12.         TR0=1;
  13.         A=0xfe;
  14.         D1=A;
  15.         while(1);
  16. }
  17. void Time(void) interrupt 1 using 0
  18. {
  19.         char A;
  20.         A=A<<1;
  21.         if (A !=0xff)
  22.         {
  23.                 A=A|1;
  24.         }
  25.         else
  26.                 A=0xfe;
  27.         D1=A;
  28.         TH0=(65536-46083)/256;
  29.         TL0=(65536-46083)%256;
  30. }
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-3-29 18:24

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表