标题: 请教51单片机中断问题!为什么P3^2接了GND,数码管还是在累加? [打印本页]

作者: 燦洋    时间: 2019-3-11 22:07
标题: 请教51单片机中断问题!为什么P3^2接了GND,数码管还是在累加?
为什么P3^2接了GND,数码管还是在累加?
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led=P0^0;
void delay(uint k);
void main()
{
        uchar i;
        uchar code table[]={0xc0,0xf9,0xa4,0xb0,
        0x99,0x92,0x82,0xf8,
        0x80,0x90,0x88,0x83,
        0xc6,0xa1,0x86,0x8e};
        EA=1;
        EX0=1;
        IT0=0;
        while(1)
        {
        for(i=0;i<16;i++)
                {
                        led=1;
                        P1=table[ i];
                        delay(1000);
                }
        }
}
void delay(uint k)
{
        uchar i;
        uint j;
        for(j=k;j>0;j--)
                for(i=110;i>0;i--);
}
void exter0() interrupt 0
{
        led=0;
}




作者: yoxi    时间: 2019-3-12 06:43
你的中断是下降沿在触发,中断内的任务完成后就要返回中断,哪怕你一直低电平也没用
作者: HC6800-ES-V2.0    时间: 2019-3-12 08:46
你设置的是外部中断。
当中断发生时,没有累加啊。
当退出中断后,程序要继续执行嘛,所以就接着刚才中断的程序继续执行,所以,又开始累加了。由于你的中断程序没有让累加的值做改变,所以,就会继续原来的值去累加。

作者: 燦洋    时间: 2019-3-13 16:18
HC6800-ES-V2.0 发表于 2019-3-12 08:46
你设置的是外部中断。
当中断发生时,没有累加啊。
当退出中断后,程序要继续执行嘛,所以就接着刚才中断 ...

中断不是程序该停到中断处吗,给高电平才继续执行吗

作者: zhb2004xp    时间: 2019-3-14 00:34
燦洋 发表于 2019-3-13 16:18
中断不是程序该停到中断处吗,给高电平才继续执行吗

你对单片机的中断理解有误!触发中断会执行中断服务程序,而并不停止。你如果想停留在中断处,按照你的程序,在外部中断服务函数中把外部中断关闭,




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1