วันพฤหัสบดีที่ 22 มกราคม พ.ศ. 2558

คำสั่งวนลูป forแบบ i PLUS PLUSกินรอมมากกว่า i MINUS MINUS MCS51



คำสั่งวนลูป 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
  } 
}


ไม่มีความคิดเห็น: