這個第一種程序使用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;
}
本人新學單片機,個中程序略為簡陋,各位大佬將就著看,里面有什么錯誤歡迎指出。謝謝!!!
|