tabs-chord tabs-chord Author ,
Title: การทดลองสวิทช์ สั่งให้ LED ติดทีละดวงด้วย สวิชต์ตัวเดียว
Author: tabs-chord
Rating 5 of 5 Des:
 การทดลองสวิทช์ สั่งให้ LED ติดทีละดวงด้วย สวิชต์ตัวเดียว การ ทดลองนี้เป็นการทดลองของเอาต์พุตทั้งพอร์ตโดยกำหนดให้ขาพอร์ต D เป็นเอาต์พุต ...

 การทดลองสวิทช์ สั่งให้ LED ติดทีละดวงด้วย สวิชต์ตัวเดียว

การ ทดลองนี้เป็นการทดลองของเอาต์พุตทั้งพอร์ตโดยกำหนดให้ขาพอร์ต D เป็นเอาต์พุต โดยต่อขาพอร์ต D ใช้งานตั้งแต่ DB0 - DB7  โดยที่ LED  จะติดเรียงไปเรื่อยๆ  และวนกลับมาใหม่ เมื่อเรากดสวิชต์ที่ พอร์ต RB0
 ฟังก์ชั่น rotate_left() เป็นฟังก์ชันการหมุนบิตของข้อมูลไปทางช้าย ของตัวแปร
   รูปแบบการใช้งาน: rotate_left(address,bytes);
   พารามิเตอร์:
      address : แอดเดรสของหน่วยความจำที่พอยน์เตอร์ชี้
       bytes   : จำนวนไบต์ที่ต่องการหมุน

วงจรที่ใช้ในการทดลอง 


โปรแกรมที่ใช้ในกาทดลอง

/*1*/   #include <16F877A.h>
/*2*/   #FUSES NOWDT,HS,NOPROTECT,NODEBUG,NOLVP,NOWRT           
/*3*/   #use delay(clock=20000000)
/*4*/   int i=0b00000001;
/*5*/   void main()
/*6*/   {
/*7*/     set_tris_b(0b00000000);
/*8*/     while(TRUE)
/*9*/      {
/*10*/      if(input(pin_b0)==0)
/*11*/      {
/*12*/       delay_ms(250);
/*13*/       rotate_left(&i,1) ;
/*14*/      }
/*15*/       output_D(i);
/*16*/      }
/*17*/  }

อธิบายการำทงาน

บรรทัดที่ 1 เป็นการเรียกใช้ 16f887A.h ชึ่งจะเก็บไรบลารีต่างๆของไมโครคอนโทรลเลอร์เบอร์ 16f877A
บรรทัดที่ 2 เป็นการกำหนดค่าคอนฟิกให้กับไมโครคอนโทรลเลอร์
บรรทัดที่ 3 เป็นการเรียกใช้ฟังก์ชันของเวลา
บรรทัดที่ 4 เป็นการกำหนดตัวแปร ชนิด int ชื่อตัวแปล i ให้มตัวแปร i เท่ากับ 0b00000001
บรรทัดที่ 5 เป็นฟังก์ชันเริมต้นการทำงานของโปรแกรม
บรรทัดที 7 เป็นการประกาศใช้งานพอร์ต D  ทั้หมดให้เป็นเอาต์พุต
บรรทัดที 8 เป็นคำสั่งวนรอบ While (true)  กำหนดให้เป็น TRUE เพื่อให้โปรแกรมทำงานวนรอบต่อเนื่อง
บรรทัด ที่ 10 เป็นคำสั่ง ตัดสินใจ เมื่อเรากดสวิชต์ ก็จะมีการทำงานภายใต้วงเล็บปีกกา คำสั่งในบรรทัดที่ 12 และ13 จะทำงานเมื่อเราปล่อยสวิชต์ ในบรรทัดที่ 12 และ 13 ก็จะหยุดการทำงาน


About Author

Advertisement

แสดงความคิดเห็น

 
Top