找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 392|回复: 5
打印 上一主题 下一主题
收起左侧

单片机程序出现问题 中断不行,加载不了主程序里

[复制链接]
跳转到指定楼层
#
中断不行,加载不了主程序里

51hei4.png (7.87 KB, 下载次数: 23)

51hei4.png

51hei3.png (6.8 KB, 下载次数: 22)

51hei3.png

51hei2.png (3.89 KB, 下载次数: 24)

51hei2.png

51hei1.png (3.3 KB, 下载次数: 24)

51hei1.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

5#
ID:278457 发表于 2024-1-23 23:43 | 只看该作者
谢谢各位
回复

使用道具 举报

地板
ID:883242 发表于 2024-1-23 13:02 | 只看该作者
楼上说的对,就是没有理解中断在硬件上面的意义,才会写出这么不符合逻辑的软件。
回复

使用道具 举报

板凳
ID:1064915 发表于 2024-1-23 09:45 | 只看该作者
中断,当启动位打开,CNT计数溢出的时候,会触发溢出标志位置位,进而送入中断系统(比如日常生活中,我们在做一件事,突然烧水壶开了,我们即要先暂时放弃做目前的事,转而去处理烧开水这个中断事件,当处理完成过后,又返回来继续处理之前的事)
而这里的举例:处理烧开水即中断程序;之前所做的事即main函数里面的主程序#include<reg52.h>
sbit LED=P1^0;
sbit buzzer=P2^0;

void delay(void);
void main(void)
{       
        IT0=1;//设置外部中断触发方式为下降沿触发
        EX0=1;//对应的中断允许位打开
        EA=1;//总中断打开
        PX0=0;//IE0低优先级
        buzzer=0;//开启蜂鸣
        delay();
        buzzer=1;//关闭蜂鸣
        while(1)
        {
                LED=0;//点亮LED
                delay();
                LED=1;//熄灭LED
                delay();
    }       
}

//中断服务程序
void INT0_ISR(void) interrupt 0
{
        //IE0=0;对应的中断标志位是硬件自动清零,所以无需再软件清零
        buzzer=0;//开启蜂鸣
        delay();
        buzzer=1;//关闭蜂鸣
}

void delay(void)
{
        unsigned char i,j;
        for(i=0;i<200;i++)
        {
                for(j=0;j<200;j++){;}
        }
}


回复

使用道具 举报

沙发
ID:226055 发表于 2024-1-23 09:43 | 只看该作者
    定时器初始化里面开启中断即可,程序主循环里面不需要调用中断服务函数。换句话说,需要调用,那么中断还有什么意义?
回复

使用道具 举报

楼主
ID:69038 发表于 2024-1-23 09:42 | 只看该作者
中断不用声明;
中断不应该放在main中,更不应该放在while(1)里。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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