การทอลองอินพุตระดับไบต์
การทดลองนี้เป็นการรับอินพุตระดับไบต์โดยกำหนดให้ขาพอร์ต 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 เป็นการประกาศใช้งานพอร์ต B ทั้หมดให้เป็นอินพุต
บรรทัดที 10 เป็นการประกาศใช้งานพอร์ต D ทั้หมดให้เป็นเอาต์พุต
บรรทัดที 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
แสดงความคิดเห็น
Click to see the code!
To insert emoticon you must added at least one space before the code.