คำสั่งวนลูป forแบบ
i PLUS PLUSกินรอมมากกว่า i MINUS MINUS MCS51
22/1/2558 SONGCHAI PRAPATRUNGSEE
คำสั่งวนลูป for(i=0;i<TIME;i++)
กินรอมมากกว่า
for(i=TIME;i>0;i--)
คำสั่งวนลูป for แบบ
i++ กินรอมมากกว่า i--
ขึ้นอยู่กับสถานะการณ์
บางครั้งก็กินรอมน้อยกว่า
ส่วนใหญ่จะกินรอมมากกว่า
ส่วนแรมกินเท่ากันครับ
==========================
#include <REGX52.H>
/*USE 12
MHZ*/
/*IF PRESS P3.2
AND PRESS P3.3 TOGETHER INTERRUPT
EX0 WORK BUT INTERRUPT EX1 NOT WORK
BECAUSE INTERRUPT EX0 IMPORTANT
THAN EX1
EX0 AND EX1
WORK AT LOGIC LOW*/
/*IF SET IT0=1;
EX0 WORK AT LOGIC HIGH TO LOW
IF SET IT1=1; EX1 WORK AT LOGIC HIGH TO LOW
IF NOT SET, EX0 AND EX1 WORK AT LOGIC LOW*/
sbit SW1=P3^2;
sbit SW2=P3^3;
unsigned char RTOL[]={0X01,0X02,0X04,0X08,
0X10,0X20,0X40,0X80};
unsigned char LTOR[]={0X80,0X40,0X20,0X10,
0X08,0X04,0X02,0X01};
void DELAY_MS(unsigned int TIME)//DELAY_MS HAVE INPUT
{
unsigned int
i,j;
//for(i=0;i<TIME;i++)
for(i=TIME;i>0;i--)
{
//for(j=0;j<124;j++);
for(j=124;j>0;j--);
}
}
void R_TO_L()interrupt 0//interrupt
0=VECTOR OF EX0
{
char i;
for(i=8;i>0;i--)
{
P2=RTOL[i-1];
DELAY_MS(500);
}
}
void L_TO_R()interrupt 2//interrupt
2=VECTOR OF EX2
{
unsigned char i;
for(i=8;i>0;i--)
{
P2=LTOR[i-1];
DELAY_MS(500);
}
}
void main()
{
EA=1;
EX0=1;//ENABLE
INTERRUPT EXTERNAL TIMER0 PIN INT0
EX1=1;//ENABLE
INTERRUPT EXTERNAL TIMER1 PIN INT1
//IT0=1;//SET1 ACTIVE HIGH TO LOW /SET0 ACTIVE LOW
//IT1=1;//SET1 ACTIVE HIGH TO LOW /SET0 ACTIVE LOW
//IE0=1;//SET1 INTERRUPT WHEN START ONLY
//IE1=1;//SET1 INTERRUPT WHEN START ONLY
while(1)
{
P2=0X00;//P2 LOGIC LOW
DELAY_MS(500);//500MS
P2=0XFF;//P2 LOGIC HIGH
DELAY_MS(500);//500MS
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น