单片机交流
直播中

abdkjshd

8年用户 1123经验值
擅长:可编程逻辑
私信 关注
[问答]

萌新求助,请大佬分享一个基于Proteus仿真51单片机外部中断实验程序

萌新求助,请大佬分享一个基于proteus仿真51单片机外部中断实验程序

回帖(1)

刘建国

2021-10-13 14:32:01
一、实验目的
1.进一步熟悉利用 PROTEUS、Keil uVision5 等软件的使用方法。
2.理解单片机的中断、中断优先级原理及中断过程,掌握中断服务子程序的编写方法。

3.熟悉数码管的显示原理。
二、实验任务 1.基本任务
已知单片机的 P0 口接了一位七段数码管,当无外部中断(外部中断 0)时,数码
管按 a~g 段依次点亮,不断循环显示;当有外部中断(按钮被按下,P3.2 有下降沿电
压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭闪烁显示 8 次后,返回主程序
继续按段顺序点亮。请在 Proteus 中画出电路原理图,并编写程序仿真实现上述功能。
2.拓展任务(若未做,则实验报告也无需体现,以保证实验视频和实验 报告的一致性!)

在以上基本任务的基础上,加入一个声光报警器和外部中断 1,当有外部中断 1 时,
系统会产生声光报警。假设外部中断 1 的优先级高于外部中断 0。请在 Proteus 中画出
电路原理图,并编写程序仿真实现上述功能。








#include "stc15.h"  //单片机头文件
#include "intrins.h"  //延时函数左右移函数头文件
unsigned char i;  //定义字符i
void Delay1000ms()                //@11.0592MHz 1000ms延时函数
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 43;
        j = 6;
        k = 203;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void main()
{
        P0=0x00; //单片机自启动时为高电平,需先对P0端置0
        IE0=0;  //防止启动时自动进行一次中断
        IE1=0;  //防止启动时自动进行一次中断
        P0M0=0x00;  //准双向口配置
        P0M1=0x00;  //准双向口配置
        EA=1;  //全局中断使能位使能
        EX0=1;  //外部中断位0中断位使能
        EX1=1;  //外部中断位1中断位使能
        IT0=1; //设置中断0为下降沿触发
        IT1=1;  //设置中断1为下降沿触发
        PX0=0;  //外部中断源0低优先级
        PX1=1;  //外部中断源1高优先级
                while(1)  //死循环
        {
                for(i=0;i<7;i++)  //循环7次使a~g依次点亮
                {   
                        Delay1000ms();
                P0=_crol_(0x01,i); //左移函数从0x01开始左移循环7次
                }
        }
}
void INT0_ISR(void) interrupt 0  //外部中断源0的中断服务函数
{   
   Delay1000ms();  //消抖
         for(i=0;i<8;i++)   //亮灭循环8次
        {
                P0 = 0x7f;  //配置字形8的段码为7f
                Delay1000ms();
                P0 = 0x00;   //使字形8熄灭
                Delay1000ms();
        }
}
void INT1_ISR(void) interrupt 2  //外部中断源1的中断服务函数
{   
         Delay1000ms();  //消抖
        {
                P07 = 1;  //配置P07端口使声光报警启动
                Delay1000ms();
        }
}

举报

更多回帖

发帖
×
20
完善资料,
赚取积分