38
KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering Fish Robot Camp 2 เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที2 1 MICROCONTROLLER PIC 16F684 ในปจจุบันเครื่องใชไฟฟาอุปกรณอิเล็กทรอนิกสตลอดจนระบบโรงงานอุตสาหกรรมจะใชไมโครคอนโทรลเลอร ซึ่งติดตั้งอยูภายในเปนตัวควบคุมเกือบทั้งหมด ทําใหไมโครคอนโทรลเลอรกลายเปนอีกหนึ่งอุปกรณที่ผูผลิตสาร กึ่งตัวนําหลายๆ บริษัทใหความสนใจ และมีการแขงขันสูงมาก อุปกรณที่ใชไมโครคอนโทรลเลอรควบคุมมี มากมายหลายชนิด เชน อุปกรณเครื่องใชภายในบาน สัญญาณไฟจราจร รถยนต ตลอดจนระบบอุตสาหกรรม PLC, CNC, Robot เปนตน ไมโครคอนโทรลเลอรตระกูล PIC ซึ่งเปนไมโครคอมพิวเตอรแบบชิปเดี่ยว (single chip Microcontroller) ถูกใชงานอยางแพรหลาย การศึกษาเกี่ยวกับไมโครคอนโทรลเลอรจึงมีองคประกอบหลายอยาง เชน สถาปตยากรรมของไมโครคอนโทรลเลอร วงจรอิเลคทรอนิกส ตลอดจนภาษาที่จะใชในการเขียน ซึ่ง จะตองศึกษาควบคูกันไป โดยจะนําเสนอลําดับการทํางานดังตอไปนีไมโครคอนโทรลเลอร PIC 1. ไมโครคอนโทรลเลอรคืออะไร? ไมโครคอนโทรลเลอร คือ อุปกรณประเภทสารกึ่งตัวนําที่รวบรวมฟงกชั่นการทํางานตางๆ ไวภายในตัว ของมันเอง โดยมีโครงสรางใกลเคียงกับคอมพิวเตอร คือ ภายในประกอบดวยหนวยรับขอมูลและโปรแกรม หนวยประมวลผล หนวยความจํา หนวยแสดงผล ซึ่งสวนประกอบเหลานี้มีความสมบูรณในตัวของมันเอง ทําใหมี ขนาดเล็ก และสามารถเขียนโปรแกรมควบคุมการทํางานของอุปกรณตางๆ ที่เชื่อมตอกับตัวมัน งายตอการนําไป ประยุกตใชงาน ไมโครคอนโทรลเลอร ( Microcontroller) มาจากคํา 2 คํา คําหนึ่งคือ ไมโคร (Micro) หมายถึงขนาดเล็ก และคําวา คอนโทรลเลอร (controller) หมายถึงตัวควบคุมหรืออุปกรณควบคุม ดังนั้น ไมโครคอนโทรลเลอร จึง หมายถึงอุปกรณควบคุมขนาดเล็ก แตในตัวอุปกรณควบคุมขนาดเล็กนีไดบรรจุความสามารถที่คลายคลึงกับ

ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 1

MICROCONTROLLER PIC 16F684

ในปจจุบันเครื่องใชไฟฟาอุปกรณอิเล็กทรอนิกสตลอดจนระบบโรงงานอุตสาหกรรมจะใชไมโครคอนโทรลเลอรซึ่งติดต้ังอยูภายในเปนตัวควบคุมเกือบทั้งหมด ทําใหไมโครคอนโทรลเลอรกลายเปนอีกหน่ึงอุปกรณที่ผูผลิตสารก่ึงตัวนําหลายๆ บริษัทใหความสนใจ และมีการแขงขันสูงมาก อุปกรณที่ใชไมโครคอนโทรลเลอรควบคุมมีมากมายหลายชนิด เชน อุปกรณเครื่องใชภายในบาน สัญญาณไฟจราจร รถยนต ตลอดจนระบบอุตสาหกรรม PLC, CNC, Robot เปนตน ไมโครคอนโทรลเลอรตระกูล PIC ซึ่งเปนไมโครคอมพิวเตอรแบบชิปเด่ียว (single chip Microcontroller) ถูกใชงานอยางแพรหลาย การศึกษาเก่ียวกับไมโครคอนโทรลเลอรจึงมีองคประกอบหลายอยาง เชน สถาปตยากรรมของไมโครคอนโทรลเลอร วงจรอิเลคทรอนิกส ตลอดจนภาษาที่จะใชในการเขียน ซึ่งจะตองศึกษาควบคูกันไป โดยจะนําเสนอลําดับการทํางานดังตอไปน้ี

ไมโครคอนโทรลเลอร PIC

1. ไมโครคอนโทรลเลอรคืออะไร?

ไมโครคอนโทรลเลอร คือ อุปกรณประเภทสารก่ึงตัวนําที่รวบรวมฟงกช่ันการทํางานตางๆ ไวภายในตัวของมันเอง โดยมีโครงสรางใกลเคียงกับคอมพิวเตอร คือ ภายในประกอบดวยหนวยรับขอมูลและโปรแกรม หนวยประมวลผล หนวยความจํา หนวยแสดงผล ซึ่งสวนประกอบเหลาน้ีมีความสมบูรณในตัวของมันเอง ทําใหมีขนาดเล็ก และสามารถเขียนโปรแกรมควบคุมการทํางานของอุปกรณตางๆ ที่เช่ือมตอกับตัวมัน งายตอการนําไปประยุกตใชงาน ไมโครคอนโทรลเลอร ( Microcontroller) มาจากคํา 2 คํา คําหน่ึงคือ ไมโคร (Micro) หมายถึงขนาดเล็กและคําวา คอนโทรลเลอร (controller) หมายถึงตัวควบคุมหรืออุปกรณควบคุม ดังน้ัน ไมโครคอนโทรลเลอร จึงหมายถึงอุปกรณควบคุมขนาดเล็ก แตในตัวอุปกรณควบคุมขนาดเล็กน้ี ไดบรรจุความสามารถที่คลายคลึงกับ

Page 2: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 2

ระบบคอมพิวเตอร ที่คนโดยสวนใหญคนเคย กลาวคือภายใน ไมโครคอนโทรลเลอร ไดรวมเอาซีพียู, หนวยความจํา และพอรต ซึ่งเปนสวนประกอบหลักสําคัญของระบบคอมพิวเตอรเขาไวดวยกัน โดยทําการบรรจุเขาไวในตัวถังเดียวกัน ความแตกตางของ Microcontroller กับ Microcomputer คือ Microcontroller น้ันมีความสมบูรณภายในตัวของมันเอง คือ มีสวนประกอบตางๆ ครบถวน สวน Microcomputer น้ันตองทํางานรวมกับอุปกรณขางเคียงที่เช่ือมตอจากภายนอก เชน แปนพิมพ เครื่องอานเขียนแผนบันทึก หนวยความจํา I/O ฯลฯ

2.ขอแตกตางระหวางไมโครโปรเซสเซอรกับไมโครคอนโทรลเลอร ไมโครโปรเซสเซอรที่ใชอยูในปจจุบัน จะไมมีหนวยความจํา RAM, ROM และ Port อยูในตัว ทําใหตองตอหนวยความจําโปรแกรมภายนอกเพิ่มและตองใช ICs ขยายพอรตเพ่ิมเติม ขอดีคือ สามารถเพ่ิมหนวยความจําไดตลอด สวนไมโครคอนโทรลเลอรจะมีวงจรพ้ืนฐานประกอบอยูภายในชิป เชน หนวยความจํา RAM, ROM และ I/O Port ดังน้ัน ในระบบไมโครคอนโทรลเลอรจึงมีขนาดเล็กกวาและราคาตํ่ากวาระบบไมโครโปรเซสเซอร

