找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这种单片机led灯按键开关中断程序为什么会混乱

[复制链接]
ID:719916 发表于 2020-3-31 23:59 | 显示全部楼层 |阅读模式
这个第一种程序使用proteus仿真后按键INT0不能使八个led灯全部亮起来,而是会随机亮其中的几个。

#include <reg52.h>
#define uchar unsigned char
uchar         aa=0x00,bb=0xff;

void LEDON (void) interrupt 0
{
        P1=aa;
}
void LEDON1 (void) interrupt 2
{
        P1=bb;
}
void main (void)
{
        EX0 = 1;
        EX1 = 1;
        PX0 = 1;
        PX1 = 1;
        IT0 = 1;
        IT1 = 1;
        EA = 1;
}


第二种程序加了while(1)之后使用proteus可以使其正常工作

#include <reg52.h>
#define uchar unsigned char
uchar         aa=0x00,bb=0xff;

void LEDON (void) interrupt 0
{
        P1=aa;
}
void LEDON1 (void) interrupt 2
{
        P1=bb;
}
void main (void)
{
while(1)
{
        EX0 = 1;
        EX1 = 1;
        PX0 = 1;
        PX1 = 1;
        IT0 = 1;
        IT1 = 1;
        EA = 1;
}
}



第三种程序不使用aa和bb,直接使用P1口可以正常工作

#include <reg52.h>
#define uchar unsigned char

void LEDON (void) interrupt 0
{
        P1=0x00;
}
void LEDON1 (void) interrupt 2
{
        P1=0xff;
}
void main (void)
{
        EX0 = 1;
        EX1 = 1;
        PX0 = 1;
        PX1 = 1;
        IT0 = 1;
        IT1 = 1;
        EA = 1;
}


本人新学单片机,个中程序略为简陋,各位大佬将就着看,里面有什么错误欢迎指出。谢谢!!!

回复

使用道具 举报

ID:226798 发表于 2020-4-1 03:13 来自手机 | 显示全部楼层
大循环了解下
回复

使用道具 举报

ID:337070 发表于 2020-4-1 14:52 | 显示全部楼层
大循环了解下
回复

使用道具 举报

ID:337070 发表于 2020-4-2 21:56 | 显示全部楼层
中程序略为简陋
回复

使用道具 举报

ID:337070 发表于 2023-8-26 16:09 | 显示全部楼层
大循环了解下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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