这个第一种程序使用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;
}
本人新学单片机,个中程序略为简陋,各位大佬将就着看,里面有什么错误欢迎指出。谢谢!!!
|