3.โครงสรางโดยท่ัวไปของไมโครคอนโทรลเลอร

โครงสรางโดยทั่วไป ของไมโครคอนโทรลเลอรน้ัน สามารถแบงออกมาไดเปน 5 สวนใหญๆ ดังตอไปน้ี

รูปท่ี 1 แสดงโครงสรางโดยท่ัวไปของไมโครคอนโทรเลอร

1.หนวยประมวลผลกลางหรือซีพียู (CPU: Central Processing Unit) เปนวงจรอิเลคทรอนิคสที่ทํางาน หรือประมวลผล ตามชุดของคําสั่งเคร่ืองจากซอฟตแวร คําน้ีเริ่มใชในอุตสาหกรรมคอมพิวเตอรต้ังแตตนศตวรรษ 1960s หนวยประมวลผลเปรียบเสมือนเปนสมองของคอมพิวเตอร ในการทําหนาที่ตัดสินใจหรือคํานวณ จากคําสั่งที่ไดรับมา เชน การเปรียบเทียบ การกระทําการทางคณิตศาสตร ฯลฯ โดยมีกระบวนการพ้ืนฐานคือ

• อานชุดคําสั่ง (fetch)

Page 3: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 3

• ตีความชุดคําสั่ง (decode)

• ประมวลผลชุดคําสั่ง (execute)

• อานขอมูลจากหนวยความจํา (memory)

• เขียนขอมูล/สงผลการประมวลกลับ (write back)

2.หนวยความจํา ( Memory ) สามารถแบงออกเปน 2 สวน คือ หนวยความจําที่มีไวสําหรับเก็บโปรแกรมหลัก ( Program Memory) เปรียบเสมือนฮารดดิสกของเครื่องคอมพิวเตอรต้ังโตะ คือขอมูลใดๆ ที่ถูกเก็บไวในน้ีจะไมสูญหายไปแมไมมีไฟเล้ียง อีกสวนหน่ึงคือหนวยความจําขอมูล ( Data Memory ) ใชเปนเหมือนกระดาษทศในการคํานวณของซีพียู และเปนที่พักขอมูลช่ัวคราวขณะทํางาน แตหากไมมีไฟเลี้ยง ขอมูลก็จะหายไปคลายกับหนวยความจําแรม(RAM)ในเครื่องคอมพิวเตอรทั่วๆไป แตสําหรับไมโครคอนโทรลเลอรสมัยใหม หนวยความจําขอมูลจะมีทั้งที่เปนหนวยความจําแรม ซึ่งขอมูลจะหายไปเมื่อไมมีไฟเล้ียง และเปนอีอีพรอม (EEPROM : Erasable Electrically Read-Only Memory ) ซึ่งสามารถเก็บขอมูลไดแมไมมไีฟเลี้ยง

3.สวนติดตอกับอุปกรณภายนอก หรือพอรต (Port) มี 2 ลักษณะคือ พอรตอินพุต (Input Port) และพอรตสงสัญญาณหรือพอรตเอาตพุต (Output Port) สวนน้ีจะใชในการเช่ือมตอกับอุปกรณภายนอก ถือวาเปนสวนที่สําคัญมาก ใชรวมกันระหวางพอรตอินพุต เพ่ือรับสัญญาณ อาจจะดวยการกดสวิตช เพ่ือนําไปประมวลผลและสงไปพอรตเอาตพุต เพ่ือแสดงผลเชน การติดสวางของหลอดไฟ เปนตน

4.ชองทางเดินของสัญญาณหรือบัส (BUS) คือเสนทางการแลกเปล่ียนสัญญาณขอมูลระหวาง ซีพียู หนวยความจําและพอรต เปนลักษณะของสายสัญญาณ จํานวนมากอยูภายในตัวไมโครคอนโทรลเลอร โดยแบงเปนบัสขอมูล (Data Bus), บัสแอดเดรส (Address Bus)และบัสควบคุม Control Bus )บัสขอมูลเปนสายสัญญาณที่บรรจุขอมูล เพ่ือการประมวลผลทั้งหมด ขนาดของบัสจะขึ้นอยูกับความสามารถการประมวลผลของซีพียู สําหรับในงานทั่วๆ ไป ขนาดของบัสขอมูลจะเปน 8 บิต และในปจจุบันไดมีการพัฒนาขึ้นมาจนถึง 16, 32 และ 64 บิต บัสแอดเดรสเปนสายสัญญาณที่บรรจุคาตําแหนงของหนวยความจํา โดยการติดตอกับหนวยความจําน้ัน ซีพียู ตองกําหนดตําแหนงที่ตองการอานหรือเขียนกอน ดังน้ันจํานวนสายสัญญาณของแอดเดรสจึงตองมีจํานวนมาก ยิ่งมากเทาไหร ก็จะเปนการแสดง ขนาดของหนวยความจําที่ไมโครคอนโทรลเลอรสามารถติดตอได โดยสามารถคํานวณไดจาก จํานวนแอดเดรสของหนวยความจํา = 2 ยกกําลัง n ( n คือจํานวนของเสนทาง ) ยกตัวอยาง ไมโครคอนโทรลเลอรตัวหน่ึงมีสายแอดเดรส 10 เสน ดังน้ัน ไมโครคอนโทรลเลอรตัวน้ี สามารถติดตอกับหนวยความจําได 2 ยกกําลัง 10 = 1,024 ตําแหนง หากตองการทราบความจุของหนวยความจําจริงๆ จะตองทราบถึงขนาดของบัสขอมูลกอนวาเปนเทาใด หากเปน 8 บิต ความจุของหนวยความจําที่มีสายแอดเดรส 10 เสน จะเทากับ 8×1024 = 8,192 บิต และ 1 กิโลไบต เทากับ 1,024 ไบต ดังน้ันไมโครคอนโทรลเลอรดังกลาว จึงมีความจุของหนวยความจําเทากับ 8,192 บิต หรือ 1,024 ไบต หรือ 1 กิโลไบต บัสควบคุมเปนกลุมของสายสัญญาณควบคุมการติดตอทั้งหมดของซีพียูกับหนวยความจําและพอรต สําหรับสายสัญญาณเลือกควบคุมหลักไดแก สายสัญญาณเลือก-อาน-เขียนหนวยความจํา สายสัญญาณเลือกเลือก อาน-เขียนขอมูลกับพอรต

Page 4: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 4

5. วงจรกําเนิดสัญญาณนาฬิกา (Clock) นับเปนสวนประกอบที่สําคัญมากอีกสวนหน่ึง เน่ืองจากการทํางานที่เกิดขึ้นในตัวไมโครคอนโทรลเลอร จะขึ้นอยูกับการกําหนดจังหวะ หากสัญญาณนาฬิกามีความถ่ีสูง จังหวะการทํางานก็จะสามารถทําไดถ่ีขึ้นสงผลใหไมโครคอนโทรลเลอรตัวน้ัน มีความเร็วในการประมวลผลสูงตามไปดวย

รูปที่ 2 แสดงการจัดขาของไมโครคอนโทลเลอรตระกูล PIC 16F684

การเขียนโปรแกรมดวยภาษาซี

องคประกอบพ้ืนฐานของภาษา C

อักขระ(characters) คาคงที่(constants) ตัวแปร(variables) ตัวดําเนินการ(operators) นิพจน(expressions)

Characters แบงเปน

ตัวเลข (digits) คือ ตัวเลข 0 ถึง 9 และเลขฐานสิบหก คือ A B C D E และ F

