[VI ĐIỀU KHIỂN PIC] - BÀI 3: CÁC HIỆU ỨNG LED ĐƠN - BeeLab

Monday, May 22, 2017

[VI ĐIỀU KHIỂN PIC] - BÀI 3: CÁC HIỆU ỨNG LED ĐƠN

PORT and TRIS Register in PIC Microcontroller






int B;
int8 a;
void main()
{
   while(TRUE)
   {
     
      // left
      B = 0X01;
      output_b(B);
      for(a=0;a<8;a++)
      {
         delay_ms(200);
         B = B<<1;
         output_b(B);
      }
      //right
      B = 0X80;
      output_b(B);
      for(a=0;a<8;a++)
      {
         delay_ms(200);
         B = B>>1;
         output_b(B);
      }
      // chase left
      delay_ms(200);
      B = 0X00;
      for(a=0;a<9;a++)
      {
         delay_ms(200);
         B = B<<1;
         B = B | 0X01;
         output_b(b);
      }
     
      // chase right
      delay_ms(200);
      B = 0X00;
      for(a=0;a<9;a++)
      {
         delay_ms(200);
         B = B>>1;
         B = B | 0X80;
         output_b(b);
      }
   }
}



=============================================
/*===========DUNG NUT NHAN=================*/

int B;
int8 a;
int trangthai=0;
void nutnhat()
{
   if(input(pin_d0)==0)
      {
        while(input(pin_d0)==0)
         {
            delay_ms(100);
         }
         trangthai=trangthai+1;
         //dieu kien cua bien tt
         if(trangthai>3) trangthai=0;
      }
}
void left()
{
   // left
      B = 0X01;// dat gia ban dau
      output_b(B);// hien thi
      for(a=0;a<8;a++)
      {
         delay_ms(200);//tri hoan
         B = B<<1;//dich led
         output_b(B);//cho hien thi
         nutnhat();      
      }
}
void right()
{
   //right
      B = 0X80;
      output_b(B);
      for(a=0;a<8;a++)
      {
         delay_ms(200);
         B = B>>1;
         output_b(B);
         nutnhat();
      }
}
void chase_left()
{
  
      // chase left
      delay_ms(200);
      B = 0X00;
      for(a=0;a<9;a++)
      {
         delay_ms(200);
         B = B<<1;
         B = B | 0X01;
         output_b(b);
         nutnhat();
      }
}
void chase_right()
{
   // chase right
      delay_ms(200);
      B = 0X00;
      for(a=0;a<9;a++)
      {
         delay_ms(200);
         B = B>>1;
         B = B | 0X80;
         output_b(b);
         nutnhat();
      }
}
void main()
{

   while(TRUE)
   {
      switch (trangthai)
      {
         case 0: left();break;
         case 1: right();break;
         case 2: chase_left();break;
         case 3: chase_right();break;
      }
   }
}