找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2313|回复: 2
收起左侧

单片机中断嵌套实验程序与Proteus仿真图

[复制链接]
ID:997969 发表于 2021-12-28 20:48 | 显示全部楼层 |阅读模式
中断嵌套。附件里包含源代码,proteus工程文件。
使用一个外部中断和定时器中断,通过P1口连接的八个发光二极管来显示中断的作用。外部中断未发生时,即引脚INT0的按键开关没有按下时,系统通过定时器定时中断的方法,使LED呈流水灯显示,当INT0脚的按键开光按下,即产生外部中断,外部中断INT0打断定时器的定时中断,从而控制8个LED闪烁显示。当按键开关松开,继续呈流水灯显示。本实验中外部中断0设置为高优先级中断,定时器中断设置为低优先级中断。
电路原理图:
图片1.png
电路工作原理的重点说明:发光二极管为共阳极连接,当对应P1口输出0时,发光二极管发光。K1按键没按下时,INT0=1,当K1按键按下时,INT0=0。
源代码
图片2.png
控制程序的重点说明:PX0=1外部中断为高优先级,PT0=0定时器中断为低优先级,IT0=0将外部中断0设置为电平触发中断方式,当按键K1按下时,为低电平触发中断,当按键松开时为高电平,外中断0的中断服务函数执行完后,中断结束,回到定时器T0的中断服务函数。

单片机源程序如下:
  1. #include <reg51.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char//延时函数Delay( ),i为形式参数,不能赋初值
  5. void delay(uint i) {
  6. uchar j;
  7. for(;i>0;i--)
  8. for(j=0;j<125;j++)
  9. {;} //空函数
  10. }
  11. void main( )
  12. {                   //主函数
  13.   
  14.   TMOD=0x01;    //定时器t0为方式1
  15.   TH0=0xee;     //设置定时器初值
  16.   TL0=0x00;
  17.   EA=1; //总中断允许
  18.   ET0=1;//允许定时器t0中断
  19.   TR0=1;//启动定时器t0
  20.   EX0=1; //允许外部中断0中断
  21.   IT0=0; //选择外部中断0为电平触发中断方式
  22.   PX0=1;//外部中断为高优先级
  23.   PT0=0;//定时器中断为低优先级
  24.   P1=0xff;
  25.   while(1);
  26.   {;}    //循环等待

  27. }
  28. void timer0() interrupt 1 //T0中断程序
  29. {
  30.   uchar i;
  31.   uchar display[9]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        //流水灯显示数据组
  32.   TH0=0xee;
  33.   TL0=0x00;

  34.   while(1)
  35.   {
  36.      P1=0xff;
  37.          for(i=0;i<9;i++)
  38.          {
  39.            delay(500);
  40.            P1=display[i];
  41.          }
  42.   }
  43. }
  44. void int0_isr(void) interrupt 0 //外中断0的中断服务函数
  45. {
  46.    P1=0;
  47.    delay(700);
  48.    P1=0xff;
  49.    delay(700);
  50. }   
复制代码

Keil代码与Proteus仿真下载:
中断嵌套.zip (34.25 KB, 下载次数: 18)

评分

参与人数 1黑币 +30 收起 理由
admin + 30 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1070917 发表于 2023-4-10 19:34 | 显示全部楼层
确实有用能够解决关键问题
回复

使用道具 举报

ID:161164 发表于 2023-4-11 10:46 | 显示全部楼层
在定时中断里用while(1)就是这实验的重点
正常编写代码要避免这样写
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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