ตัวอักษร(letters) คือตัวอักษรในภาษาอังกฤษ เปนตัวพิมพใหญและตัวพิมพเล็ก คือ A-Z และ a-z

อักขระพิเศษ(special characters) คือ ! * + " < # ( = | > % ) ~ : / ^ - [ ; ? , & _ ] ' . space ในภาษาซี ถือวา เครื่องหมายขีดเสนใตเปนตัวอักษร ตัวหน่ึง characters ตาง ๆ น้ีจะใชเปนคาคงที่ ตัวแปร ตัวดําเนินการ

Constants เปนคาที่มีคาไมเปล่ียนแปลง แบงเปน

คาคงท่ีประเภทเลขจํานวนเต็ม (integer constant) คือเลขจํานวนเต็ม ที่อยูระหวาง -32768 ถึง 32767 เชน -25 หรือ 0 หรือ 236 คาเหลาน้ีแตละคาใชหนวยความจําในการเก็บ 2 ไบต คาเหลาน้ีเขียนในรูปเลขฐานสิบ ฐานแปด(เขียนโดยใชเลขศูนยนําหนา เชน 045) เลขฐานสิบหก(เขียนโดย ใชเลขศูนยและx นําหนา เชน 0x28 0X2AF)

Page 5: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 5

คาคงที่ชนิดตัวเลขทศนิยม(floating point constants) เปนตัวเลขทศนิยม เชน 1.0 1.6 E+09 คาน้ีใชหนวยความจําในการเก็บคาละ 4 ไบต และมีคาอยูในชวง 1.2 E -38 ถึง 3.4E+38 โดย 3 ไบตแรกเก็บคาตัวทศนิยม สวนไบตสุดทายเก็บเลขยกกําลัง

คาคงท่ีชนิดตัวเลขทศนิยมความละเอียดสองเทา (double floating point) เรียกสั้น ๆ วา double เก็บจํานวน 2.2E-308 ถึง 1.8E+308 เทาน้ัน ใชหนวยความจํา 8 ไบต 7 ไบตแรกเก็บเลขทศนิยม ไบตสุดทายเก็บเลขยกกําลัง

คาคงท่ีชนิดตัวอักขระ (single character constant) เก็บตัวอักขระ 1 ตัว โดยใชเครื่องหมาย ' และ ' ลอม 1 ตัวอักขระใช 1 ไบต เชน 'E' 'X'

คาคงท่ีชนิดขอความ (string constant) ใชเก็บขอความ มีความยาวตั้งแต 1 ตัวอักขระ เก็บในรูปอารเรย แตละตัวใชหนวยความจํา 1 ไบต เรียงตอกันโดยไบตสุดทายจะตองเก็บ \0 (null character) เพ่ือบอกวาจบขอความแลว เชน "Bodindecha" ใชหนวยความจํา 11ไบต

ตัวแปร(Variables)

เปนช่ือที่ต้ังเพ่ือใชอางอิงถึงขอมูลตาง ๆ โดยตัวแปรจะมีการใชเน้ือที่ในหนวยความจําในปริมาณที่ตางกันขึ้นกับชนิดของขอมูล ขอมูล พ้ืนฐานในภาษาซี มี 5 ชนิด คือ อักขระ (char) จํานวนเต็ม(int) จํานวนจริง(float) จํานวนจริงละเอียด2เทา(double) ไมใหคาใด ๆ (void) นอกจากน้ีเพ่ือความสามารถในการใชงานจึงมีการเพ่ิมชนิดของตัวแปรขึ้นมาดังตาราง

ตารางแสดงชนิดของตัวแปร

คําประกาศชนิดของตัวแปร

เคร่ืองหมาย จํานวนไบตท่ีใช

คาท่ีเปนไปได

char คิดเคร่ืองหมาย 1 -128 ถึง 128

int คิดเคร่ืองหมาย 2 -32768 ถึง 32767

short คิดเคร่ืองหมาย 2 -32768 ถึง 32767

long คิดเคร่ืองหมาย 4 -2147483648 ถึง 2147483647

unsigned char ไมคิดเคร่ืองหมาย 1 0 ถึง 255

unsigned int ไมคิดเคร่ืองหมาย 2 0 ถึง 65535

unsigned short ไมคิดเคร่ืองหมาย 2 0 ถึง 65535

unsigned long ไมคิดเคร่ืองหมาย 4 0 ถึง 4294967295

float คิดเคร่ืองหมาย 4 3.4E-38 ถึง 3.4E+38

double คิดเคร่ืองหมาย 8 1.7E-308 ถึง 1.7E+308

long double คิดเคร่ืองหมาย 10 3.4E-4932 ถึง 1.1E+4932

Page 6: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 6

การต้ังชื่อตัวแปร

1. ตองขึ้นตนดวยตัวอักษรเทาน้ัน ตัวตอไปจะเปนตัวเลขหรือตัวอักษรได ความยาวไมเกิน 31 ตัว

2. ช่ือตัวแปรควรสื่อความหมายของตัวแปรเพ่ือปองกันความสับสนของการพิจารณาโปรแกรม

3.หามต้ังช่ือตรงกับคําสงวนในภาษาซี ซึ่งมี 33 คํา ดังน้ี

asm auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

การประกาศตัวแปร

ในการจะใชงานตัวแปรจะตองมีการประกาศชนิดและช่ือของตัวแปรน้ันกอน โดยการประกาศตัวแปรใชรูปแบบ คือ ชนิดของตัวแปร ชื่อตัวแปร โดยถามีตัวแปรชนิดเดียวอาจประกาศพรอมกันโดยใช คอมมา คั่นระหวางช่ือของตัวแปร ถามีการกําหนดคาใหใชเครื่องหมาย = และใชเครื่องหมายแสดงการจบคําสั่งเมื่อสิ้นสุด คําสั่ง ตัวอยาง เชน

char name, day = 'S' , surname[20] ="Kodedee";

int x=5 ,y,z[100]; float a=5.00 ,b,c; double k=1.234567, m ;

ตัวดําเนินการ(Operator)

ตัวดําเนินการมีหลายประเภทลักษณะการดําเนินการแตกตางกันไป ในที่น้ีจะกลาวถึงบางประเภทเทาน้ัน

ตัวดําเนินการทางคณิตศาสตร (Mathematical operators)

สัญลักษณ การดําเนินการ ตัวอยาง

+ การบวก 2+5 ผลลัพธ 7

- การลบ 7-4 ผลลัพธ 3

* การคูณ 2*6 ผลลัพธ 12

/ การหาร 8/2 ผลลัพธ 4

% การหารหาเศษ 9%4 ผลลัพธ 1

Page 7: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 7

ตัวดําเนินการความสัมพันธหรือการเปรียบเทียบ (Relational operators)

สัญลักษณ การดําเนินการ ตัวอยาง

< นอยกวา 2<3 ผลลัพธ จริง(1)

> มากกวา 2>3 ผลลัพธ เท็จ(false)(0)

<= นอยกวาหรือเทากับ 2<= 3 ผลลัพธ จริง(true)

>= มากกวาหรือเทากับ 2>= 3 ผลลัพธ เท็จ(false)

== เทากับ 4==4 ผลลัพธ จริง(true)

!= ไมเทากับ 2!= 2 ผลลัพธ เท็จ(false)

ตัวดําเนินการตรรกะ (logical operators)

สัญลักษณ การดําเนินการ ตัวอยาง

&& และ(AND) (2<3)&&(3>1) ผลลัพธ จริง

|| นอยกวา(OR) (2>3)||(4<1) ผลลัพธ เท็จ(false)

! ไม(NOT) !(2> 3) ผลลัพธ จริง(true)

ตัวดําเนินการกําหนดคา (Assignment operators)

