#include<reg51.h>
unsigned char flag=0;
sbit p33=P3^3;
unsigned char code port3[4][4]=
{
0x28,0x28,0x28,0x28,
0x29,0x29,0x29,0x29,
0x29,0x29,0x29,0x29,
0x29,0x29,0x29,0x29,
};
unsigned char code port1[4][4]=
{
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x20,0x20,0x20,0x20,
0x24,0x24,0x24,0x24,
};
main()
{
unsigned char i;
unsigned int j,count=0;
EA=1; //總中斷允許
IT0=1; //脈沖觸發(fā)方式,下降沿有效
EX0=1; //外中斷0允許
while(1)
{
while(1)
{
if(flag==1) break;
}
flag=0;
for(i=0;i<4;i++)
{
while(1)
{
for(j=0;j<4;j++)
{
P3=port3[j];
P1=port1[j];
}
if(++count==8000) {count=0;break;}
}
}
p33=0; //本單片機(jī)效果走完,改變p33,使下一單片機(jī),外部中斷0下降沿觸發(fā)
}
}
void int0(void) interrupt 0
{
flag=1;
}
對程序稍加修改,昨天的程序,燈有點亂亮。
上電馬上中斷:由于單片機(jī)復(fù)位后,各IO口為高電平。我給發(fā)中斷信號的單片機(jī),程序起始就給下一個中斷入口置低電平,所以上電后,下一個單片機(jī)進(jìn)入中斷了。
漸變:本程序為四個亮度等級。第一行不斷輪流循環(huán)執(zhí)行了8000次。
break跳出整個循環(huán)。continue跳出本次循環(huán),重新執(zhí)行下一循環(huán)。goto語句應(yīng)盡量少用,通常與if連用,跳到對應(yīng)標(biāo)號處執(zhí)行
以下為發(fā)送中斷單片機(jī)的程序,沒有完成想要的效果。
#include<reg51.h>
sbit p33=P3^3;
unsigned int count=0;
main()
{
p33=0;
EA=1; //總中斷允許
IT0=1; //脈沖觸發(fā)方式,下降沿有效
EX0=1;
while(1)
{;}
}
void int0(void) interrupt 0
{
p33=1;
p33=0;
}
前一個單片機(jī)輸出p33,接后一單片機(jī)外部中斷0輸入p32
單片機(jī)為2051
