找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 2416 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-1-23 08:00

正文摘要:

中断不行,加载不了主程序里

回复

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 单片机教程网

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