สัญลักษณ การดําเนินการ ตัวอยาง

= กําหนดคา(assignment) a=2 ความหมายคือ กําหนดใหa มีคาเปน2

+= การบวก(addition) a+=b ความหมายคือ(a=a+b)

*= การคูณ(multiplication) a*=b ความหมายคือ(a=a*b)

นิพจน (Expression)

เกิดจากการนํา คาคงที่ หรือ ตัวแปร และตัวดําเนินการมาประกอบกัน โดยนิพจนมีหลายชนิด เชนนิพจนทางคณิตศาสตร นิพจนทางตรรกะ นิพจนทางการเปรียบเทียบ นิพจนเก่ียวกับเงือนไข นิพจนเก่ียวกับขอความ เชน

2 + x * 5 เปนตัวอยางของนิพจนทางคณิตศาสตร (2>3)&&(5>=4) เปนนิพจนทางตรรกะและการเปรียบเทียบ !(a) เปนนิพจนทางตรรกะ if(x==y) เปนนิพจนเง่ือนไข

ตัวอยาง การหาผลลัพธของนิพจน

กําหนด int a = 10 , b = 12, c =3; จงหาผลลัพธของ 2 * a + b % c ดําเนินการดังน้ี (2 * a) + (b %c) ผลลัพธ คือ 20 + 0 คือ 20

Page 8: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 8

จากขอกําหนดดานบน จงหาผลลัพธ ของ (a>b)&&(c<=b) ซึ่งเราอาจพิจารณา ดังน้ี

(เท็จ)&& (จริง) ดังน้ัน ผลลัพธ คือ เท็จ

โครงสรางของภาษาซีในโปรแกรม CSS C Compiler

Preprocessor directive

Global declarations

