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

                การทดลองนี้เป็นการรับอินพุตระดับไบต์โดยกำหนดให้ขาพอร์ต D  เป็นเอาต์พุตเพื่อบอกสถานการณ์ทำงานของ   LED_1 ถึง LED_8  ที่ขาพอร์ต RD0-RD7  จากนั้นจะรับสัญญาณอินพุตที่พอร์ต B ที่ขาพอร์ต RB0-RB7   ซึ่งเมือมีการกดสวิตช์ ตำแหน่ง บิตใด LED ของบิตนั้น จะสว่าง

รูปแสดงวงจรการทำงานการทอลองอินพุตระดับไบต์
////////////// TEST INPUT BYTE ///////////////////

/*1*/   #include <16F877A.h>
/*2*/   #FUSES NOWDT,HS,NOPROTECT,NODEBUG,NOLVP,NOWRT              
/*3*/   #use delay(clock=20000000)
/*4*/   #use fast_io(B)
/*5*/   #use fast_io(D)
/*6*/   void main()
/*7*/   {
/*8*/       int button;
/*9*/       set_tris_B(0b11111111);
/*10*/      set_tris_D(0b00000000);
/*11*/      setup_comparator(NC_NC_NC_NC);
/*12*/      SETUP_ADC_PORTS(NO_ANALOGS);
/*13*/      while(true)
/*14*/       { 
/*15*/          button=~input_b();
/*16*/           output_d(button);
/*17*/        }
/*18*/    }
//////////////////////////////////////////////////////////
โปรแกรมที่ใช้ในการทดลองอินพุตระดับไบต์

วีดีโออธิบายการทำงาน

อธิบายการทำงาน
บรรทัดที่ 1 เป็นการเรียกใช้ 16f887A.h ชึ่งจะเก็บไรบลารีต่างๆของไมโครคอนโทรลเลอร์เบอร์ 16f877A
บรรทัดที่ 2 เป็นการกำหนดค่าคอนฟิกให้กับไมโครคอนโทรลเลอร์
บรรทัดที่ 3 เป็นการเรียกใช้ฟังก์ชันของเวลา
บรรทัดที่ 4 เป็นการประกาศใช้งานพอร์ต B
บรรทัดที่ 5 เป็นการประกาศใช้งานพอร์ต D
บรรทัดที่ 6 เป็นฟังก์ชันเริมต้นการทำงานของโปรแกรม
บรรทัดที่ 8 เป็นการกำหนดตัวแปร ชนิด int ชื่อตัวแปล button
บรรทัดที 9 เป็นการประกาศใช้งานพอร์ต ทั้หมดให้เป็นอินพุต
บรรทัดที 10 เป็นการประกาศใช้งานพอร์ต ทั้หมดให้เป็นเอาต์พุต
บรรทัดที 11 เป็นฟังก์ชันกำหนดไม่ให้มีฟังก์ชัน Comparator
บรรทัดที 12 เป็นฟังก์ชันกำหนดค่าฟังก์ชันแอนะล็อก(Analog) ชึ้งในโปรแกรมจำเป็นต้องปิดฟังก์ชันนี้ไว้เนื้องจากพอร์ต B สามารถเป็นได้ทั้งอินเพตและเอาต์พุตหรือแอนะล็อกอินพ่ต
บรรทัดที 13 เป็นคำสั่งวนรอบ While (true)  กำหนดให้เป็น TRUE เพื่อให้โปรแกรมทำงานวนรอบต่อเนื่อง
บรรทัดที่ 15 เป็นฟังก์ชั่นอ่านค่าอินพุตที่ พอร์ต B  จะอ่านค่าตั้งแต่พอร์ต  RD0- DB7 เก็บไว้ในตัวแปร button  โดยจะมี ตัว (Grave Accent) “   ~  “   หรือ ตัวหนอนเป็นตัวที่กลับบิตค่า เช่น เมื่อรับอินพุต “1111”  ก็จะได้เป็น “ 0000 0000 ”
 บรรทัดที่ 16 เป็นฟังก์ชันแสดงผลทางเอาต์พุต โดยส่งค้าตัวแปร button ไปยังพอร์ต D

เกร็ดความรู้
   “   ~  “   Grave Accent   หรือ ตัวหนอน ในโปรแกรม สามารถ กลับบิตข้อมูลได้
            ตัวอย่าง
            เมือรับ   Input_b(0b00000000) ปกติค่าที่ได้ ก็จะเป็น 0000 0000
           แต่ถ้าตัวหนอนหน้าคำสั่ง ~ Input_b(0b00000000)
             ก็จะได้ ~ Input_b(0b00000000) ปกติค่าที่ได้ ก็จะเป็น 1111 1111

About Author

Advertisement

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

 
Top