1
ใบความรู้ที่ 1 หน่วยที่ 1
สอนคร้ังท่ี 1-2
ชื่อวชิ า ไมโครคอนโทรลเลอร์ รหัสวชิ า 3104-2011 จํานวนชั่วโมงรวม 8 ชั่วโมง
ชื่อหน่วย โครงสร้างของไมโครคอนโทรลเลอร์ จํานวนชั่วโมงสอน 4 ชั่วโมง
ช่ือเรื่อง โครงสร้างของไมโครคอนโทรลเลอร์
สาระสําคญั
ไมโครคอนโทรลเลอร์ คืออุปกรณ์อิเล็กทรอนิกส์ที่ใชก้ บั ระบบควบคุมทางอิเล็กทรอนิกส์ใน
งานอุตสาหกรรมหรือควบคุมการทาํ งานของเคร่ืองใชไ้ ฟฟ้า สามารถเปลี่ยนแปลงลาํ ดบั การทาํ งานได้
ดว้ ยการเปลี่ยนแปลงชุดคาํ สั่งที่บรรจุอยู่ในหน่วยความจาํ ไมโครคอนโทรลเลอร์ใช้ควบคุมการ
ทาํ งานของเครื่องใช้ไฟฟ้าหรือระบบควบคุมทางอิเล็กทรอนิกส์ ให้มีประสิทธิภาพในการทาํ งาน
สูงข้ึน มีโครงสร้างหลกั 5 หน่วย คือ หน่วยประมวลผลกลาง หน่วยเก็บขอ้ มูล หน่วยสําหรับต่อ
ประสานกับอุปกรณ์ภายนอก วงจรกาํ เนิดสัญญาณนาฬิกา หน่วยบริการ การอินเตอร์รัพต์
สาระการเรียนรู้
1. ความหมายของไมโครคอนโทรลเลอร์
2.โครงสร้างของไมโครคอนโทรลเลอร์
3. ระบบบสั และการทาํ งาน
4. หน่วยความจาํ และรีจิสเตอร์
5. วงจรประกอบการทาํ งานของไมโครคอนโทรลเลอร์
จุดประสงค์การเรียนรู้
จุดประสงค์ทวั่ ไป
เพือ่ ใหม้ ีความรู้และความเขา้ ใจเก่ียวกบั โครงสร้างของไมโครคอนโทรลเลอร์
จุดประสงค์เชิงพฤติกรรม
1. บอกความหมายของไมโครคอนโทรลเลอร์ไดถ้ ูกตอ้ ง
2. บอกโครงสร้างของไมโครคอนโทรลเลอร์ไดถ้ ูกตอ้ ง
3. อธิบายการทาํ งานของระบบบสั ไดถ้ ูกตอ้ ง
4. อธิบายการทาํ งานของหน่วยความจาํ และรีจิสเตอร์ไดถ้ ูกตอ้ ง
5. อธิบายวงจรประกอบการทาํ งานของไมโครคอนโทรลเลอร์ไดถ้ ูกตอ้ ง
2
ในยุคปัจจุบนั ไมโครคอนโทรลเลอร์ไดเ้ ขา้ มามีบทบาทต่อวงการอุตสาหกรรมเป็ นอย่างมาก
เน่ืองจากใช้เป็ นอุปกรณ์หลกั ควบคุมการทาํ งานของผลิตภณั ฑ์ สามารถเขียนชุดคาํ สั่งเพ่ือกาํ หนด
รูปแบบการควบคุมไดอ้ ยา่ งอิสระ จึงนาํ มาใช้ควบคุมระบบอตั โนมตั ิของอุปกรณ์ไฟฟ้าและระบบ
อิเล็กทรอนิกส์อุตสาหกรรม เช่น ระบบอตั โนมตั ิของเครื่องซกั ผา้ ระบบสมองกลรถยนต์ เป็นตน้
1.1 ความหมายของไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์ เป็ นช่ือของอุปกรณ์อิเล็กทรอนิกส์แบบหน่ึงที่รวมเอาหน่วยประมวลผล
หน่วยคาํ นวณทางคณิตศาสตร์และ วงจรรับสัญญาณอินพุต วงจรขบั สัญญาณเอาตพ์ ุต หน่วยความจาํ
วงจรกาํ เนิดสญั ญาณไวด้ ว้ ยกนั สามารถนาํ ไปใชง้ านแทนวงจรอิเล็กทรอนิกส์ท่ีซบั ซอ้ นไดเ้ ป็ นอยา่ งดี
ทาํ ใหล้ ดจาํ นวนอุปกรณ์และขนาดของระบบ ในขณะท่ีมีขีดความสามารถสูงข้ึนภายใตง้ บประมาณที่
เหมาะสม ไมโครคอนโทรลเลอร์มาจากคาํ 2 คาํ รวมกันคือ “ไมโคร” (Micro) ซ่ึงหมายถึง
ไมโครโปรเซสเซอร์ (Microprocessor) เป็ นอุปกรณ์ประมวลผลขนาดเล็ก ภายในประกอบดว้ ยหน่วย
ประมวลผลกลางหรือซีพียู (Central Processing Unit : CPU) หน่วยคาํ นวณทางคณิตศาสตร์และ
(Arithmetic Logic Unit : ALU) วงจรเช่ือมต่อหน่วยความจาํ และวงจรสัญญาณนาฬิกา อีกคาํ หน่ึงคือ
“คอนโทรลเลอร์” (Controller) หมายถึงอุปกรณ์ควบคุม ดงั น้นั ไมโครคอนโทรลเลอร์จึงเป็ นอุปกรณ์
ที่ใชใ้ นการควบคุม โดยสามารถเขียนชุดคาํ สง่ั เพอ่ื กาํ หนดรูปแบบการควบคุมไดอ้ ิสระ
ไมโครคอนโทรลเลอร์ คืออุปกรณ์อิเล็กทรอนิกส์ที่ทาํ หน้าท่ีเสมือนคอมพิวเตอร์ขนาดเล็ก ใช้
ควบคุมการทาํ งานของเคร่ืองใชไ้ ฟฟ้าหรือระบบควบคุมทางอิเล็กทรอนิกส์ ใหม้ ีประสิทธิภาพในการ
ทาํ งานสูงข้ึน สามารถเปล่ียนแปลงลาํ ดบั ข้นั การทาํ งานไดด้ ว้ ยการแกไ้ ขชุดคาํ สง่ั ภายในหน่วยความจาํ
ไมโครคอนโทรลเลอร์มีโครงสร้างหลกั 5 หน่วยส่วนทาํ งานสมั พนั ธ์กนั คือ
1) หน่วยประมวลผลกลาง (Processing Unit)
2) หน่วยสาํ หรับเกบ็ ขอ้ มูล (Memory Unit)
3) หน่วยสาํ หรับเชื่อมตอ่ สัญญาณทางไฟฟ้า (Interface Unit)
4) วงจรกาํ เนิดสัญญาณนาฬิกา (Oscillator Circuit)
5) หน่วยการอินเตอร์รัพต์ (Interrupt) สญั ญาณ
สรุปไดว้ า่ ไมโครคอนโทรลเลอร์คือ อุปกรณ์อิเล็กทรอนิกส์ท่ีรวมเอาหน่วยประมวลผล หน่วย
คาํ นวณทางคณิตศาสตร์และ วงจรรับสัญญาณอินพุต วงจรขบั สัญญาณเอาตพ์ ุต หน่วยความจาํ วงจร
กาํ เนิดสัญญาณไวด้ ว้ ยกนั ซ่ึงนาํ ไปใช้ควบคุมการทาํ งานของเครื่องใชไ้ ฟฟ้าหรือระบบควบคุมทาง
3
อิเล็กทรอนิกส์ สามารถเขียนชุดคาํ ส่ังเพื่อกาํ หนดรูปแบบการควบคุมไดอ้ ิสระ ไมโครคอนโทรลเลอร์
ประกอบดว้ ยโครงสร้างหลกั 5 ส่วน1 ดงั รูปที่ 1.1
ª ¦ µÎÁ· ´µµ¯ · µ
®ªn¥ÁÈ
°o¤¼¨ ®ªn¥¦ ³ Á¤· ¨ ¨ µ ®nª ¥µ¦ ° · Á° ¦ ¡´ r
®nª ¥Áɺ° ¤n° ´µµÅ¢ ¢ jµ
รูปท่ี 1.1 โครงสร้างหลกั ของไมโครคอนโทรลเลอร์
ทม่ี า : (สมาร์ทเลิร์นน่ิง, 2550, 3)
1.1.1 หน่วยประมวลผลกลาง
หน่วยประมวลผลกลาง คือส่วนท่ีทาํ หนา้ ท่ีคาํ นวณทางคณิตศาสตร์หรือการตดั สินใจแบบ
มีเง่ือนไข ซ่ึงมีการทาํ งานท่ีซบั ซ้อน ลาํ ดบั ในการทาํ งานของส่วนประมวลผลข้ึนอยกู่ บั การจดั ลาํ ดบั
คาํ ส่งั ซ่ึงบรรจุอยภู่ ายในของส่วนพ้นื ที่เก็บขอ้ มูล
1.1.2 หน่วยเก็บขอ้ มูล
หน่วยเก็บขอ้ มูล ทาํ หนา้ ท่ีเก็บขอ้ มูลแบ่งได้ 2 แบบคือ เก็บขอ้ มูลแบบชวั่ คราว (Random
Access Memory : RAM) และแบบก่ึงถาวรหรืออีอีพร็อม (Erasable Program ble Read Only
Memory : EPROM) การเก็บขอ้ มูลแบบชว่ั คราวขอ้ มูลสามารถเปล่ียนแปลงไดต้ ลอดเวลาและถูกใช้
เก็บค่าตวั แปรในการคาํ นวณ (Variable) ขอ้ มูลน้ีจะสูญหายเม่ือไม่มีไฟเล้ียง การเก็บขอ้ มูลแบบก่ึงถาวร
เป็ นการเก็บรหสั ตน้ ฉบบั การทาํ งาน (Code Program) ขอ้ มูลประเภทน้ีสามารถเปลี่ยนแปลงไดด้ ว้ ย
วธิ ีการพิเศษ ขอ้ มูลจะไมส่ ูญหายถึงแมว้ า่ ไม่มีไฟไปเล้ียงตวั ไมโครคอนโทรลเลอร์
1 สมาร์ทเลิร์นน่ิง, PIC Microcontroller Learning-By-Doing ด้วยภาษา C, (กรุงเทพฯ : สมาร์ทเลิร์นนิ่ง, 2550), 1.
4
1.1.3 หน่วยเช่ือมต่อสัญญาณทางไฟฟ้า
หน่วยเช่ือมต่อสัญญาณทางไฟฟ้า ทาํ หน้าท่ีติดต่อสัญญาณระหวา่ งอุปกรณ์ภายนอกกบั
ไมโครคอนโทรลเลอร์มี 2 แบบคือ อินพุตเอาตพ์ ุตแบบดิจิทลั (Digital I/O) โดยรับและส่งขอ้ มูลดว้ ย
สัญญาณทางดิจิทลั (Digital Signal) และอินพุตเอาตพ์ ุตแบบแอนะล็อก (Analog I/O) โดยรับและส่ง
ขอ้ มูลดว้ ยสัญญาณทางแอนะลอ็ ก (Analog Signal)
1.1.4 วงจรกาํ เนิดสญั ญาณนาฬิกา
วงจรกาํ เนิดสัญญาณนาฬิกา ทาํ หน้าท่ีกาํ เนิดสัญญาณนาฬิกาด้วยวงจรออสซิลเลเตอร์
(Oscillator Circuit) ประกอบดว้ ยอุปกรณ์หลกั คือ คริสตอล (Crystal) ทาํ หนา้ ที่กาํ หนดช่วงเวลาการ
ประมวลผล (Execute Time) ของหน่วยประมวลผลกลางหรือซีพียู โดยจะมีผลต่อความเร็วในการ
ประมวลผลของไมโครคอนโทรลเลอร์ นอกจากน้ีสัญญาณนาฬิกาจะทาํ หน้าท่ีเป็ นตัวกาํ หนด
ความเร็วในการรับส่งขอ้ มูลดิจิทลั แบบอนุกรม (Digital Series Communication Signal) และกาํ หนด
ความถ่ีในส่วนของตวั ต้งั เวลา (Timer) ภายในตวั ไมโครคอนโทรลเลอร์ดว้ ย
1.1.5 หน่วยบริการอินเตอรัพตส์ ญั ญาณ
หน่วยบริการอินเตอร์รัพตส์ ัญญาณ ทาํ หนา้ ท่ีจดั ลาํ ดบั ความสําคญั ในการทาํ งาน ในกรณีท่ี
ไมโครคอนโทรลเลอร์ทาํ งานหลายงานพร้อมกนั (Multitasking) ซ่ึงเป็ นการอาํ นวยความสะดวกใน
การเขียนชุดคาํ ส่งั เพอ่ื รองรับการทาํ งานลกั ษณะน้ี
1.1.6 ประเภทของไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์แบ่งตามลกั ษณะการประมวลผลได้ 2 ประเภทคือ ประเภท RISC
(Reduced Instruction Set Computer) และประเภท CISC (Complex Instruction Set Computer) ซ่ึงแต่
ละประเภทจะมีการทาํ งานและโครงสร้างภายในที่แตกตา่ งกนั ดงั น้ี
1.1.6.1 ไมโครคอนโทรลเลอร์ประเภท RISC โครงสร้างการทาํ งานมีชุดคาํ สั่งน้อย แต่
ละคาํ สง่ั ทาํ งานแบบง่าย ๆ มีความเร็วในการทาํ งานแต่ละคาํ ส่ังสูงมาก แต่มีขอ้ ดอ้ ยคือชุดคาํ สั่งมีเพียง
คําสั่งท่ีใช้ทํางานง่าย ๆ เช่น คําส่ังในการคํานวณจะมีแค่เพียงคําสั่ง บวกและลบ ตัวอย่าง
ไมโครคอนโทรลเลอร์แบบ RISC คือไมโครคอนโทรลเลอร์อนุกรม PIC16F87X ของบริษทั ไมโครชิพ
(Microchip) เป็นตน้ โครงสร้างการทาํ งาน แสดงดงั รูปที่ 1.2
5
.รูปที่ 1.2 โครงสร้างหลกั ของไมโครคอนโทรลเลอร์แบบ RISC
ทม่ี า : (http://www.prism.gatech.edu/~kadams6/iges/risc_i_scr.gif)
1.1.6.2 ไมโครคอนโทรลเลอร์ประเภท CISC โครงสร้างการทาํ งานมีชุดคาํ สั่งมากกว่า
แบบ RISC แต่ละคาํ สั่งสามารถทาํ งานท่ีซบั ซ้อนไดโ้ ดยใช้เพียงแค่ 1 คาํ สั่ง เช่น การเขียนชุดคาํ ส่ัง
คาํ ส่ังคูณค่า 10 กบั ค่าตวั แปร ถา้ เราใชค้ าํ สั่งของไมโครคอนโทรลเลอร์แบบ RISC เราจะตอ้ งใชก้ าร
วนคาํ สั่งบวกถึง 10 รอบแต่ ไมโครคอนโทรลเลอร์ประเภท CISC จะทาํ เสร็จภายในคาํ สั่งเดียว ตวั อยา่ ง
ไมโครคอนโทรลเลอร์แบบ CISC คือไมโครคอนโทรลเลอร์ตระกูล 64HC ของบริษทั โมโตโรล่า เป็ น
ตน้ แสดงดงั รูปที่ 1.3
รูปท่ี 1.3 โครงสร้างหลกั ของไมโครคอนโทรลเลอร์แบบ CISC
ทมี่ า : (http://dev.emcelettronica.com/3-steps-to-your-first-development-board.)
6
เอกสารประกอบการสอนน้ีใช้ไมโครคอนโทรลเลอร์ PIC16F877A ของบริษทั ไมโครชิพ
เนื่องจากมีความเร็วในการประมวลผลสูง คอมไพเลอร์และชุดคาํ สั่งมีความเหมาะสมกบั พ้ืนฐาน ของ
นกั ศึกษาระดบั ประกาศนียบตั รวชิ าชีพช้นั สูง สาขาวชิ าไฟฟ้ากาํ ลงั
1.2 โครงสร้างของไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์ PIC16F877A ไดร้ วมเอาหน่วยประมวลผล หน่วยคาํ นวณทางคณิตศาสตร์
และ วงจรรับสัญญาณอินพุตและขบั สัญญาณเอาต์พุต วงจรกาํ เนิดสัญญาณและหน่วยความจาํ ไว้
ด้วยกัน ประมวลผลคําสั่งแบบไปป์ ไลน์ (Pipe Line) มีสถาปัตยกรรมแบบฮาร์วาร์ด (Harvard
Architecture) โดยมีการแยกหน่วยความจาํ โปรแกรม (Program Memory) กบั หน่วยความจาํ ขอ้ มูล
(Data Memory) ออกจากกนั แสดงดงั รูปท่ี 1.4
รูปท่ี 1.4 สถาปัตยกรรมแบบฮาร์วาร์ด
ทม่ี า : (ณฐั พล วงศส์ ุนทรชยั และชยั วฒั น์ ลิ้มพรจิตรวไิ ล, 2549, 7)
การประมวลผลคาํ สั่งแบบไปป์ ไลน์ คือ ขณะกระทาํ การคาํ สั่ง (Execute) ในปัจจุบนั สามารถ
ไปนาํ (Fetch) ชุดคาํ สั่งถดั ไปมาแปลเป็ นภาษาเครื่องเตรียมไว้ จึงทาํ ให้ใช้เวลาในการประมวลผล
ชุดคาํ ส่งั 1 ชุดคาํ สัง่ ภายในสญั ญาณนาฬิกา 1 ลูก แสดงดงั รูปท่ี 1.5
รูปที่ 1.5 แผนภาพกระบวนการอา่ นขอ้ ความสง่ั ของไมโครคอนโทรลเลอร์ PIC16F877A
ทม่ี า : (วบิ ูลย์ ชื่นแขก, 2549, 15)
7
1.2.1 ชนิดของไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์ แบ่งตามชนิดของหน่วยความจาํ โปรแกรม ได้ 3 ชนิดคือ
1.2.1.1 หน่วยความจาํ ชนิดบนั ทึกภาษาเคร่ืองไดค้ ร้ังเดียว (One Time Programble : OTP)
เป็ นไมโครคอนโทรลเลอร์ ท่ีสามารถบนั ทึกภาษาเคร่ือง (Manchine Language) ไดค้ ร้ังเดียว ไม่สามารถ
ปรับปรุง แกไ้ ขภาษาเครื่องใหมไ่ ด้ ใชต้ วั อกั ษร C เป็นรหสั แสดงที่ตวั ไมโครคอนโทรลเลอร์
1.2.1.2 หน่วยความจาํ ชนิดอีพร็อม (Erasable Programable Read Only Memory :
EPROM) ไมโครคอนโทรลเลอร์ชนิดน้ี สามารถลบและบนั ทึกภาษาเครื่องใหม่ได้ โดยฉายแสง
อลั ตราไวโอเลต (Ultraviolet) ทางช่องใส ท่ีอยดู่ า้ นบนของไมโครคอนโทรลเลอร์ ประมาณ 5-10 นาที
แต่มีการจาํ กัดจาํ นวนคร้ังในการเปลี่ยนแปลงเช่นกัน ใช้ตวั อักษร JW เป็ นรหัสแสดงที่ตัว
ไมโครคอนโทรลเลอร์
1.2.1.3 หน่วยความจาํ ชนิดอีอีพร็อม (Electronically Erasable Programable ROM :
EEPROM ) ส่วนของหน่วยความจาํ โปรแกรม สามารถลบและบนั ทึกรหัสภาษาเคร่ืองใหม่ไดส้ ูงสุด
100,000 คร้ัง เก็บขอ้ มูลไดถ้ ึง 40 ปี ใชต้ วั อกั ษร F เป็ นรหัสแสดงที่ตวั ไมโครคอนโทรลเลอร์ เช่น
PIC16F877A
ไมโครคอนโทรลเลอร์ที่นํามาใช้ศึกษาในเอกสารประกอบการสอนน้ี เป็ นตระกูล
PIC16F877A มีลกั ษณะตวั ถงั แบบ PDIP มีขาจาํ นวน 40 ขา หนา้ ที่และตาํ แหน่งขาแสดงดงั รูปท่ี 1.6
รูปท่ี 1.6 หนา้ ที่และตาํ แหน่งขาของ PIC16F877 ตวั ถงั แบบ PDIP
ทม่ี า : (Microchip, 2548, 3)
8
1.2.2 คุณสมบตั ิหลกั ของไมโครคอนโทรลเลอร์ PIC16F877A
1.2.2.1 ซีพียูเป็ นแบบ RISC (Reduced Instruction Set Computer) เป็ นซีพียูท่ีใชเ้ วลาใน
การประมวลคาํ ส่ังเพียง 1 หรือ 2 Machine Cycle ต่อคาํ ส่ังเท่าน้นั การประมวลผลคาํ ส่ังเป็ นลกั ษณะ
ไปป์ ไลน์ (Pipe Line) คือขณะประมวลผลคาํ สั่งแรกจะทาํ การโหลดคาํ สั่งถดั ไปมาเตรียมรอไวท้ าํ ให้
การทาํ งานที่รวดเร็วมากข้ึน และมีคาํ ส่งั ใชง้ านจาํ นวน 35 คาํ ส่งั
1.2.2.2 สามารถกระทาํ คาํ ส่งั โดยใชส้ ญั ญาณเพียงหน่ึงรอบ (Cycle) ยกเวน้ คาํ สั่งกระโดด
1.2.2.3 ความถี่ของสญั ญาณนาฬิกา เพ่ือกาํ หนดจงั หวะการทาํ งานในการประมวลผล มีค่า
ต้งั แตไ่ ฟตรงถึงคา่ สูงสุดท่ี 20 เมกกะเฮิรตซ์ (MHz)
1.2.2.4 มีหน่วยความจาํ โปรแกรม (Program Memory) เป็นท่ีเก็บโปรแกรมท่ีเกิดจากการ
เขียนโปรแกรมโดยท่ีสามารถลบและเขียนซ้าํ ลงไปใหม่ได้ มีขนาด 8 กิโลเวริ ์ด หน่วยความจาํ ขอ้ มูล
แรมหรือรีจิสเตอร์ (RAM or Register) เป็นท่ีเก็บขอ้ มูลของตวั แปรไว้ หน่วยความจาํ น้ีตอ้ งมีการจ่าย
แรงดนั ไฟฟ้าใหว้ งจรตลอดเวลา มีขนาด 368 ไบต์ และหน่วยความจาํ ขอ้ มูลอีอีพร็อม (EEPROM)
เพื่อใชเ้ ก็บขอ้ มูลในตวั แปรต่าง ๆ ท่ีสาํ คญั เมื่อหยดุ จ่ายไฟหน่วยความจาํ แบบน้ียงั สามารถเกบ็ ขอ้ มูล
ไวไ้ ด้ มีขนาด 256 ไบต์
1.2.2.5 สามารถตอบสนองแหล่งกาํ เนิดอินเตอร์รัพตส์ ูงสุดได้ 15 แหล่ง ซ่ึงเป็ นฟังก์ชั่น
เสริมที่คอยรับสัญญาณการขดั จงั หวะการทาํ งานท้งั ภายในและภายนอก เมื่อไมโครคอนโทรลเลอร์
ประมวลผลคาํ สั่งตา่ ง ๆ ตามโปรแกรมท่ีกาํ หนดข้ึน
1.2.2.6 สามารถเลือกระดบั การป้องกนั ขอ้ มูล (Code Protection) ไดท้ ้งั ในหน่วยความจาํ
โปรแกรม และหน่วยความจาํ ขอ้ มูล
1.2.2.7 มีโหมดประหยดั พลงั งาน (Sleep Mode) เป็ นฟังกช์ นั การทาํ งานของซีพียูที่มีการ
ทาํ งานในระดบั กระแสไฟฟ้าท่ีต่าํ มากทาํ ใหป้ ระหยดั พลงั งานของแหล่งจา่ ยไฟได้
1.2.2.8 สามารถเลือกแหล่งสัญญาณนาฬิกา (Oscilator) ได้หลายโหมด เพ่ือกาํ หนด
จงั หวะการทาํ งานในการประมวลผล เช่น สัญญาณนาฬิกาจากคริสตลั พลงั งานต่าํ (LP), สัญญาณ
นาฬิกาจากคริสตลั แบบเรโซเนเตอร์ (XT), สัญญาณนาฬิกาจากคริสตลั แบบความเร็วสูง (HS) และ
สัญญาณนาฬิกาจากวงจรอาร์ซี (RC)
1.2.2.9 มีวงจรเพาเวอร์ออนรีเซต (Power-On Reset : POR) เกิดข้ึนหลงั จากที่มีการจ่าย
แรงดนั ไฟฟ้าใหก้ บั ไมโครคอนโทรลเลอร์ ซ่ึงจะควบคุมใหไ้ มโครคอนโทรลเลอร์อยใู่ นสภาวะรีเซต
จนกวา่ แรงดนั ไฟฟ้าจะเพ่มิ ข้ึนถึงจุดท่ีสูงเพียงพอใหไ้ มโครคอนโทรลเลอร์พร้อมทาํ งานได้
1.2.2.10 มีวงจรเพาเวอร์อปั ไทเมอร์ (Power-up Timer : PWRT) เป็ นตวั กาํ หนดให้
ไมโครคอนโทรลเลอร์อยู่ในสภาวะรีเซตจนกว่าแรงดันไฟฟ้าจะเพิ่มถึงจุดท่ีทํางานได้ และ
9
ออสซิลเลเตอร์สตาร์ทอปั ไทเมอร์ (Oscillator Start-up Timer : OST) ทาํ หนา้ ท่ีหน่วงเวลาการทาํ งาน
ของซีพียู เพือ่ ใหส้ ่วนกาํ เนิดสญั ญาณนาฬิกาไดเ้ ร่ิมตน้ ทาํ งานและสร้างสัญญาณนาฬิกาที่มีเสถียรภาพ
เพียงพอ แลว้ ออสซิลเลเตอร์สตาร์ทอปั ไทเมอร์จะทาํ งานก็ต่อเม่ือเลือกโหมดสัญญาณนาฬิกาเป็ น
แอลพี (LP), เอก็ ที (XT) หรือ เอชเอส (HS) เท่าน้นั
1.2.2.11 มีวงจรวอตช์ด็อกไทเมอร์ (Watchdog Timer) เป็ นวงจรสําหรับการรีเซตเมื่อ
ไมโครคอนโทรลเลอร์อยู่ในสภาวะไม่ทาํ งานหรือทาํ งานผิดพลาดบางอย่าง วอตช์ด็อกไทเมอร์จะ
สร้างสัญญาณรีเซตภายในส่งมายงั ซีพียู และทาํ ให้เกิดการรีเซตไมโครคอนโทรลเลอร์ข้ึน ซ่ึงมีความ
เที่ยงตรงในการทาํ งานสูง
1.2.2.12 สามารถทาํ งานที่ไฟเล้ียงวงจรต้งั แต่ +2 โวลต์ ถึง +5.5 โวลต์
1.2.2.13 กระแสซิงกแ์ ละกระแสซอร์ส (Current Sink and Current Source) แต่ละพอร์ต
สามารถจ่ายกระแสไดไ้ ม่เกิน 25 มิลลิแอมป์
1.2.2.14 สามารถอา่ นและเขียนหน่วยความจาํ โปรแกรมได้
1.2.2.15 สามารถโปรแกรมขอ้ มูลลงหน่วยความจาํ โดยใช้แรงดนั ไฟฟ้าต่าํ กว่า +5 โวลต์
(Low Voltage Programming) ได้
1.2.2.16 การใชพ้ ลงั งานไฟฟ้าในกรณีไม่ขบั ภาระทางไฟฟ้า (Load)
1) กระแสไฟฟ้านอ้ ยกว่า 2 มิลลิแอมป์ ท่ีแรงดนั ไฟเล้ียง +5 โวลต์และสัญญาณ
นาฬิกา 4 เมกกะเฮิรตซ์
2) กระแสไฟฟ้า 20 ไมโครแอมป์ ท่ีแรงดนั ไฟเล้ียง +3 โวลตแ์ ละสัญญาณนาฬิกา
32 กิโลเฮิรตซ์
3) กระแสไฟฟ้านอ้ ยกวา่ 1 ไมโครแอมป์ ในโหมดประหยดั พลงั งาน (Stand by)
1.2.2.17 มีพอร์ตสําหรับเช่ือมต่อสัญญาณทางไฟฟ้าแบบอินพุตเอาตพ์ ุต จาํ นวน 5 พอร์ต
ประกอบดว้ ย
1) พอร์ตเอ (PORTA) จาํ นวน 6 ขา ประกอบดว้ ย RA0 - RA5
2) พอร์ตบี (PORTB) จาํ นวน 8 ขา ประกอบดว้ ย RB0 – RB7
3) พอร์ตซี (PORTC) จาํ นวน 8 ขา ประกอบดว้ ย RC0 – RC75
4) พอร์ตดี (PORTD) จาํ นวน 8 ขา ประกอบดว้ ย RD0 – RD7
5) พอร์ตอี (PORTE) จาํ นวน 3 ขา ประกอบดว้ ย RE0, RE1 และ RE2
1.2.3 คุณสมบตั ิพิเศษของไมโครคอนโทรลเลอร์ PIC16F877A
1.2.3.1 มีขาพอร์ตทาํ หน้าที่ไทเมอร์/เคาท์เตอร์ (Timer/Counter) ทาํ หน้าที่เป็ นตวั ต้งั เวลา
และตวั นบั จาํ นวน 3 ชุด ประกอบดว้ ย ไทเมอร์ 0 (Timer0) ขนาด 8 บิต มีปรีสเกลเลอร์ (Prescaler)
10
ขนาด 8 บิตในตวั สําหรับไทเมอร์ 1 (Timer1) มีขนาด 16 บิตมีปรีสเกลเลอร์ในตวั และไทเมอร์ 2
(Timer2) ขนาด 8 บิตมีโพสสเกลเลอร์ (Postscaler) และรีจิสเตอร์คาบเวลาขนาด 8 บิต 1 ตวั
1.2.3.2 มีโมดูลวงจรแปลงสัญญาณแอนะล็อกเป็ นสัญญาณดิจิทัล (Analog/Digital
Converter Module) ใชแ้ ปลงค่าสัญญาณแอนะล็อกเป็ นสัญญาณดิจิทลั เช่น แรงดนั ไฟฟ้าจากอุปกรณ์
ตรวจจบั ภายนอกที่มีการเปล่ียนแปลงสัญญาณเป็ น 0 โวลต์ ถึง 5 โวลตท์ ี่ต่อกบั ขาอินพุตเพ่ือนาํ ค่า
แรงดนั ไฟฟ้าเขา้ ไปประมวลผลภายใน ซ่ึงผลการประมวลผลจะมีขนาด 8 บิตที่สามารถแยกความ
แตกต่างของสัญญาณทางอินพุตได้ 256 ระดบั และแบบ 10 บิตที่สามารถแยกความแตกต่างของ
สัญญาณทางอินพุตไดส้ ูงถึง 1,024 ระดบั โดยสามารถต่อท่ีขาของพอร์ต A และตอ้ งมีการกาํ หนดค่า
รีจิสเตอร์ ADCON ดว้ ย ประกอบดว้ ย AN0 (ขาที่ 2) AN1 (ขาที่ 3) AN2/VREF- (ขาท่ี 4) สามารถ
กาํ หนดดว้ ยโปรแกรมเป็ นขาอา้ งอิงไฟลบได้ AN3/VREF+ (ขาที่ 5) สามารถกาํ หนดดว้ ยโปรแกรม
เป็นขาอา้ งอิงไฟบวกได้ RA4 (ขาท่ี 6) และ RA5 (ขาท่ี 7)
1.2.3.3 มีโมดูลวงจรตรวจจบั สัญญาณ/วงจรเปรียบเทียบสัญญาณ/วงจรกาํ เนิดสัญญาทาง
ความกวา้ งพลั ส์ (Compare/Capture/PWM : CCP Module) จาํ นวน 2 ชุด โดยโมดูลวงจรตรวจจบั
สัญญาณ (Capture) มีขนาด 16 บิต ความละเอียดสูงสุด 12.5 นาโนวินาที โมดูลวงจรเปรียบเทียบ
สัญญาณ (Compare) มีขนาด 16 บิต ความละเอียดสูงสุด 200 นาโนวินาที และโมดูลวงจรกาํ เนิด
สญั ญาณทางความกวา้ งพลั ส์ (Pulse Width Modulation) มีความละเอียดสูงสุด 10 บิต
1.2.3.4 มีโมดูลวงจรการส่ือสารอนุกรมแบบยูนิเวอแซลซิงโครนัส/อะซิงโครนัส
(Universal Synchronous Asynchronous Receiver/Transmitter : USART Module) เป็ นโมดูลสําหรับ
การส่ือสารที่อยภู่ ายในตวั ไมโครคอนโทรลเลอร์ ซ่ึงจะมีโหมดการทาํ งานอยู่ 2 โหมด คือ โหมด
ส่ือสารอนุกรมแบบซิงโครนสั ประกอบดว้ ย โมดูลเช่ือมต่ออุปกรณ์แบบอนุกรม (Serial Peripheral
Inter facing : SPI) โมดูลการเชื่อมต่อระบบบสั แบบไอสแควซี (Inter-IC Communication : I2C) และ
โหมดส่ือสารอนุกรมแบบอะซิงโครนสั โดยสามารถนาํ ไปใชต้ ิดต่อกบั อุปกรณ์ต่าง ๆ เช่น ติดต่อกบั
ไมโครคอนโทรลเลอร์ดว้ ยกนั หรือกบั อุปกรณ์อื่น ๆ ท่ีมีรูปแบบการส่ือสารเหมือนกนั
1.2.3.5 มีโมดูลวงจรตรวจจบั ระดบั แรงดนั ไฟเล้ียงเรียกวา่ บราวเอาต์ดีแท็กชนั่ (Brown
Out Detection : BOR Module) เพอื่ การรีเซตซีพยี เู รียกวา่ บราวเอาตร์ ีเซต (Brown-Out Reset : BOR)2
1.2.4 สถาปัตยกรรมของไมโครคอนโทรลเลอร์PIC16F877A
ไมโครคอนโทรลเลอร์ PIC16F877A จดั อยใู่ นประเภท RISC และมีสถาปัตยกรรมแบบ
ฮาร์วาร์ด คือ มีการแยกหน่วยความจาํ โปรแกรมออกจากหน่วยความจาํ ขอ้ มูล ดงั รูปท่ี 1.7 หน่วยความ
2 สมบูรณ์ เนียมกล่าํ , เรียนรู้และประยกุ ต์ใช้งาน PIC Microcontroller, (กรุงเทพฯ : เอดิสนั เพรส, 2549), 86.
11
จาํ ขอ้ มูลเป็นแบบก่ึงถาวรหรือเรียกวา่ อีอีพร็อม วธิ ีการแกไ้ ขขอ้ มูลในหน่วยความจาํ โปรแกรมทาํ ได้
ดว้ ยกระบวนการดีบกั เกอร์ (IN-Circuit Debugger : IDC) มีกระบวนการประมวลผลคาํ สง่ั แบบไปป์
ไลนจ์ ึงทาํ ใหม้ ีความเร็วในการประมวลผลคาํ ส่งั สูง
รูปที่ 1.7 สถาปัตยกรรมของไมโครคอนโทรลเลอร์ PIC16F877A
ทมี่ า : (Microchip, 2548, 7)
12
ตารางท่ี 1.1 ตาํ แหน่งขาของไมโครคอนโทรลเลอร์ PIC16F877A และรายละเอียดการทาํ งาน
ช่ือขา ตาํ แหน่งขา ชนิดขา ชนิดวงจรบัฟเฟอร์ รายละเอยี ดการทาํ งาน
OSC1/CLKIN 13 อินพตุ ชมิตตท์ ริกเกอร์/ - ขาต่อคริสตอล/รับสญั ญาณนาฬิกาจากภายนอก
ซีมอส
OSC2/CLKOU 14 เอาตพ์ ตุ - - ขาตอ่ คริสตอลในโหมดอาซี เป็ นขาเอาตพ์ ตุ
T สญั ญาณนาฬิกาความถ่ี ¼ ของสญั ญาณท่ีขา OSC1
MCLR/VPP 1 อินพตุ ชมิตตท์ ริกเกอร์ - ขารับสญั ญาณรีเซตหลกั (Master Clear)
- ขารับแรงดนั สาํ หรับการโปรแกรม
RA0/AN0 2 อินพตุ / ทีทีแอล/แอ - ขาพอร์ต RA0
เอาตพ์ ตุ นะล็อก - อินพตุ วงจรแปลงสญั ญาณแอนะล็อกเป็นดิจิทลั ช่อง 0
RA1/AN1 3 อินพตุ / ทีทีแอล/แอ - ขาพอร์ต RA1
เอาตพ์ ตุ นะลอ็ ก - อินพตุ วงจรแปลงสญั ญาณแอนะลอ็ กเป็นดิจิทลั ช่อง 1
- ขาพอร์ต RA2
RA2/AN2/ อินพตุ / ทีทีแอล/แอ - อินพตุ วงจรแปลงสญั ญาณแอนะล็อกเป็นดิจิทลั ช่อง 2
VREF- 4 เอาตพ์ ตุ นะล็อก - อินพตุ แรงดนั อา้ งอิงลบของวงจรแปลงสญั ญาณ
แอนะลอ็ กเป็นดิจิทลั
- ขาพอร์ต RA3
RA3/AN3/ อินพตุ / ทีทีแอล/แอ - อินพตุ วงจรแปลงสญั ญาณแอนะลอ็ กเป็นดิจิทลั ช่อง 2
VREF+ 5 เอาตพ์ ตุ นะล็อก - อินพตุ แรงดนั อา้ งอิงบวกของวงจรแปลงสญั ญาณ
แอนะลอ็ กเป็นดิจิทลั
RA4/T0CKI 6 อินพตุ / ชมิตตท์ ริกเกอร์ - ขาพอร์ต RA4 กรณีใชพ้ อร์ตเอาตพ์ ตุ มีโครงสร้างแบบ
เอาตพ์ ตุ เดรนเปิ ด
- อินพตุ สญั ญาณนาฬิกาของไทเมอร์ 0
- ขาพอร์ต RA5
อินพตุ / ทีทีแอล/แอ - อินพตุ วงจรแปลงสญั ญาณแอนะล็อกเป็นดิจิทลั ช่อง 4
RA5/AN4/SS 7 เอาตพ์ ตุ นะลอ็ ก - ขาสญั ญาณ Slave Select ใชใ้ นการส่ือสารขอ้ มลู
อนุกรมแบบซิงโครนสั
RB0/INT 33 อินพตุ / ทีทีแอล/ - ขาพอร์ต RB0
เอาตพ์ ตุ ชมิตตท์ ริกเกอร์ - อินพตุ รับสญั ญาณอินเตอร์รัพตจ์ ากภายนอก
RB1 34 อินพตุ / ทีทีแอล - ขาพอร์ต RB1
เอาตพ์ ตุ
RB2 35 อินพตุ / ทีทีแอล - ขาพอร์ต RB2
เอาตพ์ ตุ
RB3/LVP 36 อินพตุ / ทีทีแอล - ขาพอร์ต RB3
เอาตพ์ ตุ - อินพตุ รับแรงดนั โปรแกรมแรงดนั ต่าํ ถา้ ไดเ้ ปิ ดทาง
ไว้ (Enable)
RB4 37 อินพตุ / ทีทีแอล - ขาพอร์ต RB4 และสามารถเกิดอินเตอร์รัพตเ์ นื่องจาก
เอาตพ์ ตุ การเปลี่ยนแปลงข้ึนที่ขาน้ี ถา้ ไดเ้ ปิ ดทางไว้
13
ตารางท่ี 1.1 (ตอ่ ) ชนิดขา ชนดิ วงจรบฟั เฟอร์ รายละเอยี ดการทาํ งาน
อินพตุ / ทีทีแอล
ช่ือขา ตาํ แหน่งขา เอาตพ์ ตุ ทีทีแอล/ - ขาพอร์ต RB5 และสามารถเกิดอินเตอร์รัพตเ์ นื่องจาก
อินพตุ / การเปล่ียนแปลงข้ึนที่ขาน้ี ถา้ ไดเ้ ปิ ดทางไว้
RB5 38 เอาตพ์ ตุ ชมิตตท์ ริกเกอร์
ทีทีแอล/ - ขาพอร์ต RB6 และสามารถเกิดอินเตอร์รัพตเ์ นื่องจาก
RB6/PGC 39 อินพตุ / การเปล่ียนแปลงข้ึนท่ีขาน้ี ถา้ ไดเ้ ปิ ดทางไว้
เอาตพ์ ตุ ชมิตตท์ ริกเกอร์
RB7/PGD 40 - ขาพอร์ต RB7
อินพตุ / ชมิตตท์ ริกเกอร์ - สามารถเกิดอินเตอร์รัพตเ์ น่ืองจากการเปลี่ยนแปลง
RC0/ 15 เอาตพ์ ตุ ข้ึนท่ีขาน้ี ถา้ ไดเ้ ปิ ดทางไว้
T1OSO/T1CKI ชมิตตท์ ริกเกอร์ - ขาพอร์ต RC0
อินพตุ / - เอาตพ์ ตุ วงจรออสซิลเลเตอร์ของไทเมอร์ 1
RC1/ 16 เอาตพ์ ตุ ชมิตตท์ ริกเกอร์ - อินพตุ สญั ญาณนาฬิกาของไทเมอร์ 1
T1OS1/CCP2 - ขาพอร์ต RC1
อินพตุ / ชมิตตท์ ริกเกอร์ - อินพตุ วงจรออสซิลเลเตอร์ของไทเมอร์ 1
RC2/ CCP1 17 เอาตพ์ ตุ ชมิตตท์ ริกเกอร์ - อินพตุ วงจรแคปเจอร์/เอาตพ์ ตุ วงจรเปรียบเทียบ/
ชมิตตท์ ริกเกอร์ เอาตพ์ ตุ PWM สาํ หรับโมดูล CCP2
RC3/SCK/SCL 18 อินพตุ / ชมิตตท์ ริกเกอร์ - ขาพอร์ต RC2
RC4/SDI/SDA 23 เอาตพ์ ตุ ชมิตตท์ ริกเกอร์ - อินพตุ วงจรแคปเจอร์/เอาตพ์ ตุ วงจรเปรียบเทียบ/
24 อินพตุ / เอาตพ์ ตุ PWM สาํ หรับโมดูล CCP1
RC5/SDO 25 เอาตพ์ ตุ ทีทีแอล/ - ขาพอร์ต RC3
RC6/TxD 26 อินพตุ / ชมิตตท์ ริกเกอร์ - ขาสญั ญาณนาฬิกาของวงจร SPI และระบบบสั I2C
RC7/RxD 19 เอาตพ์ ตุ - ขาพอร์ต RC4 และขาขอ้ มูลอินพตุ วงจร SPI
RD0/PSP0 20 อินพตุ / ทีทีแอล/ - ขาขอ้ มูลอนุกรมของระบบบสั I2C
RD1/PSP1 21 เอาตพ์ ตุ ชมิตตท์ ริกเกอร์ - ขาพอร์ต RC5
RD2PSP2 22 อินพตุ / - ขาขอ้ มูลเอาตพ์ ตุ ของวงจร SPI
RD3/PSP3 27 เอาตพ์ ตุ ทีทีแอล/ - ขาพอร์ต RC6
RD4/PSP4 อินพตุ / ชมิตตท์ ริกเกอร์ - ขาเอาตพ์ ตุ วงจร USART สาํ หรับเช่ือมต่อพอร์ตอนุกรม
เอาตพ์ ตุ - ขาพอร์ต RC7
อินพตุ / ทีทีแอล/ - ขาอินพตุ วงจร USART สาํ หรับเชื่อมต่อพอร์ตอนุกรม
เอาตพ์ ตุ ชมิตตท์ ริกเกอร์ - ขาพอร์ต RD0
อินพตุ / - ขาขยายพอร์ตแบบขนานบิต 0
เอาตพ์ ตุ ทีทีแอล/ - ขาพอร์ต RD1
อินพตุ / ชมิตตท์ ริกเกอร์ - ขาขยายพอร์ตแบบขนานบิต 1
เอาตพ์ ตุ - ขาพอร์ต RD2
อินพตุ / - ขาขยายพอร์ตแบบขนานบิต 2
เอาตพ์ ตุ - ขาพอร์ต RD3
- ขาขยายพอร์ตแบบขนานบิต 3
- ขาพอร์ต RD4
- ขาขยายพอร์ตแบบขนานบิต 4
14
ตารางที่ 1.1 (ตอ่ ) ชนดิ ขา ชนิดวงจรบฟั เฟอร์ รายละเอยี ดการทาํ งาน
ชื่อขา ตาํ แหน่งขา ทีทีแอล/ - ขาพอร์ต RE0
ชมิตตท์ ริกเกอร์ - อินพตุ วงจรแปลงสญั ญาณแอนาลอกเป็นดิจิทลั ช่อง 5
RE0/AN5/RD 8 อินพตุ / - ขาสญั ญาณ RD สาํ หรับส่วนขยายพอร์ตแบบขนาน
เอาตพ์ ตุ ทีทีแอล/ - ขาพอร์ต RD6
ชมิตตท์ ริกเกอร์ - ขาขยายพอร์ตแบบขนานบิต 6
RD6/PSP6 29 อินพตุ / - ขาพอร์ต RD7
RD7/PSP7 เอาตพ์ ตุ ทีทีแอล/ - ขาขยายพอร์ตแบบขนานบิต 7
ชมิตตท์ ริกเกอร์ - ขาพอร์ต RE1
30 อินพตุ / - อินพตุ วงจรแปลงสญั ญาณแอนะลอ็ กเป็นดิจิทลั ช่อง 6
เอาตพ์ ตุ ทีทีแอล/ - ขาสญั ญาณ WR สาํ หรับส่วนขยายพอร์ตแบบขนาน
ชมิตตท์ ริกเกอร์ - ขาพอร์ต RE2
RE1/AN6/WR 9 อินพตุ / - อินพตุ วงจรแปลงสญั ญาณแอนะลอ็ กเป็นดิจิทลั ช่อง 7
เอาตพ์ ตุ ทีทีแอล/ - ขาสญั ญาณ CS สาํ หรับส่วนขยายพอร์ตแบบขนาน
ชมิตตท์ ริกเกอร์
RE2/AN7/CS 10 อินพตุ /
เอาตพ์ ตุ
ขาต่อไฟเลยี้ งระบบ - - ขาต่อไฟเล้ียงใชไ้ ดต้ ้งั แต่ +2 ถึง +5.5 โวลต์
VDD 11, 32 อินพตุ - - ขาต่อกราวด์
VSS 12, 31 อินพตุ
ทม่ี า : (Microchip, 2548, 8-11)
1.3 ระบบบัสและการทาํ งาน
เพ่ือให้ไมโครคอนโทรลเลอร์ PIC16F877A สามารถรองรับการเชื่อมต่อกบั อุปกรณ์อินพุตและ
อุปกรณ์เอาต์พุตไดเ้ ป็ นจาํ นวนมากและมีขีดความสามารถสูง จึงมีการพฒั นาระบบการเชื่อมต่อให้
จาํ นวนสายที่ใช้ลดจาํ นวนลง ระบบบสั ที่ไดร้ ับความนิยมมี 2 ชนิด คือระบบบสั แบบไอสแควซี
(Inter-IC Communication : I2C) พฒั นาโดยบริษทั ฟิ ลลิปส์ (Philips) และระบบบสั วนั ไวร์ (1-wire)
พฒั นาโดยบริษทั ดลั ลาสเซมิคอนดกั เตอร์ (Dallas Semiconductor)
1.3.1 ระบบบสั แบบไอสแควซี
ระบบบสั ไอสแควซี หมายถึงการติดต่อระหวา่ งไอซีกบั โมดูลต่าง ๆ ดว้ ยสายสัญญาณ 2 เส้น
ซ่ึงประกอบดว้ ยสายขอ้ มูลอนุกรมกบั สายสัญญาณนาฬิกาอนุกรมกาํ หนดจงั หวะการทาํ งาน การต่อ
ร่วมกนั ของอุปกรณ์ต่าง ๆ บนบสั ไอสแควซี ทาํ ไดโ้ ดยต่อสายขอ้ มูลกบั สายสัญญาณนาฬิกาขนานกนั
วิธีการกาํ หนดตาํ แหน่งแอดเดรส สําหรับติดต่อกบั อุปกรณ์แต่ละตวั ทาํ ไดโ้ ดยใชร้ หสั ขอ้ มูลร่วมกนั
กบั การกาํ หนดสภาวะที่ขาแอดเดรส อตั ราการถ่ายทอดขอ้ มูลบนบสั ไอสแควซี 100 กิโลบิตต่อวินาที
ในโหมดปกติและ 400 กิโลบิตต่อวนิ าทีในโหมดความเร็วสูง ขอ้ มูลสาํ หรับการเขา้ ถึงอุปกรณ์มี 2 ค่า
คือ 7 บิต และ 10 บิต รูปแบบการเช่ือมตอ่ แสดงดงั รูปที่ 1.8
15
รูปท่ี 1.8 รูปแบบการเช่ือมต่อมาตรฐานของบสั ไอสแควซี
ทมี่ า : (ประจิน พลงั สนั ติกลุ , 2551, 253)
1.3.2 ระบบบสั แบบวนั ไวร์
ระบบบสั แบบวนั ไวร์ สายสัญญาณระบบน้ีเป็ นแบบสองทิศทาง แต่ขอ้ มูลส่งไดท้ ิศทาง
เดียวภายในช่วงเวลาหน่ึง ๆ โดยทว่ั ไปไมโครคอนโทรลเลอร์เป็ นอุปกรณ์มาสเตอร์ ส่วนสเลฟไดแ้ ก่
ไอซีวดั อุณหภูมิ หน่วยความจาํ แรม เป็ นต้น ระหว่างทาํ งานข้อมูลถูกส่งลงบนสายสัญญาณ ท้ัง
มาสเตอร์และสเลฟเป็ นได้ท้งั ตวั รับและตวั ส่งข้ึนอยู่กบั เงื่อนไขในขณะน้นั สายสัญญาณจะต้อง
กาํ หนดสภาวะไวท้ ี่ลอจิกสูงโดยต่อตวั ตา้ นทานค่า 4.7 กิโลโอห์ม พูลอปั (Pull up) กบั ไฟเล้ียง +5 โวลต์
ดงั น้นั อุปกรณ์บนระบบบสั น้ีจึงตอ้ งออกแบบให้เอาต์พุตเป็ นคอลเล็กเตอร์เปิ ด (Open Collector)
รูปแบบการเช่ือมต่อแสดงดงั รูปท่ี 1.9 รายละเอียดต่าง ๆ เกี่ยวกบั ระบบบสั ไดก้ ล่าวไวใ้ นหน่วยท่ี 7
เร่ืองระบบและรูปแบบการสื่อสาร
+5 V
4.7 kΩ
° �» �¦ �r ° �» �¦ �r ° �» �¦ �r ° �» �¦ �r
¤µ Á�° ¦ r Á¨ ¢ #1 Á¨ ¢ #2 Á¨ ¢ #3
รูปท่ี 1.9 รูปแบบการเช่ือมต่อของระบบบสั วนั ไวร์เบ้ืองตน้
ทมี่ า : (ประจิน พลงั สนั ติกุล, 2551, 266)
16
1.4 หน่วยความจําและรีจสิ เตอร์
ไมโครคอนโทรลเลอร์ PIC16F877A มีหน่วยความจาํ 3 ประเภท คือ หน่วยความจาํ โปรแกรม
แบบแฟลช มีความจุ 8 กิโลเวริ ์ด หน่วยความจาํ ขอ้ มูลแบบแรมมีความจุ 368 ไบต์ ใชใ้ นการเก็บขอ้ มูล
ควบคุมการทาํ งานของไมโครคอนโทรลเลอร์และเป็ นพ้ืนท่ีสาํ หรับเก็บขอ้ มูลในการประมวลผลและ
หน่วยความจาํ ขอ้ มูลแบบอีอีพร็อม จาํ นวน 256 ไบต์
æ ¦ ¤ÁµrÁ° ¦ r(PC) 13 · 13
ÂȦ ³ ´ ɸ1 (13) ·
ÂȦ ³ ´É¸2 (13) ·
r
r
r
ÂȦ ³ ´ ɸ8 (13) ·
Á¡ 0 ¦ ¸ÁÁª ÈÁ° ¦ r 0x000
2 ÷ ¨ Áª ¦· r 0x004
0x000-0x7FF r 0x005
r 0x7FF
Á¡ 1 r 0x800
2 ·Ã¨ Áª ¦· r 0xFFF
0x800-0xFFF ° · Á° ¦ r¦ ´¡ rÁª ÈÁ° ¦ r 0x1000
®ªn¥ª µ¤µÎæ ¦ ¤ 0x17FF
Á¡ 2 0x1800
2 ÷ ¨ Áª ¦· r ®ªn¥ª µ¤ÎµÃ¦ ¦ ¤ 0x1FFF
0x1000-0x17FF
®ªn¥ª µ¤µÎæ ¦ ¤
Á¡ 3
2 ÷ ¨ Áª ·¦ r ®nª ¥ª µ¤µÎæ ¦ ¤
0x1800-0x1FFF
รูปท่ี 1.10 การจดั สรรหน่วยความจาํ โปรแกรมของไมโครคอนโทรลเลอร์ PIC16F877A
ทม่ี า : (Microchip, 2548, 15)
17
1.4.1 หน่วยความจาํ โปรแกรม
หน่วยความจาํ โปรแกรม หมายถึงหน่วยความจาํ ที่ใชส้ ําหรับเก็บขอ้ มูลคาํ สั่งควบคุมการ
ทาํ งานของไมโครคอนโทรลเลอร์ เป็ นหน่วยความจาํ แบบแฟลช สามารถลบและเขียนใหม่ได้
100,000 คร้ัง หน่วยความจาํ โปรแกรมของไมโครคอนโทรลเลอร์ PIC16F877A มีขนาด 8 กิโลเวริ ์ด
แสดงดงั รูปที่ 1.10 ซ่ึงมีการจดั สรรพ้ืนท่ีออกเป็น 4 เพจ ในแตล่ ะเพจมีขนาด 2 กิโลเวริ ์ด ดงั น้ี
เพจ 0 มีแอดเดรสระหวา่ ง 0x0000 – 0x07FF (สงวน 0x0000 และ0x0004)
เพจ 1 มีแอดเดรสระหวา่ ง 0x0800 – 0x0FFF
เพจ 2 มีแอดเดรสระหวา่ ง 0x1000 – 0x17FF
เพจ 3 มีแอดเดรสระหวา่ ง 0x1800 – 0x1FFF
นอกจากน้ันไมโครคอนโทรลเลอร์ PIC16F877A ยงั มีพ้ืนที่หน่วยความจาํ พิเศษ 13 บิต
สาํ หรับเก็บค่าของโปรแกรมเคาทเ์ ตอร์ชวั่ คราว หรือพีซี (Program Counter : PC) เป็ นตวั ช้ีตาํ แหน่ง
ลาํ ดบั การประมวลผล เรียกว่า สแต็ก (Stack) ซ่ึงเป็ นหน่วยความจาํ ท่ีใช้พกั ค่าตาํ แหน่งลาํ ดบั การ
ประมวลผล กรณีตอ้ งกระโดดไปทาํ งานโปรแกรมย่อย สแต็กสามารถเก็บค่าพีซีได้ 8 ระดบั และ
ออนชิพโปรแกรมเมมโมรี (On-Chip Program Memory) เป็ นพ้ืนที่สําหรับใชใ้ นการประมวลผลคาํ สั่ง
ประกอบด้วยรีเซตเว็กเตอร์ (Reset Vector) ซ่ึงจดั สรรไวท้ ี่ 0x000h และอินเตอร์รัพต์เว็กเตอร์
(Interrupt Vector) ที่ตาํ แหน่ง 0x004h ท่ีเหลือท้งั หมดเป็นตาํ แหน่งท่ีเกบ็ โปรแกรมเริ่มท่ี 0x0005h
1.4.2 การจดั สรรหน่วยความจาํ แรม (เขา้ ถึงโดยสุ่ม)
หน่วยความจาํ แรม (Random Access Memory) หมายถึง หน่วยความจาํ ที่ใชเ้ กบ็ ชุดคาํ สัง่
ของรีจิสเตอร์ต่างๆซ่ึงประกอบดว้ ย
1.4.2.1 รีจิสเตอร์ใชง้ านทว่ั ไป (General Purpose Registers : GPR) เป็นหน่วยความจาํ ใช้
งานทว่ั ไป สามารถเปลี่ยนแปลงขอ้ มูลไดต้ ลอดเวลา และขอ้ มูลตา่ งๆ จะหายไปเม่ือไมม่ ีไฟเล้ียงจา่ ย
ใหก้ บั ซีพียู หน่วยความจาํ น้ีมีขนาดจาํ นวน 386 ไบต์ ขอ้ มูลจะเป็นแบบ 8 บิตเหมาะสาํ หรับใชเ้ กบ็
ขอ้ มูล หรือใชเ้ ป็ นตวั แปลต่างๆ ในการเขียนโปรแกรมโดยจะกระจายอยใู่ นแบงคต์ ่างๆ ท้งั 4 แบงค์
1.4.2.2 รีจิสเตอร์ท่ีเป็นฟังกช์ นั่ การทาํ งานพิเศษ (Special Function Registers : SFR) เป็น
หน่วยความจาํ ท่ีใชใ้ นการควบคุมการทาํ งานในฟังกช์ นั่ ต่างๆของซีพียู โดยจะจดั วางลกั ษณะเดียวกนั
กบั รีจิสเตอร์ใชง้ านทวั่ ไป คือ จะอยภู่ ายในแต่ละแบงคท์ ้งั 4 แบงค์ ซ่ึงใชค้ วบคุมการทาํ งานของระบบ
ฮาร์ดแวร์ตา่ งๆ ภายในตวั ชิพ ไมส่ ามารถนาํ ไปใชง้ านอยา่ งอื่นได้ รีจิสเตอร์แต่ละตวั จะมีท่ีอยคู่ งที่
(Fixed Address) และกาํ หนดชื่อใชง้ านไวแ้ ลว้ แบบใชง้ านจริงและแบบสงวนสาํ รองไวใ้ ชง้ านเฉพาะ
(Reserved) แสดงดงั รูปท่ี 1.11 จะเห็นไดว้ า่ หน่วยความจาํ ขอ้ มูลมีการแบง่ พ้ืนท่ีหน่วยความจาํ ออก
18
เป็น 4 ช่วง เรียกวา่ แบงก์ แตล่ ะแบงกม์ ีขนาดสูงสุด 128 ไบต์ แตม่ ีการใชง้ านจริงในแตล่ ะแบงก์
ตา่ งกนั
หมายเหตุ
* ไม่มีรีจิสเตอร์หลกั ตอ้ งใชก้ ารเขา้ ถึงแบบโดยออ้ ม
ไม่มีการใชง้ านอา่ นค่าเป็น “0”
รูปท่ี 1.11 การจดั สรรพ้ืนท่ีหน่วยความจาํ ขอ้ มูลและรีจิสเตอร์ไฟล์
ทม่ี า : (Microchip, 2548, 17)
19
1.4.2.1 แบงก์ 0 มีแอดเดรสระหวา่ ง 0x00 – 0x07F
แอดเดรส 0x00 – 0x1F เป็นพ้นื ท่ีรีจิสเตอร์ไฟล์
แอดเดรส 0x70 – 0x7F เป็ นพ้ืนท่ีของหน่วยความจาํ ขอ้ มูล สําหรับใชง้ านทวั่ ไป
จาํ นวน 96 ไบต์
1.4.2.2 แบงก์ 1 มีแอดเดรสระหวา่ ง 0x08 – 0xFF
แอดเดรส 0x80 – 0x9F เป็นพ้นื ที่รีจิสเตอร์ไฟล์ มีบางแอดเดรสไม่ใช้
แอดเดรส 0xA0 – 0xEF เป็ นพ้ืนที่ของหน่วยความจาํ ขอ้ มูล สําหรับใชง้ านทวั่ ไป
จาํ นวน 80 ไบต์
แอดเดรส 0xF0 – 0xFF บรรจุขอ้ มูลเหมือนกบั แอดเดรส 0x70 – 0x7F ในแบงก์ 0
เพือ่ ใหส้ ามารถใชข้ อ้ มูลจากแอดเดรส 0x70 – 0x7F ไดง้ ่ายข้ึนโดยไม่ตอ้ งเปล่ียนแบงก์
1.4.2.3 แบงก์ 2 มีแอดเดรสระหวา่ ง 0x100 – 0x17F
แอดเดรส 0x100 – 0x10F เป็นพ้นื ท่ีรีจิสเตอร์ไฟล์ มีบางแอดเดรสไม่ใช้
แอดเดรส 0x110 – 0x11F เป็นพ้นื ที่ของหน่วยความจาํ ขอ้ มูล สําหรับใชง้ านทว่ั ไป
จาํ นวน 16 ไบต์
แอดเดรส 0x120 – 0x16F เป็นพ้ืนท่ีของหน่วยความจาํ ขอ้ มูล สําหรับใชง้ านทว่ั ไป
จาํ นวน 80 ไบต์
แอดเดรส 0x170 – 0x17F บรรจุขอ้ มูลเหมือนกบั แอดเดรส 0x70 – 0x7F ในแบงก์
0 เพอื่ ใหส้ ามารถใชข้ อ้ มูลจากแอดเดรส 0x170 – 0x17F ไดง้ ่ายข้ึนโดยไม่ตอ้ งเปล่ียนแบงก์
1.4.2.4 แบงก์ 3 มีแอดเดรส 0x1800 – 0x1FFF
แอดเดรส 0x180 – 0x18F เป็นพ้นื ที่รีจิสเตอร์ไฟล์ มีบางแอดเดรสไม่ใช้
แอดเดรส 0x190 – 0x19F เป็นพ้นื ที่ของหน่วยความจาํ ขอ้ มูล สาํ หรับใชง้ านทว่ั ไป
จาํ นวน 16 ไบต์
แอดเดรส 0x1A0 – 0x1EF เป็ นพ้ืนที่ของหน่วยความจาํ ขอ้ มูล สําหรับใช้งาน
ทวั่ ไป จาํ นวน 80 ไบต์
แอดเดรส 0x1F0 – 0x1FF บรรจุขอ้ มูลเหมือนกบั แอดเดรส 0x70 – 0x7F ในแบงก์
0 เพ่ือใหส้ ามารถใชข้ อ้ มูลจากแอดเดรส 0x1A0 – 0x1EF ไดง้ ่ายข้ึนโดยไม่ตอ้ งเปล่ียนแบงก์
1.4.3 รีจิสเตอร์หลกั ของไมโครคอนโทรลเลอร์ PIC16F877A
รีจิสเตอร์หลัก หมายถึง รีจิสเตอร์ท่ีใช้ควบคุมการทาํ งานของไมโครคอนโทรลเลอร์
ประกอบดว้ ย รีจิสเตอร์ STATUS, OPTION_REG, PCON, W และ PC มีรายละเอียดการทาํ งานดงั น้ี
20
1.4.3.1 รีจิสเตอร์สเตตสั (Register Status) เป็ นรีจิสเตอร์ใช้เก็บขอ้ มูลแสดงสถานะการ
ทาํ งานของไมโครคอนโทรลเลอร์ เช่น แฟลกแสดงผลการกระทาํ คาํ ส่ังทางคณิตศาสตร์และ การทาํ งาน
ของวอทช์ดอ็ กไทเมอร์ การทาํ งานโหมดสลีปและใชใ้ นการเลือกแบงก์ของหน่วยความจาํ ขอ้ มูลแรม มี
แอดเดรสอยทู่ ี่ตาํ แหน่ง 0x03 ในแบงก์ 0, 0x83 ในแบงก์ 1, 0x103 ในแบงก์ 2 และ 0x183 ในแบงก์ 3
แสดงดงั รูปท่ี 1.12
รูปท่ี 1.12 รีจิสเตอร์สเตตสั
ทม่ี า : (Microchip, 2548, 22)
บิต IRP (Indirect Register Bank Select Bit) ใช้เลือกแบงก์หน่วยความจาํ ขอ้ มูลแรม
และรีจิสเตอร์ไฟล์ เมื่อใชก้ ารอา้ งถึงแบบโดยออ้ ม (Indirect Addressing Mode)
“0” - เลือกแบงก์ 0 และ 1 (แอดเดรส 0x00-0xFF)
“1” - เลือกแบงก์ 2 และ 3 (แอดเดรส 0x100-0x1FF)
บิต RP1-RP0 (Register Bank Select Bit) ใชเ้ ลือกแบงก์หน่วยความจาํ ขอ้ มูลแรม
และรีจิสเตอร์ไฟล์ เมื่อใชก้ ารอา้ งถึงแบบโดยตรง
“00” - แบงก์ 0 (แอดเดรส 0x00-0x7F)
“01” - แบงก์ 1 (แอดเดรส 0x80-0xFF)
“10” - แบงก์ 2 (แอดเดรส 0x100-0x17F)
“11” - แบงก์ 3 (แอดเดรส 0x180-0x1FF)
บิต TO (Time-Out Bit) เป็ นบิตแสดงการเกิดไทมเ์ อาต์เมื่อวอทช์ด็อกไทเมอร์
(WDT) ทาํ งานครบเวลาที่กาํ หนด แอกตีฟที่ “0” บิตน้ีอ่านไดเ้ พียงอยา่ งเดียว การเซตบิตน้ีเกิดข้ึนเม่ือ
เร่ิมตน้ จา่ ยไฟใหไ้ มโครคอนโทรลเลอร์หรือเม่ือมีการกระทาํ คาํ สั่ง CLRWDT หรือ SLEEP
บิต PD (Power-Down Bit) เป็ นบิตแสดงการทาํ งานในโหมดประหยดั พลงั งาน
เม่ือกระทาํ คาํ ส่งั SLEEP บิตน้ีจะเปล่ียนเป็ น “0” บิตน้ีสามารถอ่านไดอ้ ยา่ งเดียว การเซตบิตจะเกิดข้ึน
เม่ือเมื่อมีการกระทาํ คาํ ส่งั CLRWDT หรือเร่ิมตน้ จา่ ยไฟใหแ้ ก่ไมโครคอนโทรลเลอร์
บิต Z (Zero Bits): บิตศูนยใ์ ชแ้ สดงผลการกระทาํ คาํ สง่ั ทางคณิตศาสตร์
“0” - หลงั จากกระทาํ คาํ สั่งทางคณิตศาสตร์หรือแลว้ ผลลพั ธ์ไม่เป็ นศูนย์
“1” - หลงั จากกระทาํ คาํ สง่ั ทางคณิตศาสตร์หรือแลว้ ผลลพั ธ์เป็นศูนย์
21
บิต DC (Digital Carry/Borrow Bit) บิตทดหรือยืมระหวา่ งหลกั เป็ นบิตแสดงผล
ทางคณิตศาสตร์ในกรณีท่ีกระทาํ คาํ สง่ั ADDWF และ ADDLW ท่ีบิต DC จะเกิดผลลพั ธ์ดงั น้ี
“0” - หากไมเกิดการทดขา้ มจากบิต 3 ไปยงั บิต 4
“1” - หากเกิดการทดขา้ มจากบิต 3 ไปยงั บิต 4
ในกรณีท่ีกระทาํ คาํ สง่ั SUBWF และ SUBLW ที่บิต DC จะเกิดผลดงั น้ี
“0” - หากเกิดการการยมื คา่ จากบิต 4 มายงั บิต 3
“1” - หากไม่เกิดการยมื ค่าจากบิต 4 มายงั บิต 3
บิต C (Carry/Borrow Bit) บิตทดหรือยืม ใชแ้ สดงผลการทดและการยมื ค่าทาง
คณิตศาสตร์ในกรณีที่กระทาํ คาํ สง่ั ADDWF และ ADDLW ท่ีบิต C จะเกิดผลดงั น้ี
“0” - หากไมเ่ กิดการทดจากบิต MSB หรือบิต 7
“1” - หากเกิดการทดจากบิต MSB หรือบิต 7
ในกรณีท่ีกระทาํ คาํ ส่งั SUBWF และ SUBLW ที่บิต DC จะเกิดผลดงั น้ี
“0” – หากเกิดการยมื คา่ ของบิต MSB
“1” - หากไมjเกิดการยมื ค่าของบิต MSB
1.4.3.2 รีจิสเตอร์ OPTION_REG สามารถอ่านและเขียนได้ทุกบิต บรรจุข้อมูลที่ใช้
ควบคุมการพลู อปั พอร์ต B ใชเ้ ลือกขอบสัญญาณอินเตอร์รัพตข์ า RB0/INT ใชค้ วบคุมการทาํ งานของ
ไทเมอร์ 0 มีแอดเดรสอยทู่ ี่ 0x81 แบงก์ 1 และ 0x181 ในแบงก์ 3 แสดงดงั รูปท่ี 1.13
รูปที่ 1.13 รีจิสเตอร์ OPTION_REG
ทมี่ า : (Microchip, 2548, 23)
บิต 7-RBUP (Port B Pull-Enable Bit) สาํ หรับเลือกการพลู อปั พอร์ต B
“0” - เอน็ เอเบิลการพูลอปั
“1” - ดิสเอเบิลการพลู อปั
บิต 6 - INTEDG (Interrupt Edge Select Bit) ใชเ้ ลือกขอบสัญญาณอินเตอร์รัพตจ์ าก
ภายนอกท่ีขา RB0/INT
“0” – เลือกขอบขาลงของสญั ญาณ
“1” - เลือกขอบขาข้ึนของสญั ญาณ
22
บิต 5 - T0CS เป็นบิตใชเ้ ลือกแหล่งกาํ เนิดสัญญาณนาฬิกาของไทเมอร์ 0
“0” - รับจากสญั ญาณนาฬิกาท่ีใชก้ าํ หนดไซเกิลการทาํ งาน
“1” - เลือกขอบขาข้ึนของสัญญาณ
บิต 4 - T0SE (TMR0 Source Edge Select Bit) เป็ นบิตใชเ้ ลือกการเปลี่ยนแปลง
ของระดบั สัญญาณเพอ่ื ทาํ ใหไ้ ทเมอร์ 0 เพ่มิ คา่ ข้ึน
“0” - เลือกการเปล่ียนแปลงระดบั สัญญาณจากต่าํ ไปสูง
“1” - เลือกการเปล่ียนแปลงระดบั สัญญาณจากสูงไปต่าํ
บิต 3 - PSA (Prescaler Assignment Bit) เป็นบิตสาํ หรับใชเ้ ลือกการทาํ งานของ
ปรีสเกลเลอร์ (Prescaler)
“0” - เลือกใหส้ เกลเลอร์ทาํ งานร่วมกบั ไทเมอร์ 0
“1” - เลือกใหส้ เกลเลอร์ทาํ งานร่วมกบั วอทชด์ ็อกไทเมอร์หรือเป็ นโพสตส์ เกล
เลอร์ (Postscaler)
บิต 2 - 0: PS2 - PS0 (Prescaler Rate Select Bit) เป็นบิตท่ีใชเ้ ลือกอตั ราส่วน
ปรีสเกลเลอร์ ในการกาํ หนดอตั ราส่วน Prescaler เม่ือทาํ งานร่วมกบั ไทเมอร์ 0 และวอทช์ด็อกไทเมอร์
สามารถกาํ หนดรายละเอียดไดด้ งั ตารางท่ี 1.2
ตารางท่ี 1.2 รายละเอียดการเลือกใชอ้ ตั ราส่วนของปรีสเกลเลอร์
PS-2 PS-1 PS-0 อตั ราส่วนของปรีสเกลเลอร์
เม่ือทาํ งานร่วมกบั TMR 0 เม่ือทาํ งานร่วมกบั WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
100 1:33 1:16
101 1:64 1:32
110 1:128 1:64
111 1:256 1:128
ทมี่ า : (Microchip, 2548, 23)
23
1.4.3.3 รีจิสเตอร์พีคอน (PCON) เป็นรีจิสเตอร์ท่ีใชแ้ จง้ สถานะเม่ือการเกิดการรีเซต มี
แอดเดรสอยทู่ ่ี 0x8E มีบิตการใชง้ านเพยี ง 2 บิต บิต 2-7 ไม่ใชง้ าน คา่ ที่อา่ นไดเ้ ป็ น “0” แสดง
ดงั รูปท่ี 1.14
รูปท่ี 1.14 รีจิสเตอร์พคี อน (PCON)
ทม่ี า : (Microchip, 2548, 29)
POR (Power-On Reset Status Bit): บิตแสดงสถานะการเกิดเพาเวอร์ออนรีเซต
“0” - มีเหตุการณ์เพาเวอร์ออนรีเซตเกิดข้ึน
“1” - ไมมีเหตุการณ์เพาเวอร์ออนรีเซตเกิดข้ึน
BOR (Brown-out Reset Status Bit): บิตแสดงสถานการณ์เกิดบราวเอาตร์ ีเซต
“0” - มีเหตุการณ์บราวเอาตร์ ีเซตเกิดข้ึน
“1” - ไมม่ ีเหตุการณ์บราวเอาตร์ ีเซตเกิดข้ึน
ท้งั POR และ BOR หลงั จากท่ีมีการบราวเอาตร์ ีเซตเกิดข้ึน จะตอ้ งเซตบิตน้ีใหเ้ ป็ น
“1” ทนั ที ดว้ ยระบวนการทางซอฟตแ์ วร์
1.4.3.4 รีจิสเตอร์ W เป็ นรีจิสเตอร์ท่ีมีบทบาทมากท่ีสุดของไมโครคอนโทรลเลอร์ เพราะ
กระบวนการประมวลผลทางคณิตศาสตร์และ การเพ่ิมหรือลดค่าจะตอ้ งกระทาํ ผ่านรีจิสเตอร์ W การ
เรียกใชร้ ีจิสเตอร์สามารถกระทาํ ไดท้ นั ทีและตลอดเวลาโดยผา่ นคาํ สัง่ ที่เกี่ยวขอ้ งกบั รีจิสเตอร์ W
1.4.3.5 รีจิสเตอร์โปรแกรมเคาทเ์ ตอร์ (PC) เป็ นรีจิสเตอร์พิเศษที่ทาํ หน้าที่ระบุแอดเดรส
ของหน่วยความจาํ โปรแกรมที่ไมโครคอนโทรลเลอร์จะตอ้ งไปอ่านขอ้ มูล ไมโครคอนโทรลเลอร์
PIC16F877A มีโปรแกรมเคาทเ์ ตอร์ขนาด 13 บิต โปรแกรมเคาทเ์ ตอร์น้ีแบ่งเป็ น 2 ส่วน ส่วนแรกมี
ขนาด 8 บิตเป็ นขอ้ มูลในไบตต์ ่าํ (บิต 0-7) เรียกวา่ รีจิสเตอร์พีซีแอล (PCL) มีแอดเดรสอยทู่ ี่ 0x02 อีก
5 บิตเป็ นขอ้ มูลไบตส์ ูง (บิต 8-12) เรียกวา่ รีจิสเตอร์พีซีเอ็ช (PCH) รีจิสเตอร์พีซีเอช็ ไม่สามารถเขา้ ถึง
ไดโ้ ดยตรง การปรับปรุงขอ้ มูลในพีซีเอ็ชตอ้ งกระทาํ ผา่ นรีจิสเตอร์ PCLATH ซ่ึงมีแอดเดรสอยู่ท่ี
0x0A รูปที่ 1.12 แสดงการกาํ หนดคา่ ลงในโปรแกรมเคาทเ์ ตอร์ซ่ึงอาจเกิดข้ึน 4 ลกั ษณะคือ
ลกั ษณะท่ีหน่ึง เป็ นการกาํ หนดค่าพีซี หลงั จากที่ไมโครคอนโทรลเลอร์กระทาํ คาํ สั่ง
ทวั่ ไป โดยขอ้ มูลแอดเดรส 8 บิตใน PCL จะไดม้ าจากหน่วยประมวลผลทางคณิตศาสตร์ (ALU) ส่วน
อีก 5 บิตจะผา่ นมาทางรีจิสเตอร์ PCLATH แสดงดงั รูปที่ 1.15 (ก)
24
(ก)
(ข)
(ค)
(ง)
รูปที่ 1.15 (ก) การกาํ หนดคา่ พซี ีหลงั จากที่ไมโครคอนโทรลเลอร์กระทาํ ขอ้ ความส่งั ทวั่ ไป
(ข) การกาํ หนดคา่ พซี ีเมื่อกระทาํ คาํ สง่ั GOTO
(ค) การกาํ หนดค่าพีซีเมื่อกระทาํ ขอ้ ความส่งั CALL
(ง) การกาํ หนดค่าพซี ีเม่ือกระทาํ ขอ้ ความส่งั RETURN, RETFIE หรือ RETLW
ทม่ี า : (Microchip, 2548, 30)
25
ลกั ษณะท่ีสอง เป็ นการกาํ หนดค่าพีซี เม่ือไมโครคอนโทรลเลอร์กระทาํ คาํ สั่ง GOTO
ชุดคาํ ส่ัง 11 บิตแรก (บิต 0-10) เป็ นค่าแอดเดรสปลายทางเก็บไวใ้ น PCL 8 บิต รวมกบั 3 บิตล่างของ
PCH ไดข้ อ้ มูลมาจากบิต 3 และ 4 ของรีจิสเตอร์ PCLATH ดงั ในรูปที่ 1.15 (ข)
ลกั ษณะที่สาม เป็ นการกาํ หนดค่าพีซี เม่ือไมโครคอนโทรลเลอร์กระทาํ คาํ สั่งเรียก (CALL)
ค่าของพีซีเดิมท้งั 13 บิตนาํ ค่าไปเก็บไวใ้ นสแต็กเรียกกระบวนการน้ีว่าพุช (Push) จากน้นั ค่าพีซีจะ
เปล่ียนแปลงตามค่าของแอดเดรสท่ีตอ้ งกระโดดไปทาํ งาน โดยค่าพีซีใน 2 บิตบน ไดม้ าจากบิต 3 และ
4 ของ PCLATH ดงั ในรูปท่ี 1.15 (ค)
ลกั ษณะท่ีส่ี หลงั จากท่ีไมโครคอนโทรลเลอร์กระทาํ คาํ สั่ง RETURN, RETFIE หรือ
RETLW จะทาํ การโหลดค่าพีซีที่เก็บไวใ้ นสแต็กกลบั มา เรียกกระบวนการน้ีวา่ POP การกาํ หนดค่า
พีซีในลกั ษณะน้ีไมต่ อ้ งใช้ PCLATH ในการกาํ หนดค่าแต่อยา่ งใด ดงั รูปท่ี 1.15 (ง)
1.4.4 สแตก็ (Stack)
ไมโครคอนโทรลเลอร์ PIC16F877A มีหน่วยความจาํ สาํ รองสาํ หรับเก็บค่าโปรแกรมเคาท์
เตอร์ชวั่ คราวขนาด 13 บิต เรียกวา่ สแต็ก ทาํ หนา้ ที่เก็บขอ้ มูลของรีจิสเตอร์ท่ียงั ตอ้ งการใชง้ านและเมื่อ
ขอ้ มูลน้นั ถูกนาํ มาเก็บไวใ้ นสแต็กแลว้ สามารถเปล่ียนขอ้ มูลในรีจิสเตอร์ตวั น้นั ไดท้ นั ที หลงั จากที่
ทาํ งานเรียบร้อยจึงกลบั มาอา่ นขอ้ มูลเดิมกลบั จากสแตก็ กระบวนการทาํ งานแสดงรูปท่ี 1.16
รูปท่ี 1.16 แสดงกลไกการทาํ งานของสแตก็ อยา่ งง่าย
ทม่ี า : (ณฐั พล วงศส์ ุนทรชยั และชยั วฒั น์ ลิ้มพรจิตรวไิ ล, 2549, 43)
26
การเก็บขอ้ มูลของสแต็กมีลกั ษณะเป็ นระดบั หรือเป็ นช้ันขอ้ มูลที่เก็บเขา้ มาก่อนจะตอ้ ง
อา่ นออกทีหลงั หรือเป็ นแบบ FILO (First In Last Out) จาํ นวนระดบั จาํ กดั ไวท้ ่ี 8 ระดบั โดยพ้ืนท่ีของ
สแต็กน้นั จะจดั สรรแยกไวต้ ่างหากไม่เก่ียวขอ้ งกบั พ้ืนท่ีของหน่วยความจาํ แต่อย่างใดตวั ช้ีตาํ แหน่ง
ของสแต็กหรือสแต็กพอยตเ์ ตอร์ ผูใ้ ชง้ านไม่สามารถทาํ การอ่านหรือเขียนขอ้ มูลไดโ้ ดยค่าของสแต็ก
พอยตเ์ ตอร์จะเปล่ียนแปลงอตั โนมตั ิ จากการกระทาํ คาํ สั่ง CALL, RETURN, RETLW และ RETFIE
การเก็บค่าของสแต็กจะต่อเนื่องกนั เป็ นวงกลม สามารถเก็บขอ้ มูลได้ 8 ค่า เมื่อมี การเก็บขอ้ มูลคร้ังที่
9 เขา้ มาขอ้ มูลน้นั จะไปทบั ในสแต็กของขอ้ มูลคร้ังแรกวนเช่นน้ีไปตลอด ดงั น้นั ในไมโครคอนโทรล
เลอร์ PIC16F877A จึงไม่มีการแจง้ เหตุการณ์สแตก็ เกิน (Stack Overflow) นอกจากน้นั การเก็บหรือ
อ่านค่า ในสแตก็ ของไมโครคอนโทรลเลอร์ PIC16F877A จะเกิดข้ึนเม่ือมีการกระทาํ คาํ ส่ัง CALL,
RETURN, RETLW และ RETFIE หรือเกิดการอินเตอร์รัพตเ์ ท่าน้นั ไม่มีคาํ ส่ัง PUSH หรือ POP เพื่อ
ติดต่อกบั สแตก็ เหมือนกบั ไมโครคอนโทรลเลอร์เบอร์อ่ืน ๆ
1.4.5 การจดั สรรหน่วยความจาํ ประเภทอีอีพร็อม
หน่วยความจาํ อีอีพร็อม เป็ นหน่วยความจาํ ท่ีใชเ้ ก็บค่าคงที่หรือตารางขอ้ มูลขนาดใหญ่ ท่ี
ไม่ตอ้ งการการเปลี่ยนแปลงขอ้ มูลบอ่ ย ๆ ขอ้ มูลจะคงอยไู่ มส่ ูญหายถึงแมว้ า่ ไม่มีไฟเล้ียงระบบ วธิ ีการ
เขียนขอ้ มูลไปที่หน่วยความจาํ น้ัน จะต้องกาํ หนดค่าคอนฟิ กกูเลชั่นเวิร์ด (Configuration Word)
เพ่ือให้สามารถเขียนข้อมูลไปที่หน่วยความจําโปรแกรมได้ โดยการเซตบิต PWRTEN โดย
หน่วยความจาํ ประเภทอีอีพร็อม ประกอบดว้ ยฟังกช์ นั่ ดงั น้ี
1.4.5.1 ฟังกช์ นั่ การอา่ นและเขียนหน่วยความจาํ ขอ้ มูลประเภทอีอีพร็อม ประกอบดว้ ย
ฟังกช์ นั่ write_eeprom () และ Read_eeprom ()
1.4.5.2 ฟังกช์ นั่ การอา่ นและเขียนหน่วยความจาํ โปรแกรมของอีอีพร็อม ประกอบดว้ ย
ฟังกช์ นั่ write_eeprom () และฟังกช์ นั่ Read_eeprom ()
1.5 วงจรประกอบการทาํ งานของไมโครคอนโทรลเลอร์
วงจรประกอบการทาํ งานของไมโครคอนโทรลเลอร์ หมายถึง การออกแบบระบบการเชื่อมต่อ
ระหวา่ งไมโครคอนโทรลเลอร์กบั อุปกรณ์ประกอบอ่ืน ๆ เช่น แหล่งจ่ายไฟ สัญญาณนาฬิกา ระบบ
การรีเซต เป็ นตน้ ซ่ึงมีความสําคญั ต่อการเร่ิมตน้ การทาํ งานและประสิทธิภาพในการทาํ งานของ
ไมโครคอนโทรลเลอร์ การออกแบบท่ีดีมีองค์ประกอบหลายอย่าง เช่น ระบบตอ้ งมีขนาดเล็กและ
นาํ ไปใชง้ านไดจ้ ริงมีเสถียรภาพในการทาํ งานและตอบสนองความตอ้ งการของผูใ้ ช้ ดงั น้นั ก่อนการ
ออกแบบผูอ้ อกแบบจะตอ้ งมองระบบโดยรวมวา่ จะให้ความสําคญั กบั จุดไหนก่อน แลว้ จึงออกแบบ
27
ตามความตอ้ งการน้นั ๆ ขอ้ มูลเบ้ืองตน้ ท่ีผูอ้ อกแบบวงจรประกอบการทาํ งานของไมโครคอนโทรล
เลอร์จะตอ้ งศึกษาประกอบดว้ ย
1.5.1 แหล่งจา่ ยไฟ (Power Supply)
แหล่งจ่ายไฟ (VDD) สําหรับไมโครคอนโทรลเลอร์ PIC16F877A สามารถทาํ งานได้ที่
ไฟเล้ียงวงจรต้งั แต่ +2 ถึง +5.5 โวลต์ โดยไฟบวกต่อเขา้ กบั ขา 11, 32 และไฟลบต่อเขา้ กบั ขา 12, 31
ใช้คาปาซิเตอร์ชนิดเซรามิกค่า 0.1 ไมโครฟารัด ต่อกบั กราวด์เพื่อลดสัญญาณรบกวน และตอ้ ง
ออกแบบลายวงจรใหอ้ ยใู่ กลข้ าแหล่งจ่ายไฟใหม้ ากที่สุด
1.5.2 การออกแบบและเลือกใชแ้ หล่งกาํ เนิดสัญญาณนาฬิกา
สัญญาณนาฬิกาเป็ นตัวกาํ หนดจงั หวะการทาํ งานของระบบไมโครคอนโทรลเลอร์
PIC16F877A โดยสามารถเลือกใชแ้ หล่งกาํ เนิดสัญญาณนาฬิกา (Oscillator) ได้ 2 แบบคือ
1.5.2.1 แบบภายใน ซ่ึงเป็ นประเภทวงจรอาร์ซี (RC Oscillator) ความถ่ี 4 เมกกะเฮิรตซ์
อุณหภูมิ 25 ๐C ออสซิลเลเตอร์ประเภทน้ีความถ่ีจะเปล่ียนแปลงตามอุณหภูมิภายนอก
1.5.2.2 แบบภายนอก มีแหล่งกาํ เนิดสัญญาณนาฬิกา 3 ชนิด ดงั รูปที่ 1.14 และโหมด
สัญญาณนาฬิกา 4 โหมด โดยกาํ หนดท่ีบิต FOSC0 และ FOSC1 ของรีจิสเตอร์การจดั การกบั ไฟล์เวิร์ด
(Configulationword) การใชง้ านจริงจะตอ้ งเลือกโหมดใดโหมดหน่ึง สญั ญาณนาฬิกาประกอบดว้ ย
1) สัญญาณนาฬิกาจากคริสตลั พลังงานต่าํ หรือ แอลพีออสซิลเลเตอร์ (Low
Power Crystal : LP) ความถ่ีคา่ 32 ถึง 200 กิโลเฮิรตซ์
2) สัญญาณนาฬิกาจากคริสตัลแบบเรโซเนเตอร์ หรือ เอ็กทีออสซิลเลเตอร์
(Crystal/Resonator : XT) ความถี่ 200 กิโลเฮิรตซ์ ถึง 4 เมกกะเฮิรตซ์
3) สัญญาณนาฬิกาจากวงจรอาร์ซี หรือ อาร์ซีออสซิลเลเตอร์ (Resistor/Capacitor
: RC) ความถี่สูงสุด 4 เมกกะเฮิรตซ์ ถึง สัญญาณนาฬิกาจากคริสตลั แบบความเร็วสูงหรือเฮ็ชเอส
ออสซิลเลเตอร์ (High-Speed : HS) ความถ่ีต้งั แต่ 4 เมกกะเฮิรตซ์ ถึง 20 เมกกะเฮิรตซ์
4) สัญญาณนาฬิกาจากเซรามิคออสซิลเลเตอร์ (Ceramic Resonator) สัญญาณ
นาฬิกาชนิดน้ีราคาถูกเมื่อเปรียบเทียบกบั ออสซิลเลเตอร์ประเภทอ่ืน ความถี่ผิดพลาด (Error) ± 5%
ไม่ตอ้ งใชค้ าปาซิเตอร์ต่อภายนอก ขากลางต่อเขา้ กบั กราวด์ของระบบ อีกสองขาต่อกบั OSC1 (ขา 13)
และ OSC2 (ขา 14) ดงั รูปที่ 1.17 (ก)
5) สัญญาณนาฬิกาจากควอตซ์คริสตอลออสซิลเลเตอร์ (Quartz Crystal
Oscillator) สญั ญาณนาฬิกาชนิดน้ีไมม่ ีวงจรขยายสัญญาณภายใน มีคริสตอลผลิตความถ่ีกาํ ลงั ต่าํ ตอ้ ง
ใชค้ าปาซิเตอร์ต่อลงกราวด์ ขาท้งั สองต่อเขา้ กบั OSC1 (ขา 13) และ OSC2 (ขา 14) ความถ่ีมีความ
เที่ยงตรง แสดงดงั รูปท่ี 1.17 (ข)
28
6) สญั ญาณนาฬิกาจากทีทีแอลคริสตอลออสซิลเลเตอร์ (TTL Crystal Oscillator)
คือสัญญาณนาฬิกาท่ีมีคริสตอลและวงจรขยายสญั ญาณอยภู่ ายในตวั ทาํ ใหค้ วามถี่ที่ผลิตมีเสถียรภาพ
มาก มีราคาแพง การตอ่ ใชง้ านต่อตามขอ้ มูลของบริษทั ผผู้ ลิต แสดงดงั รูปที่ 1.17 (ค)
(ก) เซรามิคออสซิลเลเตอร์ (ข) ควอตซ์คริสตอลออสซิลเลเตอร์ (ค) ทีทีแอลคริสตอลออสซิลฯ
รูปท่ี 1.17 ออสซิลเลเตอร์ชนิดตา่ งๆ
7) คา่ คาปาซิเตอร์ C1 และ C2 เลือกไดจ้ ากตารางท่ี 1.3
รูปท่ี 1.18 การต่อแหล่งกาํ เนิดสญั ญาณนาฬิกาเขา้ กบั ไมโครคอนโทรลเลอร์ PIC16F877A
29
ตารางท่ี 1.3 ค่าคาปาซิเตอร์ C1 และ C2 ที่ความถี่ตา่ ง ๆ
Oscillator Type Crystal Freq. Cap. Range C1 Cap. Range C2
LP 32 kHz 33 pF 33 pF
200 kHz 15 pF 15 pF
47 - 68 pF
200 kHz 47 - 68 pF 15 pF
15 pF
XT 1 kHz 15 pF 15 pF
15 - 33 pF
4 kHz 15 pF 15 - 33 pF
4 kHz 15 pF
HS 8 kHz 15 - 33 pF
20 kHz 15 - 33 pF
ทม่ี า : (Microchip, 2548, 145)
8) ในกรณีท่ีใชแ้ หล่งกาํ เนิดสญั ญาณนาฬิกาจากวงจรอาร์ซี (RC) ต่อวงจรดงั รูปที่
1.19
รูปที่ 1.19 การต่อวงจรสญั ญาณนาฬิกาอาร์ซีออสซิลเลเตอร์
ทมี่ า : (Microchip, 2548, 146)
1.5.3 การออกแบบวงจรไมโครคอนโทรลเลอร์ใชง้ านจริงในทางปฏิบตั ิ
สิ่งที่ตอ้ งพจิ ารณาแตล่ ะวงจรการต่อใชง้ านจริงแสดง ดงั รูปท่ี 1.20
1.5.3.1 วงจรคริสตอลออสซิลเลเตอร์ ตอ้ งออกแบบให้คริสตอล คาปาซิเตอร์ C1 และC2
อยรู่ วมกนั และใกลก้ บั ขา OSC1 และ OSC2 มากท่ีสุด ตวั ถงั คริสตอลท่ีเป็นโลหะตอ้ งต่อกบั กราวด์
30
1.5.3.2 วงจรรีเซตที่ขา MCLR ใชต้ วั ตา้ นทานค่า 4.7 กิโลโอห์ม เซรามิกคาปาซิเตอร์ค่า
0.1 ไมโครฟารัด ท่ีแรงดนั 16 โวลต์ ทาํ หน้าที่เป็ นตวั หน่วงเวลาดว้ ยค่าอาร์ซีไทมค์ อนสเต็นท์ (RC
Time Constant) เพื่อเตรียมความพร้อมใหก้ บั อุปกรณ์ต่อพว่ งในการเริ่มตน้ ทาํ งาน
1.5.3.3 ขา RA4/T0CKI/C1OUT เป็ นขาอินพุตเอาต์พุต (I/O) แบบโอเพินเดรน (Open
Drain) ตอ้ งตอ่ ตวั ตา้ นทานค่า 1 กิโลโอห์มอนุกรมกบั โหลดและแหล่งจ่ายไฟ เพื่อป้องกนั ความเสียหาย
1.5.3.4 ขา RB6 และ RB7 เป็ นขาท่ีทาํ หนา้ ที่ 2 อยา่ ง คือเป็ นขาอินพุตเอาตพ์ ุตและใชเ้ ป็ น
ขาโปรแกรมซีพยี ู ถา้ เป็นบอร์ดท่ีมีวงจรโปรแกรมซีพยี ใู นตวั จะตอ้ งมีสวติ ช์สบั เปลี่ยนหนา้ ท่ี
1.5.3.5 ขา RB3 ทําหน้าท่ี 2 อย่างคือเป็ นขาอินพุตเอาต์พุตและเป็ นขากําหนดการ
โปรแกรมซีพียดู ว้ ยวธิ ีการโปรแกรมขอ้ มูลดว้ ยแรงดนั ต่าํ (Low Voltage Programming) ถา้ ไม่ใชง้ าน
ตอ้ งตอ่ ตวั ตา้ นทานพลู อปั เพือ่ ไม่ใหเ้ กิดสถานะดงั กล่าวข้ึนระหวา่ งการใชง้ านและการโปรแกรมซีพยี ู
1.5.3.6 การออกแบบการต่อประสานกบั อุปกรณ์ภายนอก แตล่ ะขาสามารถจา่ ยกระแสได้
ไมเ่ กิน 25 แอมป์ การออกแบบตอ้ งไม่เกิน 15 มิลลิแอมป์ หรือตามความตอ้ งการของโหลด กระแส
เอาตพ์ ุตรวมของพอร์ต A, B และ E สูงสุด 200 มิลลิแอมป์ ของพอร์ต C และ D สูงสุด 200 มิลลิ
แอมป์
รูปที่ 1.20 การออกแบบวงจรเตรียมความพร้อมการทาํ งานใหก้ บั ไมโครคอนโทรลเลอร์ PIC16F877A
1.5.4 การออกแบบกระบวนรีเซต
รีเซต เป็ นกระบวนการกาํ หนดให้ไมโครคอนโทรลเลอร์เร่ิมตน้ ทาํ งานใหม่ เพ่ือแกไ้ ข
ความผิดปกติหรือทาํ งานผิดพลาด โดยคา้ งอยู่ในสถานะใดสถานะหน่ึงหรือหยุดทาํ งาน เมื่อเกิดรีเซต
31
ไมโครคอนโทรลเลอร์ก็จะกลบั มาเร่ิมตน้ ทาํ งานใหม่ การรีเซตของไมโครคอนโทรลเลอร์ PIC16F877A
มี 6 ประเภทดงั น้ี
รูปท่ี 1.21 กลไกทางของวงจรรีเซตไมโครคอนโทรลเลอร์ PIC16F877A
ทม่ี า : (Microchip, 2548, 147)
1.5.4.1 เพาเวอร์ออนรีเซต (Power-On Reset : POR) เป็ นการรีเซตท่ีมีนยั สาํ คญั สูงสุด
เกิดข้ึนหลงั จากมีการจ่ายไฟเล้ียงใหก้ บั ไมโครคอนโทรลเลอร์ วงจรเพาเวอร์ออนรีเซตจะควบคุมให้
ไมโครคอนโทรลเลอร์อยใู่ นสภาวะรีเซตจนกวา่ ไฟเล้ียงจะเพ่ิมข้ึนถึงจุดท่ีสูงเพียงพอ 2 ถึง 5.5 โวลต์
หลงั จากที่เกิดเพาเวอร์ออนรีเซตจะมีไทเมอร์ออนรีเซตอีก 2 ตวั ทาํ งาน เพื่อเตรียมความพร้อมให้แก่
ตวั ไมโครคอนโทรลเลอร์ ไดแ้ ก่เพาเวอร์อปั ไทเมอร์ (Power up Timer : PWRT) และออสซิลเลเตอร์
สตาร์ทอปั ไทเมอร์ (Oscillator Start Up Timer) มีรายละเอียดดงั น้ี
1) เพาเวอร์อัปไทเมอร์ (PWRT) ไทเมอร์น้ีมีคาบเวลา 72 มิลลิวินาที ทาํ งาน
หลงั จากเกิดเพาเวอร์ออนรีเซตหรือเบราน์เอาตร์ ีเซต เป็ นตวั กาํ หนดให้ไมโครคอนโทรลเลอร์อยู่ใน
สภาวะรีเซตจนกวา่ ไฟเล้ียงเพม่ิ ข้ึนถึงจุดที่ทาํ งานได้
2) ออสซิลเลเตอร์สตาร์ทอปั ไทเมอร์ เป็ นไทเมอร์ที่มีคาบเวลา 1,024 ไซเกิลของ
คาบเวลาสัญญาณนาฬิกาหลัก ทํางานต่อจากเพาเวอร์อัปไทเมอร์ด้วยการหน่วงเวลา เพื่อให้
แหล่งกาํ เนิดสญั ญาณนาฬิกามีเสถียรภาพ ออสซิลเลเตอร์สตาร์ทอปั ไทเมอร์จะทาํ งานเม่ือเลือกโหมด
สัญญาณนาฬิกาเป็ นสัญญาณนาฬิกาจากคริสตลั พลงั งานต่าํ (LP), สัญญาณนาฬิกาจากคริสตลั แบบ
32
เรโซเนเตอร์ (XT) หรือ สัญญาณนาฬิกาจากคริสตลั แบบความเร็วสูง (HS) ทาํ งานเฉพาะเมื่อเกิด
เพาเวอร์ออนรีเซตหรือเมื่อไมโครคอนโทรลเลอร์ถูกกระตุน้ (Wake-Up) ออกจากโหมดประหยดั
พลงั งาน
1.5.4.2 การรีเซตท่ีขา MCLR ระหวา่ งการทาํ งานปกติ (Master Clear Reset) เกิดข้ึนเม่ือขา
MCLR ไดร้ ับ “0” สามารถออกแบบวงจรการรีเซตได้ 2 แบบ ดงั รูปท่ี 1.22 คือ รีเซตแบบอตั โนมตั ิ
ดงั รูปที่ 1.22 (ก) และแบบกดสวติ ชร์ ีเซต ดงั รูปท่ี 1.22 (ข)
(ก) วงจรการรีเซตแบบอตั โนมตั ิ (ข) วงจรการรีเซตแบบสวติ ช์กดรีเซต
รูปที่ 1.22 การออกแบบวงจรรีเซต
1.5.4.3 การรีเซตที่ขา MCLR เมื่อทาํ งานอยู่ในโหมดสลีป การรีเซตในโหมดน้ีทาํ ให้
ไมโครคอนโทรลเลอร์กลบั มาเร่ิมตน้ ทาํ งานท่ีแอดเดรส 0x00 ขอ้ มูลในหน่วยความจาํ แรมไม่ไดร้ ับ
ผลกระทบ ถา้ ไมโครคอนโทรลเลอร์ทาํ งานในโหมดสลีป เม่ือขา MCLR ไดร้ ับ “0” จะเกิดการรีเซต
และยงั ทาํ ใหเ้ กิดการเวกอปั ออกจากโหมดสลีปดว้ ย
1.5.4.4 การรีเซตเนื่องจากวอทช์ด็อกไทเมอร์ เกิดข้ึนเม่ือเปิ ดการใช้งาน(Enable)ให้วอทช์
ด็อกไทเมอร์ทาํ งานและซีพียูไม่สามารถเคลียร์ค่าการนบั ของไทเมอร์ไดภ้ ายในคาบเวลาของวอทช์
ด็อกไทเมอร์ เน่ืองจากไมโครคอนโทรลเลอร์ทาํ งานผิดพลาด วนอยู่กบั งานบางอยา่ งจนวอทช์ด็อก
ไทเมอร์เกิดไทม์เอาต์ วอทช์ด็อกไทเมอร์จะสร้างสัญญาณรีเซตภายในส่งมายงั ซีพียู ทาํ ให้เกิดการรี
เซตไมโครคอนโทรลเลอร์ข้ึน ถา้ ในขณะน้นั ไมโครคอนโทรลเลอร์อยใู่ นโหมดสลีป การที่วอทช์ด็อก
33
ไทมเ์ มอร์เกิดไทมเ์ อาต์ จะเป็ นการเวกอปั หรือกระตุน้ ให้ไมโครคอนโทรลเลอร์ออกจากโหมดสลีป
กลบั มาทาํ งานในโหมดปกติ
1.5.4.5 วอทช์ด็อกไทเมอร์เวกอพั (Watchdog Timer Wake-Up) เม่ือไมโครคอนโทรลเลอร์
ทํางานในโหมดสลีปและวอทช์ด็อกไทเมอร์เกิดไทม์เอาต์ จะเป็ นการเวกอัปหรื อกระตุ้นให้
ไมโครคอนโทรลเลอร์ออกจากโหมดสลีป กลบั มาทาํ งานในโหมดปกติ
1.5.4.6 เบราน์เอาตด์ ีเท็ค (Brown-Out Detect : BOD) เป็ นการรีเซตเน่ืองจากไฟเล้ียงลด
ต่าํ ลงกวา่ ท่ีกาํ หนด วงจรเบราน์เอาตด์ ีเทค็ ซ่ึงทาํ งานท่ีแรงดนั 3.7 โวลต์ ถึง 4.35 โวลต์ ในการทาํ งาน
จริง เม่ือแรงดนั ลดต่าํ ลงถึง 4 โวลต์ เป็ นเวลามากกวา่ 100 ไมโครวินาที วงจรเบราน์เอาต์ดีเท็ค จะ
ทาํ งานเพ่ือสร้างสัญญาณรีเซต ภายในส่งต่อให้หน่วยประมวลผลเริ่มตน้ ทาํ งานใหม่ การเลือกใช้
วงจรเบราน์เอาต์ดีเท็ค ได้โดยเซตบิต BOD ถ้าไม่ต้องการใช้วงจรให้ดิสเอเบิล โดยให้เคลียร์บิต
BODEN ในส่วนการจดั การกบั ไฟลเ์ วริ ์ด (Configulationword)
1.5.5 ส่วนควบคุมอุปกรณ์อินพุตและเอาตพ์ ตุ
ไมโครคอนโทรลเลอร์ PIC16F877A มีพอร์ตสําหรับใชง้ าน 5 พอร์ต จาํ นวน 33 บิต ผูใ้ ช้
สามารถกาํ หนดหนา้ ท่ีและการทาํ งานใหก้ บั ขาพอร์ตไดด้ ว้ ยกระบวนการทางซอฟตแ์ วร์ การออกแบบ
การต่อประสานกบั อุปกรณ์ภายนอก แต่ละขาสัญญาณสามารถจ่ายกระแสได้ไม่เกิน 25 มิลลิแอมป์
การออกแบบควรให้จ่ายไดไ้ ม่เกิน 15 มิลลิแอมป์ หรือตามความตอ้ งการของโหลด กระแสเอาตพ์ ุต
รวมของพอร์ต A รวมกบั พอร์ต B และ E ไดส้ ูงสุดไมเ่ กิน 200 มิลลิแอมป์ สาํ หรับการจ่ายกระแสของ
พอร์ต C รวมกบั พอร์ต D สูงสุดไดไ้ ม่เกิน 200 มิลลิแอมป์
สรุป
ไมโครคอนโทรลเลอร์ คือ อุปกรณ์อิเล็กทรอนิกส์ท่ีรวมเอาหน่วยประมวลผลกลาง หน่วย
คาํ นวณทางคณิตศาสตร์และ หน่วยความจาํ และอุปกรณ์สําหรับติดต่อกบั อุปกรณ์ภายนอกไวด้ ว้ ยกนั
ใชใ้ นระบบควบคุมทางอิเลก็ ทรอนิกส์และการทาํ งานของเครื่องใชไ้ ฟฟ้าไดอ้ ยา่ งอิสระ ดว้ ยการเขียน
ชุดคาํ สั่งควบคุม ซีพียูแบ่งตามลกั ษณะการประมวลผลคาํ ส่ังได้ 2 ชนิดคือ แบบ RISC และ แบบ
CISC สถาปัตยกรรมของไมโครคอนโทรลเลอร์ PIC16F877A เป็ นแบบฮาร์วาร์ด มีการแยก
หน่วยความจาํ โปรแกรมออกจากหน่วยความจาํ ขอ้ มูล การประมวลผลคาํ ส่ังเป็ นแบบไปป์ ไลน์
ไมโครคอนโทรลเลอร์ติดต่อกบั หน่วยความจาํ โปรแกรมดว้ ยบสั แอดแดรส 13 บิต ติดต่อกบั บสั ขอ้ มูล
คาํ ส่ัง 14 บิต ติดต่อกบั รีจิสเตอร์และหน่วยความจาํ ขอ้ มูล 8 บิต ระบบบสั สําหรับติดต่อกบั อุปกรณ์
ภายนอกมี 2 ระบบคือ ไอสแควซีและระบบวนั ไวร์
34
การออกแบบระบบการตอ่ ประสานระหวา่ งไมโครคอนโทรลเลอร์กบั อุปกรณ์ประกอบอื่นๆ มี
ความสําคญั ต่อการเร่ิมตน้ เสถียรภาพและประสิทธิภาพการทาํ งานซ่ึงประกอบด้วย แหล่งจ่ายไฟ
ไมโครคอนโทรลเลอร์สามารถทาํ งานที่ไฟเล้ียงวงจรต้งั แต่ 2 ถึง 5.5 โวลต์ แหล่งกาํ เนิดสัญญาณ
นาฬิกา เลือกใช้ได้ 2 แบบคือ แบบภายในซ่ึงเป็ นประเภทอาร์ซีออสซิลเลเตอร์ความถี่ไม่เกิน 4
เมกกะเฮิรตช์ แบบภายนอก มีแหล่งกาํ เนิดสัญญาณนาฬิกาให้เลือก 3 ชนิด ประกอบดว้ ย เซรามิค
ออสซิลเลเตอร์, ควอตซ์คริสตอลออสซิลเลเตอร์ และทีทีแอลคริสตอลออสซิลเลเตอร์ แหล่งกาํ เนิด
11
สญั ญาณนาฬิกาดงั กล่าวสามารถผลิตความถี่ไดต้ ้งั แต่ 4 เมกกะเฮิรตช์ ถึง 20 เมกกะเฮิรตช์
การรีเซต เป็ นกระบวนการกาํ หนดให้ไมโครคอนโทรลเลอร์เร่ิมตน้ ทาํ งานใหม่ เพ่ือแกไ้ ข
ปัญหาความผิดปกติหรือทาํ งานผิดพลาดและคา้ งอยู่ในสถานะใดสถานะหน่ึง เมื่อเกิดการรีเซต
ไมโครคอนโทรลเลอร์จะกลบั มาเริ่มตน้ ทาํ งานใหมท่ ่ีตาํ แหน่ง 0x00
เอกสารอ้างองิ
ณฐั พล วงศส์ ุนทรชยั และ ชยั วฒั น์ ลิ้มพรจิตรวไิ ล. เรียนรู้และปฏิบตั ิการไมโครคอนโทรลเลอร์
PIC16F877. กรุงเทพฯ : อินโนเวตีฟ เอก็ เพอริเมนต.์ 2549
ทีมงานสมาร์ทเลิร์นน่ิง. PIC Microcontroller Learning-By-Doing ดว้ ยภาษา C. กรุงเทพฯ :
หา้ งหุน้ ส่วนสามญั สมาร์ทเลิร์นน่ิง. 2550
ประจิน พลงั สนั ติกลุ . การเขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์ dsPIC30F
ดว้ ยคอมไพเลอร์ MPLAB C. กรุงเทพฯ : แอพซอฟตเ์ ทค. 2551
วบิ ูลย์ ช่ืนแขก. ไมโครโปรเซสเซอร์. กรุงเทพฯ : มหาวทิ ยาลยั เทคโนโลยพี ระจอมเกลา้
พระนครเหนือ. 2549
สมบูรณ์ เนียมกล่าํ . เรียนรู้และประยกุ ตใ์ ชง้ าน PIC Microcontroller. กรุงเทพฯ :
เอดิสันเพรสโปรดกั ส์. 2549
Microchip. PIC16F87xA Data Sheet. Microchip.
Corp.http://www.prism.gatech.edu/~kadams6/ges/risc_i_scr.gif
http://dev.emcelettronica.com/3-steps-to-your-first-development-board
35
แบบฝึ กหดั ที่ 1 หน่วยที่ 1
สอนคร้ังที่ 1-2
ช่ือวชิ า ไมโครคอนโทรลเลอร์ รหัสวชิ า 3104-2011 จํานวนชั่วโมงรวม 8 ชั่วโมง
ช่ือหน่วย โครงสร้างของไมโครคอนโทรลเลอร์ จํานวนช่ัวโมงสอน 4 ชั่วโมง
ช่ือเร่ือง โครงสร้างของไมโครคอนโทรลเลอร์
คาํ ชี้แจง 1. จงตอบคาํ ถามใหไ้ ดใ้ จความสมบูรณ์ ใชเ้ วลาสาํ หรับการทาํ แบบฝึกหดั 20 นาที
2. แบบฝึกหดั มีจาํ นวน 5 ขอ้ คะแนนเตม็ 10 คะแนน
1. จงบอกความหมายของไมโครคอนโทรลเลอร์ (1 คะแนน)
2. จงบอกส่วนประกอบและหนา้ ที่โครงสร้างหลกั ของไมโครคอนโทรลเลอร์ (3 คะแนน)
3. จงอธิบายโครงสร้างของสถาปัตยกรรมแบบฮาร์วาร์ด (2 คะแนน)
36
4. จงอธิบายการทาํ งานของระบบบสั แบบวนั ไวร์ (1 คะแนน)
5. จงบอกรายละเอียดการออกแบบวงจรการทาํ งานของไมโครคอนโทรลเลอร์ PIC16F877A
(3 คะแนน)