找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2005|回复: 4
收起左侧

请教51单片机中断问题!为什么P3^2接了GND,数码管还是在累加?

[复制链接]
ID:438858 发表于 2019-3-11 22:07 | 显示全部楼层 |阅读模式
为什么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;
}



回复

使用道具 举报

ID:473159 发表于 2019-3-12 06:43 来自手机 | 显示全部楼层
你的中断是下降沿在触发,中断内的任务完成后就要返回中断,哪怕你一直低电平也没用

评分

参与人数 2黑币 +20 收起 理由
正规007 + 15 回帖助人的奖励!
燦洋 + 5

查看全部评分

回复

使用道具 举报

ID:164602 发表于 2019-3-12 08:46 | 显示全部楼层
你设置的是外部中断。
当中断发生时,没有累加啊。
当退出中断后,程序要继续执行嘛,所以就接着刚才中断的程序继续执行,所以,又开始累加了。由于你的中断程序没有让累加的值做改变,所以,就会继续原来的值去累加。

评分

参与人数 1黑币 +5 收起 理由
燦洋 + 5

查看全部评分

回复

使用道具 举报

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

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

使用道具 举报

ID:234075 发表于 2019-3-14 00:34 | 显示全部楼层
燦洋 发表于 2019-3-13 16:18
中断不是程序该停到中断处吗,给高电平才继续执行吗

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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