void main( ) {

Local declarations

Statement

} Preprocessor directive ใชสําหรับเรียกไฟลที่โปรแกรมตองการทํางานและกําหนดคาตางๆ โดยคอมไพเลอรจะทําตามคําสั่งกอนที่จะคอมไพลโปรแกรม โดยจะเริ่มตนดวยเครื่องหมาย Pound sign (#) สําหรับ Directive ที่ใชบอยไดแก #Include เปนการแจงใหคอมไพเลอรอานไฟลอื่นเขามาคอมไพลรวมดวย เชน #Include <16f877.h> #Use delay (clock=4000000) เปนการบอกใหคอมไพเลอรรูวาจะมีการใชฟงกชัน Delay โดยใชสัญญาณนาฬิกาเทากับ 4 MHz โดยคาของ clock จะขึ้นอยูกับสัญญาณนาฬิกาที่เราใช สวนประกาศ (Global declaration) เปนสวนที่ใชประกาศตัวแปรหรือฟงกชันที่ตองใชในโปรแกรมโดยตัวแปรในสวนน้ีจะสามารถใชไดกับทุกๆสวนของโปรแกรม หากเปน Local declaration จะสามารถใชเฉพาะใน บล็อกหรือฟงกชันที่ประกาศใชเทาน้ัน

Page 9: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 9

สวนฟงกชันหลัก (void main ( ) function) สวนน้ีทุกโปรแกรมจะตองมีภายในจะประกอบไปดวยประโยคคําสั่งตางๆ ที่จะใหโปรแกรมทํางานแตละประโยคคําสั่งจะจบดวยเครื่องหมาย เซมิโคลอน (;)

ตัวอยาง #include<16f877.h> //ใชไมโครคอนโทรลเลอรเบอร 16f877 #use delay (clock = 4000000) #fuses XT,NOWDT void main ( ) { //เริ่มตนโปรแกรมหลัก While (true) { OUTPUT_HIGH (PIN_B0); //ให port B0 เปนลอจิก 1 Delay_ms( 1000 ); //หนวงเวลา 1000 มิลลิวินาที OUTPUT_LOW (PIN_B0); //ให port B0 เปนลอจิก 0 } } //จบโปรแกรม Note: โปรแกรมขางตนจะทําให Led ติด ดับสลับกัน โดยจากรูป Led จะติดเมื่อ Port B0 เปนลอจิก 1 และจะดับเมื่อ Port B0 เปนลอจิก 0 การประกาศตัวแปร การประกาศตัวแปรมีรูปแบบการประกาศ ดังน้ี ประเภทของขอมูล ช่ือตัวแปร [,.........,]; เชน float a; //ประกาศตัวแปร a เปนตัวแปรประเภทจํานวนจริง int x,y,z; //ประกาศตัวแปร x , y , z เปนตัวแปรแบบจํานวนเต็ม

Page 10: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 10

การใชงานตัวแปรใหถูกประเภทน้ันมีความสําคัญตอความถูกตองและความรวดเร็วในการประมวลผลมาก ดังน้ันเราจึงตองทําความเขาใจ เก่ียวกับตัวแปรประเภทตางๆ

ชนิดตัวแปร ขนาด คาอยูในชวง

unsigned

unsigned int

int

char

int8

8 bit unsigned 0 to 255

long

long int

int16

16 bit unsigned 0 to 65535

signed

signed int

signed int8

8 bit signed -128 to 127

signed long

signed int16 16 bit signed -32768 to 32767

int32 32 bit unsigned 0 to 232-1

signed int32 32 bit signed -2*109 to 2*109

float 32 bit floating point -+ 0.5*2-128 to 1-(2-15)*2128

short

short int

int1

one bit 0 to 1

Page 11: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 11

คําส่ังควบคุมในภาษาซ ี(Control Statement) คําสั่งที่ใชควบคุมในภาษาซีมีอยูหลายคําสั่ง เชน คําสั่งวนลูปซอน, คําสั่งทําตามเง่ือนไข เปนตน คําสั่งที่ใชในการควบคุมไมโครคอนโทรลเลอร สามารถแบงออกไดดังน้ี

การเลือกทํา

1. คําสั่ง goto label เปนชุดคําสั่งที่ใชสั่งใหกระโดดขามไปยังคําสั่งอื่นๆ ที่ไดกําหนด label ไว แตคําสั่งน้ีมีลักษณะที่ไมเปนโครงสราง หากใชงานมากๆ จะทําใหเกิดความยุงยากตอโปรแกรม ดังน้ันจึงไมเหมาะตองานที่มีความซับซอนมากๆ โดยมีรูปแบบการใชงานดังน้ี ภาษาซี

#include <16F684.H> int i = 0; //ประกาศตัวแปร i เปนตัวแปรชนิด integer โดยใหมีคาเทากับ 0 byte x; //ประกาศตัวแปร x เปนตัวเปรชนิด byte void main(void) { set_tris_b(0x00); //กําหนดใหพอรต B เปนเอาตพุททั้งหมด x = 0xFE; start: //กําหนด label ช่ือวา start { for(i=0; i<=5; i++) //ทําการวนลูป for จํานวน 5 ครั้ง เพ่ิมคา i ทีละ 1 { delay_ms(1000); //หนวงเวลา 1000 มิลลิวินาที output_b(x); delay_ms(1000); rotate_left(&x,1); //Shift Bit ไปทางซายทีละ 1 Bit } } goto start; //โปรแกรมบังคับใหกระโดดไปที่ label start แบบไมรูจบ }

Page 12: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 12

2. คําสั่งเลือกทําแบบทางเดียว ( if )

ใชตรวจสอบนิพจนเง่ือนไข การใชงานคําสั่ง if ถือไดวาเปนคําสั่งสําคัญมากคําสั่งหน่ึงที่ใชในการตัดสินใจเพ่ือทําหรือไมใหทําสิ่งใด มีการตัดสินใจใหทําเมื่อนิพจนเปนจริง และใหทําคําสั่งถัดไปเมื่อนิพจนเปนเท็จ

รูปที่ 3 แสดงคําสั่ง if แบบทางเดียว รูปแบบ if ( condition) { action statement; } ตัวอยาง if (input(sw)) { output_high(pin_C0); } เปนการตรวจสอบวาตัวแปรอินพุท SW ถูกกดเปนคา 1หรือเปลาถาเปนจริงจะทําใหพอรต C (Pin C0) มีคาเปนลอจิก 1

ตรวจสอบเง่ือนไข

คําสั่งภายใต

คําสั่งถัดไป

เท็จ

จริง

Page 13: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 13

3.การเลือกทําแบบสองทิศทาง (IF – ELSE) ใชกําหนดเง่ือนไขดวยตัวดําเนินการเปรียบเทียบ แลวสั่งใหไมโครคอนโทลเลอรปฏิบัติตามเง่ือนไขที่กําหนดไว ใหเลือกทําเง่ือนไขใดเง่ือนไขหน่ึง ซึ่งมีรูปแบบดังน้ี

รูปที่ 4 แสดงคําสั่ง if แบบสองทาง มีรูปแบบการเขียนดังน้ี

If (condition) { ชุดคําสั่งที่ 1; } Else { ชุดคําสั่งที่ 2; }

ตรวจสอบเง่ือนไข

ชุดคําสั่งที่ 1 ชุดคําสั่งที่ 2

เท็จ

จริง else

Page 14: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 14

ตัวอยาง

if (input(Sw)) { output_high(pin_C0); } else { output_low(pin_C0);

}

ภายใน Block ของ else อาจมี if ซอนอยูได เชน

if (x >= 90) printf(“EXCELLENT\n\r”); else if (x >= 80) printf(“GOOD\n\r”); else if (x >= 70) printf(“FAIR\n\r”); else printf(“FAIL\n\r”);

4. การเลือกทําแบบหลายทางเลือก (switch) มีลักษณะคลายกับคําสั่ง if แบบหลายทาง แตผิดกันตรงที่เมื่อมีนิพจนเง่ือนไขใดเง่ือนไขหน่ึงเปนจริงแลวไมโครคอนโทลเลอรจะปฏิบัติตามชุดคําสั่งน้ันๆ และชุดคําสั่งอื่นๆ ถัดไปดวย เมื่อไดรับนิพจนเง่ือนไขน้ันมาเพ่ือเลือกอีก ในเง่ือนไขนิพจนหากไมตามทายดวยคําสั่ง break ในแตละชุดเง่ือนไขทดสอบน้ัน จะตองเปนอักขระ หรือตัวเลขจํานวนเต็มเทาน้ัน เชน char, int, short long เปนตน

Page 15: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 15

โครงสราง

รูปที่ 5 แสดงโครงสรางคําสั่งเลือกทําแบบหลายทางเลือก (switch)

เท็จ

เท็จ

จริง

จริง

จริง

เท็จ

เริ่มตน

มีพจนสวนเพ่ิม (Increment expression)

มีพจนทดสอบ (Test expression) ชุดคําสั่งภายใน Case ที่ 1

มีพจนทดสอบ (Test expression)

มีพจนทดสอบ (Test expression)

ออกจากลูป

ชุดคําสั่งภายใน Case ที่ 2

ชุดคําสั่งภายใน Case ที่ 3

ชุดคําสั่งภายใน Case ที่ 3

Page 16: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 16

รูปแบบ

switch (expression)

{ case constant 1 : statement sequence break; case constant 2 : statement sequence break; case constant 3 : statement sequence break; ................... ............................. default : statement sequence } // end switch

ตัวอยางการเขียน

switch (date) { case 1:printf("SUN-"); break; case 2:printf("MON-"); break; case 3:printf("TUE-"); break; case 4:printf("WED-"); break; case 5:printf("THE-"); break; case 6:printf("FRI-"); break; case 7:printf("SAT-"); break; }

Page 17: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 17

การทําซ้ํา (Repetitive statement) 5. คําสั่ง For loop คําสั่งน้ีจะถูกนํามาใชในกรณีที่ตองการใหโปรแกรมทํางานซ้ําโดยจะตองทราบคาของจํานวนครั้งในการทําซ้ํา หรือเง่ือนไขที่แนนอนเพ่ือควบคุมใหโปรแกรมหยุดทํางานซ้ํา

รูปที่ 6 แสดงโครงสรางของชุดคําสั่ง For loop

for (expr1;expr2;expr3) { ชุดคําสั่ง ; }

expr1 เปนการกําหนดคาเริ่มตนใหกับตัวแปร(Initialization) expr2 เปนสวนที่ตรวจสอบเง่ือนไข (condition) expr3 เปนสวนที่ใชเพ่ิมคาหรือลดคาใหกับตัวแปรควบคุมจํานวนการทําซ้ํา

เท็จ

จริง

เริ่มตน

มีพจนสวนเพ่ิม (Increment expression)

มีพจนทดสอบ (Test expression)

ชุดคําสั่งภายในลูป (Statement)

ออกจากลูป

นิพจนคาเริมตน (Initialization expression)

Page 18: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 18

หมายเหตุ หากมีคําสั่งเดียวไมตองใส { } โดยโปรแกรมจะทําซ้ําคําสั่งแรกที่อยูหลัง for (expr 1 ; expr, 2 ; expr 3) เทาน้ัน เชน

void main( ) { int i; // ประกาศตัวแปร i เปนจําวนเต็ม for (i = 1; i <= 5; i++) printf(“Number %d\n\r”, i); printf(“End Program”); }

ผลลัพธทีไดคือ โปรแกรมจะส่ังใหพิมพ Number เร่ิมท่ีคา I = 1 เพ่ิมทีละ 1 จนถึงคาท่ี 5 ดังแสดง Number 1 Number 2 Number 3 Number 4 Number 5 End Program NOTE ฟงกชัน printf( ) ใน CCS C Compiler ฟงกชัน printf( ) เปนฟงกชันที่ใชแสดงผลขอมูลผาน RS 232 โดย ตองมีdirective #use rs232 (options) ในสวนของ Option จะอธิบายพรอมกับตัวอยางโปรแกรมภายหลัง การใช ฟงกชัน printf ( ) มีรูปแบบดังน้ี printf(control , argument vari); เมื่อ Argument vari หมายถึง คาคงที่ คาของตัวแปร หรือคานิพจนที่ตองการนําออกแสดงถามีคามากกวา 1 คาตองใชเครื่องหมายคอมมา ( , ) คั่นแยกตัวแปร control ตองเขียนอยูภายใตเครื่องหมาย “ ” หากเปนขอความสามารถเขียนไวภายใน “ ” ไดเลย แตหากเปนการนําคาตัวแปรมาแสดงตองมีรหัสรูปแบบไวภายใน

รหัสรูปแบบ การใชงาน

%c ใชกับตัวแปรท่ีเก็บคาของอักขระตัวเดียว (Character)

%s ใชกับตัวแปรท่ีเก็บคาขอความในรูปตัวแปร array

%d ใชกับตัวแปรเก็บคาท่ีเปนเลขจํานวนเต็ม (Integer)

%u ใชกับตัวแปรท่ีเปนเลขจํานวนเต็มบวก

%f ใชกับตัวแปรท่ีเก็บคาเปนเลขทศนิยม (Floating)

Page 19: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 19

%e ใชกับตัวแปรท่ีเก็บคาเปนทศนิยมในรูป exp

%x ใชในการแสดงคาเปนเลขฐานสิบหก (lower case output)

%X ใชในการแสดงคาเปนเลขฐานสิบหก (Upper case output)

%lx แสดงฐานสิบหกแบบ long int (lower case)

%lX แสดงฐานสิบหกแบบ long int (upper case)

%lu จํานวนเต็มบวกชนิด long

%ld แสดงขอมูลแบบ long int

รหัสควบคุมการแสดงผล

รหัสควบคุมการแสดงผล การใชงาน

\n ขึ้นบรรทัดใหม 1 บรรทัด

\t เวนระยะ 6 ตัวอักษรในแนวนอน

\r ให cursor กลับไปอยูท่ีตนบรรทัด

\b cursor ถอยหลังกลับไปท่ีละ 1 ตัวอักษรพรอมกับลบตัวอักษร

While ... loops ถาเง่ือนไขเปนจริง จะเขาไปทํางานตามคําสั่งในลูป จะวนลูปไปเรื่อย ๆ จนกวาจะตรวจสอบวาเปนเท็จจึงจะออกจากลูป

รูปที่ 7 แสดงโครงสรางของคําสั่ง while รูปแบบ

ออกจาลูป เท็จ

จริง

ตรวจสอบเงื่อนไข

คําสั่งในลูป

Page 20: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 20

while (test condition) { ชุดคําสั่ง ;

}

ตัวอยางเชน n = 1; while (n<= 5) { printf(“Optoelectronics %d\n\r”,n); n = n+1; }

ผลลัพธ Optoelectronics 1 Optoelectronics 2 Optoelectronics 3 Optoelectronics 4 Optoelectronics 5

หากตองการทําซ้ําหลายๆ ครั้ง การทํางานเราจะใหวนทําซ้ําอยูตลอดเวลาเราสามารถทําไดโดย

while(true) { ชุดคําสั่ง ; }

Page 21: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 21

Do ... while loop คลายกับคําสั่ง while ตางกันตรงที่ do..while จะทํางานในลูปกอนแลวจึงมาตรวจสอบเง่ือนไข แต while จะตรวจสอบเง่ือนไขกอนแลวคอยทํางานวนลูป เมื่อเง่ือนไขเปนเท็จจึงออกจากลูป

รูปที่ 8 แสดงโครงสรางของคําสั่ง Do-while มีรูปแบบการเขียนดังน้ี

do { ชุดคําสั่ง ; }while (condition);

การเขียนฟงกชัน (Function)

ในการเขียนโปรแกรมคอมพิวเตอรบางครั้งจะตองมีชุดคําสั่งบางชุดที่จะตองทําบอยๆ ถาหาก โปรแกรมตองการทําชุดคําสั่งเหลาน้ันและตองเขียนชุดคําสั่งน้ันใหมจะทําใหโปรแกรมมีขนาดใหญ เราสามารถนําชุดคําสั่งที่ตองทําบอยๆ มารวมเปนฟงกชันได โดยมีวิธีการเขียนดังน้ี

Type function_name (Parameter – list) { Statement; [return]; }

เท็จ

จริง ตรวจสอบ่

ชุดคําสั่งที่มีการทํางานกอนตรวจสอบเง่ือนไข

Page 22: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 22

Type หมายถึง ประเภทของขอมูลที่ฟงกชันสงกลับ ถาหากฟงกชันไมมีการสงคากลับสวนน้ีจะประกาศเปน void Function_name เปนช่ือฟงกชันที่สรางขึ้น Parameter – list เปนตัวแปรหรือพารามิเตอรที่ใชรับคาผานเขามาในฟงกชันสวนน้ีหากไมมีการ สงคาผานเขามาในฟงกชันก็จะไมมี หรือจะใส void แทน Return ใชในการสงคากลับโดยตองเขียนคาที่จะสงกลับตามหลัง return สวนน้ีอาจไมมีหากฟงกชัน ไมมีการสงคากลับ ตัวอยาง

void Show () { int i; for (i = 1;i <= 20 ; i++) printf(“Optoelectronics\n\r”); }

เปนฟงกชันที่ใชแสดง Optoelectronics จํานวน 20 ครั้ง Void หมายถึงฟงกชันน้ีไมมีการคืนคากลับ สวนวิธีการเรียกใชฟงกชันสามารถทําไดดังน้ี

void main () { ... Show (); // เรียกใชฟงกชัน Show () ... }

ตัวอยาง

int ADD_AB(int A,int B) { int x; x = A+B; return x; // คืนคา A+B }

Page 23: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 23

เปนฟงกชันที่บวกเลขจํานวนเต็มสองคา โดยรับขอมูลที่เปนจํานวนเต็มเขาไปผานทางพารามิเตอร A และ B และคืนคาผลบวกที่เปนจํานวนเต็มออกมาสวนการเรียกใชสามารถทําไดโดย

void main () { int add; add = ADD_AB (2,3); printf(“result = %d\n\r”,add); }

ผลลัพธ คือ 5 สังเกต การเรียกใชฟงกชันที่มีการคืนคาจะตองมีตัวแปรในการรับคา ในที่น้ีคือ Add

Page 24: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 24

การใชงาน CCS C คอมไพเลอร CCS C เปนซอฟตแวรสําหรับใชในการเขียนโคดโปรแกรมภาษา C สําหรับไมโครคอนโทรลเลอร PIC (Programmable Integrated Circuit) ซึ่งในการเริ่มตนการใชงานเขียนโปรแกรมดวย CCS C คอมไพเลอร มีดังน้ี การใชงานเบื้องตน 1. เปดโปรแกรม PIC C Compiler ขึ้นมาใชงาน ไปที่ start All Program PIC C PIC C Compiler หรือ คลิกไปท่ีไอคอน PIC C Compiler ดังรูปที่ 9 หลังจากโปรแกรม PIC C Compiler ถูกเรียกขึ้นมาใชงานแลว ถามีไฟลเปดใชงานอยูใหปดไฟลทั้งหมด

รูปที่ 9 แสดงไอคอนของ PIC C Compiler ที่เกิดขึ้นหลังจากการติดต้ังโปรแกรม CCS C Compiler 2. เมื่อเรียก PIC C Compiler แลวจะไดหนาตางของโปรแกรม PCW ดังแสดงในรูปที่ 10

รูปที่ 10 แสดงหนาตางของ PCW ของโปรแกรม PIC C Compiler

3. ไปที่เมนู Project PIC Wizard คลิกเมาสไปที่ PIC Wizard จะไดหนาตางดังรูปที่ 11 ทําการสราง Folder เพ่ือเปน Directory แลวทําการกําหนดช่ือของโปรเจค โดยจะมีนามสกุลของโปรเจคไฟลเปน . PJT เสร็จแลวทําการคลิกที่ปุม Save เพ่ือทําการสรางโปรเจค

Page 25: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 25

รูปที่ 11 แสดงหนาตางของการสราง Project File

4. ตอจากน้ันจะปรากฏหนาตางของ PIC Wizard ขึ้นมา ในที่เราจะตองมากําหนดคาเริ่มตนกอนการเริ่มตนเขียนโปรแกรม ขั้นตอนแรกตองกําหนดเบอรของไมโครคอนโทรลเลอรที่เราตองใชกอน ในชองเมนู Device ในที่น้ีใชไมโครคอนโทรลเลอรเบอร PIC 16F684 ดังแสดงในรูปที่ 12 ขั้นตอนตอไปทําการกําหนดที่ Fuses ใหเลือก Oscillator แบบ High speed Osc [>4mhz] แลวคลิก ok

รูปที่ 12 แสดงการกําหนดคาในหนาตาง PIC Wizard

Page 26: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 26

5. โปรแกรมจะแสดง File ของโปรเจคท่ีไดทําการต้ังช่ือ name file ไว โดยจะมีฟงกชันการทํางานมาพรอมกับตัว compiler ดังแสดงในรูปที่ 13

รูปที่ 13 แสดงหนาตางของ PCW พรอมตัว Compiler ที่ใชการเขียน 6. ทําการเขียนโปรแกรมภาษา C หลังจากเขียนชุดคําสั่งตางของโปรแกรมเสร็จเรียบรอยแลว ขั้นตอนตอไปก็คือการ Compile ตรวจสอบความถูกตองของโปรแกรม โดยไปที่ Menu bar คลิกที่ Compile หรือกด (F9) โปรแกรมจะ Compile ตรวจสอบความถูกตองของโปรแกรม วามีคา Error หรือ warnings หรือไม

รูปที่ 14 แสดงหนาตางของการ Compile

Page 27: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 27

อุปกรณท่ีใชในการทดลอง

รายการอุปกรณ

รายการอุปกรณ รูป จํานวน 1.ไมโครคอนโทรเลอร PIC16F684

1

2. Bread Board ขนาด 8x5.5 cm.

1

3. Led สีเขียว สีแดง

5 5

4. Push switch

4

5. สายไฟแข็ง เบอร 22 สีแดง สีดํา

1 m 1 m

Page 28: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 28

รูปที่ 15 แสดงตําแหนงขาตางๆ ของไมโครคอนโทรลเลอรที่ออกมาจากชุดควบคุม

A1

A0

- -

C2

C1

C4

C3

A3

C5

Bc

Fw

R

L

เทา

ดํา

เขียว

เหลือ

มวง

ขาว

Rem

ote

Out

put

L2

93O

utpu

t M

iIn

put

L29

3

Rem

ote

ชมพ ู

น้ําตาล

- -

สม

เหลือ

เขียว

น้ํา

เงิน

เทา

มวง

น้ําเงิน

ขาว

เขียว

แด

เทา

ดํา

เขียว

เหลือ

มวง

ขาว

Page 29: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 29

การทดลองท่ี 1 ติดดับ LED 1 ดวง

จุดประสงค เพ่ือเรียนรูหลักการใชงานเอาตพุตพอรต แบบดิจิตอล 1 บิต (1 ขาพอรต) ควบคุมการติดดับของหลอด LED 1 ดวง ฟงกชัน/คําสั่งท่ีใชงาน

• Set_tris_c (address );

• output_high(port); และ output_low(port); • delay_ms(time);

การทํางาน/วงจรท่ีใชในการทดลอง การทดลองน้ีจะไดเห็นแนวคิดของการควบคุมพอรตของไมโครคอนโทรลเลอร PIC16F684 โดยใชขาพอรต RC5 ควบคุมการทํางานติดดับของหลอด LED 1 ดวงใหทุก ๆ 1 วินาที และใชฟงกชันของการทําซ้ํา while เขามาชวยใหทําซ้ําเดิมตลอด การตอวงจรใชงานจะแสดงตามรูป ขั้นตอนการดําเนินงาน

1. ตอวงจรตามรูป 2. เขียนโคดโปรแกรมการทดลองที่ 1 3. Compile และโปรแกรมลงบอรดไมโครคอนโทรลเลอร 4. ทดลองและดูผลการทํางานของโปรแกรม

Page 30: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 30

โคดโปรแกรม การทดลองที่ 1 ติดดับ LED 1 ดวง #include "16F684.h" #fuses HS,NOWDT,NOPROTECT #use delay(clock=20000000) void main() { Set_tris_a(0x00); (1) Set_tris_c(0x00); while (true) { output_high (PIN_C5); (2) delay_ms (1000); (3) output_low (PIN_C5); (4) delay_ms (1000); } } รายละเอียดโคดโปรแกรม (1) เปนการใชงานพอรตไมโครคอนโทรลเลอร PIC เปนเอาตพุต จะตองกําหนดทิศทางใหพอรตเปนเอาตพุตกอนโดยการใชฟงกชัน Set_tris_x(address); โดย x คือพอรตที่จะใชงาน ในที่น้ีจะใชงานพอรต a และ cเปนเอาตพุต หากตองการขา (บิต) ไหนของพอรตน้ันๆ เปนเอาตพุตใหกําหนดควาบิตเปน 0 (0 เทากับ output) การหาคาของ address สามารถหาไดดังน้ี สมมุติใหคาของฟงกชัน Set_tris_c(0xFE) โดย FE(เลขฐานสิบหก) หรือเทากับเลขฐานสองคือ 1111 1110 (เลขฐานสอง) เปนการกําหนดให LSB บิตเปน 0 หรือให RC0 เปน เอาตพุต สวนขาที่เหลือเปน อินพุต ตารางการกําหนดคาฟงกชัน Set_tris_b(0xFE);

บิต 7 บิต 6 บิต 5 บิต 4 บิต 3 บิต 2 บิต 1 บิต 0

1 1 1 1 1 1 1 0

Page 31: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 31

(2) ฟงกชัน output _high(PIN_C5); เปนการกําหนดใหเอาตพุตที่ออกจากขา RC5 เปนลอจิก 1 หรือ High ซึ่งจะมีผลทําใหหลอด LED สวาง

(3) ฟงกชัน delay_ms(1000); เปนการกําหนดคาเวลาในหนวยของมิลลิวินาที ในโปรแกรมกําหนดใหหนวงเวลา 1000 มิลลิวินาที หรือ 1 วินาที เพ่ือใหเห็นการติดและดับ ของหลอด LED

(4) ฟงกชัน output_low(PIN_C5); เปนการกําหนดใหเอาตพุตที่ออกจากขา RC5 เปนลอจิก 0 หรือ low ทําใหหลอด LED ดับ

Page 32: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 32

การทดลองท่ี 2 ไฟกระพริบและไฟวิ่ง

จุดประสงค เพ่ือเรียนรูการใชคําสั่งการทําซ้ํา โดยการควบคุมการทํางานของหลอด LED และการควบคุมพอรต ฟงกชัน/คําสั่งท่ีใช

• Set_tris_c(address);

• Output_high(port);

• Output_low(port); • Delay_ms(time);

• For(i=0;i<=50;i++); การทํางาน/วงจรท่ีใชในการทดลอง การทดลองน้ีจะแสดงใหเห็นถึงการควบคุมพอรตของไมโครคอนโทรลเลอร และควบคุมการทํางานของแตละขาในพอรตน้ันได โดยใชทําการใชฟงกชัน for loop มาควบคุมการทําซ้ําตามจํานวนที่ตองการ การทํางานของหลอด LED ที่ตอ RC5 อยูจะติดดับจํานวน 100 ครั้ง แลวไปกระทําในคําสั่ง for loop ถัดไปโดยมีชุดคําสั่งใหหลอด LED ติดดับเล่ือนจากขา RC1 ไปจนถึง RC4 การตอวงจรการใชงานแสดงดังรูป โคดโปรแกรม การทดลองที่ 2 ไฟกระพริบ และไฟว่ิง #include "16F684.h" #fuses HS,NOWDT,NOPROTECT #use delay(clock=20000000) //กําหนดสัญญาณนาฬิกามีคาเทากับ 20 MHz #use fast_io(a) //กําหนดใหพอรต a ทั้งหมดทําหนาที่เปนดิจิตอลอินพุตและดิจิตอลเอาตพุต #use fast_io(c) //กําหนดใหพอรต c ทั้งหมดทําหนาที่เปนดิจิตอลอินพุตและดิจิตอลเอาตพุต void main() {

Page 33: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 33

Set_tris_a(0x00); //กําหนดใหพอรต a มีหนาที่เปนเอาตพุตทั้งหมด Set_tris_c(0x00); //กําหนดใหพอรต c มีหนาที่เปนเอาตพุตทั้งหมด while(true) //ใหวนลูปไมรูจบ { int i , j; //กําหนดตัวแปร i และ j เปนแบบ integer for (i=0; i<=100; i++) // วนลูป 100 ครั้งใหคา i เพ่ิมทีละ 1 คา จากคาศูนยถึง 100 ทําให LED ติดดับ 100 ครั้ง { output_high(PIN_C5); delay_ms(100); output_low(PIN_C5); delay_ms(100); } for (j=0; j<=50; j++) // วนลูป 50 ครั้งใหคา j เพ่ิมทีละ 1 คา จากคาศูนยถึง 50 ทําให LED ติดดับ 100 ครั้ง { output_high(PIN_C1); delay_ms(100); output_low(PIN_C1); delay_ms(100); output_high(PIN_C2); delay_ms(100); output_low(PIN_C2); delay_ms(100); //ทําให LED ติดและดับเปนแบบไฟว่ิง output_high(PIN_C3); delay_ms(100); output_low(PIN_C3); delay_ms(100); output_high(PIN_C4); delay_ms(100); output_low(PIN_C4); delay_ms(100); } } }

Page 34: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 34

การทดลองท่ี 3 การทําไฟวิ่งโดยใชการเล่ือนบิต

จุดประสงค เรียนรูฟงกชันที่ใชในการเล่ือนบิตขอมูล แลวนําคาไปแสดงบนหลอด LED ฟงกชัน/คําสั่งท่ีใชงาน

• Set_tris_c(address);

• Output_high(PIN);

• Output_low(PIN);

• Output_c(x); • Delay_ms(time);

• Rotate_left(&x,1);

การทํางาน/วงจรท่ีใชในการทดลอง การทดลองน้ีจะแสดงใหเห็นถึงวิธีการควบคุมพอรตของไมโครคอนโทรลเลอร ดวยการเล่ือนบิตขอมูล โดยใชขาของพอรต RC โดยจะแสดงเปนไฟว่ิงจากซายไปขวา และเริ่มตนใหมที่ซายตลอด การตอวงจรใชงานดังรูป

โคดโปรแกรม การทดลองที่ 3 การทําไฟว่ิงโดยใชการเล่ือนบิต #include "16F684.h" #fuses HS, NOWDT, NOPROTECT #use delay(clock=20000000) //กําหนดสัญญาณนาฬิกามีคาเทากับ 20 MHz

Page 35: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 35

void main() { Set_tris_a(0x0F); //กําหนดให RA0-RA3 ทําหนาเปน input ที่เหลือเปน output Set_tris_c(0x00); //กําหนดใหขาในพอรต C ทั้งหมดทําหนาที่เปน output while(true) //ใหวนลูปไมรูจบ { int j; //กําหนดตัวแปร i และ j เปนแบบ integer byte x; //กําหนดตัวแปร x ใหเปนตัวแบบ byte x=0x01; //กําหนดคาเริ่มตนของตัวแปร x ใหมีคาเทากับ 01 (เลขฐานสิบหก) หรือ 0000 0001(เลขฐานสอง) for(j=0; j<=50; j++) //ทําซ้ํา จํานวน 50 ครั้ง { delay_ms(100); //หนวงเวลา 100 มิลลิวินาที output_c(x); //ใหพอรต C ทํางานเปนเอาตพุต ตามคาเริ่มตน x (0x01) delay_ms(100); //หนวงเวลา 100 มิลลิวินาที rotate_left( &x, 1); //ฟงกชันการเลื่อนบิตโดยเลื่อนใหมีคาเทากับ address ของคา x โดยอารกิวเมนตตัวสองจะเปนตัวกําหนดใหบิตที่เล่ือนมีคา 1 หรือ 0 ในที่น้ีเปนคา 1 output_c(0x00); //ใหพอรต C เอาตพุตที่ออกมีคาเปนศูนย คือ หลอด LED ดับหมด } } }

Page 36: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 36

การทดลอง 4 การควบคุมการทํางานของ LED โดยใชสวิตซ

จุดประสงค เรียนรูการรับ อินพุตจากสวิตซมาควบคุมการทํางานของเอาตพุตที่เปนหลอด LED ฟงกชัน/คําสั่งท่ีใชงาน

• Set_tris_c(address);

• Output_high(PIN); • Output_low(PIN);

• Delay_ms(time);

• for(i=0;i<150;i++)

• input(port)

• while(expression);

การทํางาน/วงจรท่ีใชในการทดลอง การทดลองน้ีจะแสดงใหเห็นถึงวิธีการกําหนดพอรตใหเปนอินพุตและเอาตพุต โดยการรับคามาจากสวิตซที่ตอวงจรแบบ Pull up จะทําใหเมื่อไมมีการกดสวิตซไมโครคอนโทรลเลอรจะไดรับคาลอจิก 1 หรือ high แตเมื่อทําการกดสวิตซจะทําใหไมโครคอนโทรลเลอรรับคาลอจิก 0 หรือ low การทํางานของโปรแกรม เมื่อทําการกดสวิตซหลอด LED จะไมติด และเมื่อไมไดกดสวิตซหลอด LED 1 และ LED 2 จะกระพริบ 150 ครั้งแลวหลอด LED 3 จะติด และจะดับเมื่อสวิตซถูกกด

Page 37: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 37

โคดโปรแกรม การทดลองที่ 4 การควบการทํางานของ LED โดยใชสวิตซ #include "16F684.h" #fuses HS, NOWDT, NOPROTECT #use delay(clock=20000000) #define led1 PIN_C1 //กําหนดใหการเรียกใชขา RC1 แทนดวย ช่ือ led1 #define led2 PIN_C2 //กําหนดใหการเรียกใชขา RC2 แทนดวย ช่ือ led2 #define led3 PIN_C3 //กําหนดใหการเรียกใชขา RC3 แทนดวย ช่ือ led3 #define sw_1 PIN_C5 //กําหนดใหการเรียกใชขา RC5 แทนดวย ช่ือ sw_1 void main() //ฟงกชันหลัก { Set_tris_c(0x20); //กําหนดใหขา RC0, RC1, RC2, RC3, RC4, RC6 และ RC6 เปน output ขา RC 5 เปน input output_low(led3); //กําหนดเริ่มตนใหหลอด LED 3 ดับ while(true) //วนลูปไมรูจบ { int i; //กําหนดตัวแปร i เปนแบบ integer if(input(sw_1)) //ถาสวิตซไดรับลอจิก 1 ใหทําชุดคําสั่งดานลาง { for(i=0;i<150;i++) //วนลูปจํานวน 150 ครั้ง โดยเพ่ิมทีละ 1 { output_high(led1); output_high(led2); delay_ms(100); output_low(led1); output_low(led2); delay_ms(100); while (!input(sw_1)); //ตรวจสอบวาสวิตซไดรับการกดหรือไม } output_high(led3); //วนลูปควบ 150 ครั้งแลว LED 3 ติด } while(input(sw_1)); //ตรวจสอบสวิตซไดรับการกดหรือไม if(!input(sw_1)); //ถาสวิตซถูกกด หรือไดรับลอจิก 0 ทํางานตามชุดคําสั่งดานลาง(LED ดับ) {

Page 38: ไมโครคอนโทรลเลอร PIC · microcontroller pic 16f684 ในป จจุบันเครื่องใช ไฟฟ าอุปกรณ อิเล็กทรอน

KINGMUNGKUT’S UNIVERSITY OF TECNOLOGY THONBURI Mechanical Engineering

Fish Robot Camp 2

เอกสารประกอบการอบรมคายหุนยนตปลาครั้งที่ 2 38

output_high(led1); output_low(led2); output_low(led3); } } }