บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู...
TRANSCRIPT
![Page 1: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/1.jpg)
บริษัท อีเลคทรอนิคส ซอรซ จํากดั คูมือการใชงาน
F2MC-8L FAMILY 8-BIT MICROCONTROLLER
MB89201 SERIES
เร่ิมตนการใชงาน DEV-MB89N202-APP1
Rev. 2
![Page 2: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/2.jpg)
2สารบัญ บทนํา 3
1. บทที่ 1 Hardware 1.1 คุณสมบัติ 4 1.2 ลักษณะของบอรด DEV-MB89N202-APP1 5 1.3 การเชื่อมตอและการเซต 6 1.4 คุณสมบัติทางฮารดแวร 7
2. บทที่ 2 Fujitsu Flash Software Programmer 2.1 การจัดฮารดแวรสําหรบัการดาวนโหลดโปรแกรมแบบ
In-circuit serial programming 8 2.2 การติดตั้ง software Programmer 9 2.3 ติดตอกับ DEV-MB89N202-APP1 10
3. บทที่ 3 Fujitsu Softune Workbench IDE 3.1 การติดตั้งโปรแกรม Softune workbench 15 3.2 การเริ่มตนใชงานโปรแกรม Softune Workbench 18 3.3 การสรางโปรเจคทใหม 26
4. บทที่ 4 โปรแกรมตัวอยาง 4.1 การขับ LED 7 เซ็กเมนต 37 4.2 การใชงาน Timer 40 4.3 การใชงาน Interrupt Timer 43 4.4 การเขียนโปรแกรมรับสวิตช
4.4.1 โปรเจคท KeyBasic 1 46 4.4.2 โปรเจคท KeyBasic 2 49 4.4.3 โปรเจคท KeyAdvance 52
4.5 การใชงานสวนแปลงสัญญาณอนาลอกเปนดิจิตอล (ADC) 54 4.6 การอินเตอรเฟซกับหนวยความจํา EEPROM (24C01) 56
![Page 3: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/3.jpg)
3บทนํา บอรดพัฒนา DEV-MB89N202-APP1 ไดถูกพัฒนาขึ้นเพื่อเปนตัวอยางการใชงานไมโคร- คอนโทรลเลอรของ Fujitsu เบอร MB89F202/MB89N202 เปนพื้นฐานที่สําคัญสําหรับวิศวกร ชางเทคนิค นกัวิจัย นักศึกษา และ นกัอิเล็กทรอนิกสสมัครเลน ที่มีความสนใจที่จะเริ่มตนการพัฒนาชิ้นงานเพื่อการใชงานจริงดวย MB89F202/MB89N202 อุปกรณที่ใชในการพัฒนาบอรดเปนอุปกรณพื้นฐานที่สามารถหาไดทั่วไปในทองตลาด วงจรของบอรดจะแสดง การสรางวงจร in-circuit serial programming พื้นฐานการเชื่อมตออุปกรณภายนอกเชน LED 7-Segment EEPROM คียสวิตช และ Buzzer คูมือการใชงานแบงเปน 4 บท โดยในบทแรกจะแสดงสวนประกอบทางฮารดแวรของบอรด DEV-MB89N202-APP1 การปรับตั้ง หนาที่ของแตละสวน และขอควรระวังในการใชงาน สวนที่สองแสดงการใชงานวงจร in-circuit serial programming การติดตั้งและใชงานโปรแกรมบนคอมพิวเตอรเพื่อติดตอกับบอรด DEV-MB89N202–APP1 ผานพอรตสื่อสารขอมูลอนุกรม (RS232) เพื่อดาวนโหลด machine code ลงในหนวยความจําโปรแกรมภายในแบบแฟลช และในบทที่สามจะกลาวถึงการใชงานโปรแกรม Softune Workbench เพื่อการเขียนโปรแกรมภาษาซี อยางละเอียดทีละขั้นตอน ดวยรูปภาพ ประกอบเพื่องายสําหรับการทําความเขาใจ โดยตลอดการอธิบายจะเนนวิธีการใชงานบอรด DEV-MB89N202-APP1 แตจะไมลงรายละเอียดในการเขียนโปรแกรม และในบทที่สี่ จะอธิบายโปรแกรมตัวอยางที่ไดพัฒนาสําหรับการนําไปใชงานจริงและทดสอบการทํางานของบอรดพัฒนา DEV-MB89N202-APP1 ซึ่งประกอบดวย การขับLED 7 เซกเมนต การใชงาน Timer การเขียนโปรแกรมรับสวิตช การอินเตอรเฟซกับ EEPROM เบอร 24C01 และการใชงานสวนแปลงสัญญาณอนาลอกเปนดิจิตอล (ADC) ที่มีอยูในตัว MB89F202/MB89N202
![Page 4: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/4.jpg)
4
บทที ่1 Hardware 1.1 คุณสมบัติ • ใช MCU เบอร MB89F202/MB89N202
- หนวยความจําโปรแกรมแบบแฟลชขนาด 16 กิโลไบท - โปรแกรมซ้ําได 1,000 ครั้ง สําหรับ MB89N202 - โปรแกรมซ้ําได 10,000 ครั้ง สาํหรับ MB89F202 - หนวยความจําขอมูล (RAM) ขนาด 512 ไบท
- หนวยแปลงสัญญาณอนาลอกเปนดิจิตอลความละเอียด 10 บิท - หนวยสื่อสารขอมูลอนุกรม (UART ) - ไทเมอรขนาด 8 บิท และ 16 bit • ใช main clock ความถี่ 8 MHz • In-Circuit Serial Programming ดวย พอรตอนุกรม RS232 • LED 7 Segments 4 หลัก • LED 3 ดวง • มีหนวยความจําแบบ EEPROM : 24C01 • คียสวิตช 4 คีย • มีอินพุทสําหรับเทอรมิสเตอร 2 ชอง • มีหนาสัมผัสของรีเลยพิกัด 10A/120V จํานวน 2 ชุด • Buzzer • มีตัวอยางโปรแกรมเพื่องายสําหรับการเริ่มตน • มีเทอรมิสเตอรรวมมากับบอรด
![Page 5: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/5.jpg)
5
1.2 ลักษณะของบอรด DEV-MB89N202-APP1 บอรด DEV-MB89N202-APP1 นําเสนอตัวอยางการนําไมโครคอนโทรลเลอร MB89F202/ MB89N202 เพื่อการใชงานจริง ประกอบดวยวงจรพื้นฐานอยางเชน วงจรขับ LED 7-Segment และ LED 3 ดวง วงจรรับคียจํานวน 4 คีย เปนตน ซึ่งวงจรเหลานี้มีประโยชนอยางย่ิงสําหรับการใชในการพัฒนาและทดสอบโปรแกรมพืน้ฐาน
SW1: EEPROM Resonator Fujitsu MCU Display
Mainboard
Display Panel
LED1
LED2
LED3
Key1 Key2 Key3 Key4
Reset Button 24C01 8MHz MB89N202 P anel Thermister Input1
CN5:
CN4: Thermister Input2
Relay Contact1
CN3:
CN2: Relay Contact2
CN1: Power Connection CN5 RS232: Serial Communication Serial SL1:
Programming Program/Run Connection
BuzzerCircuit Selection
![Page 6: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/6.jpg)
6
1.3 การเชื่อมตอและการปรับตั้ง การตอแหลงจายไฟ ในภาคแหลงจายไฟของบอรด DEV-MB89N202-APP1 ไดรวมวงจรเรียงกระแส วงจรกรอง และวงจรรักษาระดับแรงดันไวแลว ดังนั้นจึงสามารถปอนแรงดันไฟตรง 12 โวลต และแรงดันไฟสลับ 9 โวลต ไดโดยไมตองคํานึงถึงขั้วของแหลงจายไฟจากภายนอก แตส่ิงที่ควรระวังคือ อยาปอนแรงดันเกินพกิัด
วงจร In-Circuit Serial Programming ขอดีประการหนึ่งของ MB89F202/MB89N202 คือ สามารถดาวนโหลดโปรแกรมดวยวงจร in-circuit serial programming ได โดยใชเพียงขา TXD, RXD และขา P60( high voltage) เทานั้น MAX232 กับอุปกรณภายนอกเพียงเล็กนอยก็สามารถสรางวงจรไดตามตองการ การเลือกโหมด Program/Run สไลดสวิตช SL1 ทําหนาที่เปนสวิตชเลือกโหมดการทํางานของ MB89F202/MB89N202 การปรับตั้งแสดงดังรูปขางลาง เมื่อตองการทํางานในโหมด “โปรแกรม” ใหเลื่อนสวิตชไปที่ตําแหนง “ P ” และเมื่อดาวนโหลดโปรแกรมเสร็จแลว หากตองการรัน ใหเลอืกสวติชไปที่ตําแหนง “ R “ Run Program ขอสังเกต : หลังจากเลื่อนสวิตชแลว ใหกดสวิตชรีเซต 1 ครั้ง เพื่อเขาสูโหมดรัน หรือโหมดโปรแกรม
![Page 7: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/7.jpg)
7
1.4 ลักษณะทางดานฮารดแวร
L = 91mm
W = 75mm
H = 40mm
** ขอสังเกต : รูปที่แสดงขางบนไมใชขนาดจริง เงื่อนไขแนะนําในการใชงาน 1. แรงดันขาเขา ดานอินพุทของ Power Supply +12 VDC , 9VAC 2. แรงดันขาเขา ดานขั้วตอเทอรมิสเตอร 5V 3. พิกัดหนาสัมผัสรีเลย 10A/120V
![Page 8: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/8.jpg)
8 บทที ่2 Fujitsu Flash Software Programmer 2.1 การจัดฮารดแวรสาํหรับการดาวนโหลดโปรแกรมแบบ in-circuit serial programming
Reset Button Program/RunSelector
Serial Port (RS232) Power Connector RS232 Connector ขั้นตอนการเตรียมบอรด DEV-MB89N202-APP1 สําหรับดาวนโหลดโปรแกรม
1. ตอแหลงจายไฟที่คอนเนคเตอร CN1 2. ตอสายดาวนโหลดระหวางพอรตอนุกรมของคอมพิวเตอรกับคอนเนคเตอร
RS232 ของบอรด 3. เลื่อนสไลดสวิตชไปที่ตําแหนง “ P ” 4. กดสวิตชรีเซตเพื่อเขาสูโหมดโปรแกรม
![Page 9: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/9.jpg)
92.2 การติดตั้งซอฟทแวรสาํหรับดาวนโหลดโปรแกรมของ Fujitsu รัน “Setup.exe” ในโฟลเดอร Fujitsu MCU Programmer V 5.0.02
คลิก OK เลือกโฟลเดอรสําหรับเก็บโปรแกรม แลวคลิก Next.
กําลังทําการติดตั้ง
![Page 10: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/10.jpg)
102.1 ติดตอกับบอรด DEV-MB89N202-APP1
รันโปรแกรม Fujitsu MCU Programmer Version 5.0.02 จากสตารทเมนู “Start>Programs>MCU Programmer”
โปรแกรมเมอรจะแสดง COM port ที่มีอยูบนคอมพิวเตอร
พอรตอนุกรมท่ีมีบนเครือ่ง
![Page 11: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/11.jpg)
11 เลือก F2MC8L Asynchronous และเลือกเบอร MCU แลวคลิกปุม Connect
พอรตอนุกรมที่ตออยูกับบอรด
ถาบอรด DEV-MB89N202-APP1 ตออยูกับคอมพิวเตอร โปรแกรมเมอรจะแสดงดังตัวอยางขางบน ซึ่งแสดงวาพอรตอนุกรมหมายเลข 1 (COM1) ตออยูกับบอรด
และอีกสักครู โปรแกรมเมอรจะแสดงไดอะล็อกบ็อกดังรูปขางลาง. คลิกเลือก “Advanced Mode”
![Page 12: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/12.jpg)
12 เลือกชนิดของ machine code ที่ตองการดาวนโหลด ดังเชน “Motorola S” คลิก “Load File/Project” เพื่อโหลด machine code สูบัฟเฟอร
![Page 13: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/13.jpg)
13โปรแกรมเมอรจะแสดงไฟลไดอะล็อกบ็อกดังรูปขางลาง โดยปกติ machine code จะถูกเก็บอยูในโฟลเดอร ABS
สําหรับตัวอยางขางลาง เลือก “ UART.mhx ”
![Page 14: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/14.jpg)
14 คลิก “OK” เพื่อเริ่มตนการโปรแกรม
![Page 15: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/15.jpg)
15บทที่ 3 Fujitsu Softune Workbench IDE 3.1 การติดตั้งโปรแกรม Softune Workbench
รันโปรแกรม “Setup.exe” ของ Softune Workbench V30L29 คลิก OK เลือกโฟลเดอรท่ีใชเก็บโปรแกรม
คลิก Next
![Page 16: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/16.jpg)
16 เลือกสวนประกอบของโปรแกรมที่ตองการ หากคอมพวิเตอรมีทรัพยากรมากพอ ขอแนะนําใหเลือกทั้งหมด
คลิกเลือกสวนประกอบที่ตองการ
คลิก Next
กําลังติดตั้งโปรแกรม
![Page 17: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/17.jpg)
17
คลิก Finish
![Page 18: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/18.jpg)
183.2 เริ่มตนใชงานโปรแกรม Softune Workbench รัน Softune Workbench V30L29 จาก “Start” เมนู Start>Programs>Softune V3>FFMC-8L-Family-Softune-Workbench หลังจากรันโปรแกรมสักครู โปรแกรมจะแสดงโลโกดังรูปขางลาง ลักษณะวินโดวของ Sotune Workbench แสดงดังรูปขางลาง
เมนูบาร ทูลบาร Build All ไอคอน
Project Window Editor Window Output Window
![Page 19: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/19.jpg)
19การเปดโปรเจคทตัวอยาง 1. เลือกเมนู File
2. คลิกเลือก Open Workspace 3. คลิกเลือกไฟลนามสกุล wsp 4. คลิก Open
![Page 20: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/20.jpg)
20 หลังจากเลอืกไฟลนามสกุล wsp แลว Softune Workbench จะแสดงรายละเอียด ของโปรเจคท
Build All
Project Window
Editor การปรับแตงวินโดวของ Softune Workbench
1. คลิกขวาบน editor window
2. เลือก Customize
![Page 21: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/21.jpg)
21
4. ปุมเลือกแบบตัวอักษร
3. คลิกเพื่อเลือกหรือยกเลิก การเปลี่ยนแบบตัวอักษรของ editor window ดวยการใชเมนู
1. เลือกเมนู View
2. เลือก Font
![Page 22: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/22.jpg)
22 การเปลี่ยน configuration ของโปรเจคท
2. เลือก setup Project
1. เลือกเมนู Project ตรวจสอบดูวา register bank ถูกเลือกไวหรอืไม ตองเลือกอยางนอย 1 bank เพื่อปองกันการซอนทับกันของหนวยความจํา ดังแสดงในรูปขางลาง
3. เลือก Linker
4. เลือก Bank0
![Page 23: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/23.jpg)
23การเริ่มการทํางานของ Absolute Module Converter . 5. เลือก Converter
6. คลิกเลือก
8. คลิก OK
7. เลือกรูปแบบไฟลของ ไฟลภาษาเครื่อง (hex file)
การจําลองการทํางานดวยโปรแกรม
1. เลือกเมนู Debug
2. เลือก Start Debug
![Page 24: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/24.jpg)
24
3. คลิกเพื่อทําการเซต Debug .
4. เลือก Simulator Debugger
5. คลิก Next
![Page 25: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/25.jpg)
25 6. เลือกเมนู Debug
7. เลือก Load target file
![Page 26: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/26.jpg)
263.3 การสรางโปรเจคทใหม
1. เลือกเมน ูFile
2. เลือก New
4. คลิก OK 3. คลิกเลือก
![Page 27: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/27.jpg)
27
** ขอสังเกต : หากไมมีเบอร MB89N202 หรือ MB89F202 ไมมีอยูใน list box ใหเลือกเบอร MB89P935A แทน เพราะมีโครงสรางเหมอืนกัน
5. คลิกเลือก
4. เลือก Project
6. เลือก MCU Family
8. ต้ังชื่อ Project และ Workspace 7. เลือกเบอร MCU **
9. เลือกโฟลเดอรท่ีใชเก็บ Project และ Workspace 10. คลิก OK
![Page 28: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/28.jpg)
28หลังจากไดสรางโปรเจคทใหมแลว โปรแกรม Softune จะสรางโฟลเดอรเพื่อใชเก็บโปรเจคท ซึ่งจะมีชื่อเหมือนกับชื่อโปรเจคท ไวในโฟลเดอรที่ไดเลือกไว แตไมมี Source Code วิธีที่งายที่สุดคือการกอปป Source Code จากโปรเจคทตัวอยาง แลวทําการแกไข
2. ดับเบิลคลิกเพื่อดูรายละเอียด ในโฟลเดอร
1. หาโฟลเดอรท่ีใชเก็บโปรเจคท
![Page 29: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/29.jpg)
29
3. หาโฟลเดอรของโปรเจคทตัวอยาง
4. กอปป Source Code ไปไว ในโฟลเดอรของโปรเจคทใหม
![Page 30: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/30.jpg)
30
6. เลือก Add Member to folder
5. คลิกขวาบน Source Files
7. เลือกไฟล Source Code ท้ังหมดในโฟลเดอร
9. เลือกเมน ู Project
10. เลือก Setup Project
8. สังเกตจาก Project Window เห็นวา Source Code ไดถูกเลือกมาไวในโปรเจคท
![Page 31: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/31.jpg)
31
11. เลือก MCU
12. ตรวจสอบเบอร MCU
13. เลือก C Compiler
14. เพิ่มออปชั่นให Compilerยอมรบั เครื่องหมาย “ // “
![Page 32: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/32.jpg)
32
15. เลือก Linker
16. คลิกเลือก Disposition/Connection
17. คลิกเลือก Set Section
![Page 33: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/33.jpg)
33
18. เลือก ROM Section
21. คลิกเพื่อกําหนด section
20. เลือกชนดิของ section
19. เลือกชื่อของ Section
ทังสอง Section นี้ตองทําการกําหนดไว
17. กําหนดตําแหนงของ I/O Section 18. คลิกเพื่อกําหนด section
24. คลิก OK เพื่อเสร็จสิ้นการกําหนด
![Page 34: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/34.jpg)
34
25. เลือก Register Bank
26. เลือก Bank 0
27. เลือก Converter
29. เลือกชนิดของ hex file
28. คลิกเพื่อเริ่มตนการทํางานของ Absolute Module Converter
30. คลิกเพื่อเสร็จสิ้นการเซต project
![Page 35: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/35.jpg)
35
31. คลิกเพื่อทดลอง compile โปรเจคทใหม
แสดงวา Hex file ถูกสรางขึ้น
หากไมมีความผิดพลาดเกิดขึ้น แสดงวาการสรางโปรเจคทใหมสําเร็จ
![Page 36: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/36.jpg)
36 บทที ่4 โปรแกรมตัวอยาง
เพื่อใหการเริ่มตนการใชงานบอรดพัฒนา DEV-MB89N202-APP1 เปนไปไดอยางรวดเร็ว ทางผูจัดทําบอรดจึงไดพัฒนาโปรแกรมตัวอยางเพื่อใหผูใชงานสามารถนําไปประยุกตใชงานจริง และ ทดสอบการทํางานของบอรด โดยจะเนนโปรแกรมพื้นฐานที่มีการใชงานบอย ในการเริ่มตนศึกษาควรเริ่มตนตามลําดับจากโปรแกรมที่หนึ่งถึงโปรแกรมสุดทาย
ในการอธิบายโปรแกรมตัวอยางในบทนี้เนนอธิบายแนวความคิดในการเขียนโปรแกรม จะเปนการมองภาพโดยรวมของโปรแกรมเพือ่ใหงายสําหรับผูเริ่มตนใชงานซึ่งอาจจะยังไมคุนเคยกับ MB89F202/MB89N202 มากนัก ในสวนของรายละเอียดในการเขียนโปรแกรมนั้น ถึงแมจะมิไดเปนโปรแกรมที่มีความซบัซอนแตหากจะใหอธิบายโดยละเอียดทุกจุดนั้นคงตองใชพื้นที่ในการเขียนอธิบายมาก เพราะตองอางอิงไปถึงโครงสรางภายในของ MB89F202/MB89N202 และวงจรของบอรดดวยดวย โปรแกรมเมอรสามารถศึกษารายละเอียดไดโดยการทดลองใชบอรด DEV-MB89N202-APP1 ทดลองปรับเปลี่ยนโปรแกรมและสังเกตการเปลี่ยนแปลง สวนของโครงสรางภายในของไมโครคอนโทรลเลอรนั้นสามารถศึกษาไดจาก Datasheet และ Hardware Manual ที่มีอยูใน CD-ROM โปรแกรมตัวอยางที่ใหมากับบอรด DEV-MB89N202-APP1 มีทั้งที่เขียนดวย ภาษา แอสเซมบลี และ ภาษาซี แตจะอธิบายเฉพาะโปรแกรม ภาษาซี เทานั้น เพราะทําความเขาใจงายกวา
![Page 37: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/37.jpg)
374.1 การขับ LED 7 เซกเมนต ชื่อโปรเจคท : Segment จุดประสงค : แสดงขอมูลทาง LED 7 เซกเมนต และ LED 3 ดวง การแสดงผล : แสดงตัวเลข “ 1234” บน LED 7 เซกเมนต และ LED ทั่ง 3 ดวง สลับกนัสวาง ( ไฟวิ่ง )
รูปที่ 4.1 แสดงไฟลสมาชิกของโปรเจคท Segment จากรูปที่ 4.1 จะเหน็วาโปรเจคท Segment มีไฟลสมาชิกทั้งหมด 3 ไฟลดวยกัน คือ main.c , MB89201.asm และ START.asm นั้น โดยไฟล main.c นั้นทําหนาที่เก็บโปรแกรมที่ไดสรางขึน้สําหรับโปรเจคทนี้ สวนไฟล MB89202.asm และ START.asm นั้นเปนไฟลมาตรฐานที่จําเปนตองรวมเขามาในโปรเจคท สําหรบัการระบุ I/O register ภายในตัว MB89F202/MB89N202 และ กําหนดคาเริ่มตนของโปรเจคทตามลําดับ โดยในการเขียนโปรแกรมโดยปกติจะไมมีการเปลี่ยนแปลงขอมูลในไฟลทั้งสองนี้
![Page 38: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/38.jpg)
38
รูปที่ 4.2 แสดงฟงกชั่นหลักของโปรเจคท Segment
ในสวนตนของฟงกชั่นหลักจะเปนการกําหนดความถี่การทํางานของบัสภายใน (Internal bus clock) ดวยการเรียกฟงกชั่น InitSysClock() โดยกําหนดใหเลือกความถี่การทํางานของบัสภายใน เปนไปดังสมการตอไป FBUS
= FOSC / 4 = 8,000,000 Hz / 4 = 2,000,000 Hz ฟงกชั่น InitPort() เปนการกําหนดคาเริ่มตนและโหมดการทํางานของพอรททั้งหมดที่เกี่ยวของกับการทํางาน และฟงกชั่น InitLed() ทําหนาที่กําหนดคาเริ่มตนของตัวแปรที่เกี่ยวของกับการขับ LED 7 เซกเมนต แนวความคดิในการเขียนโปรแกรมขับ LED 7 เซกเมนต คือ กําหนดกลุมตัวแปรที่ใชเก็บรหัสของ LED 7 เซกเมนตทุกหลัก และ LED 3 ดวงจะถูกกําหนดเหมือนกับ LED 7 เซกเมนต 1 หลัก ในสวนของการนํารหัสมาแสดงผลที่ LED 7 เซกเมนตนั้นจะมีฟงกชั่นทําหนาที่นี้โดยเฉพาะ จากรูปที่ 4.2 จะเห็นไดวากลุมตัวแปรที่ใชเก็บรหัสคือ LedBuf ซึ่ง
![Page 39: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/39.jpg)
39เปนตัวแปร Array จํานวน 5 ไบท ซึ่งถูกกําหนดใหเก็บรหัสของตัวเลข 1,2,3,4 ตามลําดับ และฟงกชัน่ที่ทําหนานํารหัสมาแสดงผลคอื LedDrive() ซึ่งถูกวางอยูในวงรอบการทํางานของฟงกชั่นหลัก ดังนั้นหากตองการเปลี่ยนคาที่แสดงผลที่ LED 7 เซกเมนตและกําหนดให LED ดวงไหนสวาง ก็เพียงเปลี่ยนคาใน LedBuf เทานั้น ซึ่งฟงกชั่น Moving_Led() เปนตัวอยางการเปลี่ยนแปลงคาใน LedBuf เพื่อทําไฟวิ่งบน LED 3 ดวง ฟงกชั่น Delay() ทําหนาที่หนวงเวลา เพือ่กําหนดความถี่ในการสแกน LED ซึ่งตองกําหนดใหมีคาที่เหมาะสม หากกําหนดใหหนวงเวลามากไปจะทําให LED กระพริบ หรือกําหนดใหหนวงเวลานอยไปจะทําให LED สวางนอย ในตัวอยางโปรแกรมตอไปจะนําเสนอการใช Timer ที่มีอยูในตัว MB89F202/MB89N202 เปนตัวกําหนดความถี่ในการสแกน ซึ่งจะใหความแมนยํามากกวา
![Page 40: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/40.jpg)
404.2 การใชงาน Timer
ชื่อโปรเจคท : Timer จุดประสงค
1. ใช Timer1 เพื่อต้ังฐานเวลา 4 millisecond ( 250 Hz) 2. ใชฐานเวลาที่ไดเปนตัวกําหนดความถี่ในการสแกน LED 7 เซกเมนต
การแสดงผล : แสดงเวลาบน LED 7 เซกเมนต และ LED ทั่ง 3 ดวง สลับกนัสวาง ( ไฟวิ่ง ) โดยมีการเปลี่ยนแปลงทุก 1 วินาที
รูปที่ 4.3 แสดงไฟลสมาชิกของโปรเจคท Timer ในตัวอยางโปรแกรมการขับ LED 7 เซ็กเมนต นั้นจะเห็นไดวา หากมีโปรแกรมอื่นเพิ่มขึ้นในวงรอบการทํางานแลว จะทําใหความถี่ในการสแกนเปลี่ยนไป ซึ่งผลกระทบดังกลาวทําใหเกิดความไมสะดวกหากโปรแกรมมีขนาดใหญขึ้น แนวทางในการแกไขปญหาดังกลาวคือ การประยุกตใชงาน Timer ที่มีอยูในตัว MB89F202/MB89N202 เปนฐานเวลาเพื่อกําหนดความถี่ในการสแกน นอกจากนี้ยังสามารถนําฐานเวลาดังกลาวไปประยุกตใชงานอื่นไดอีก เชน สรางนาฬิกา และกําหนดระยะในการทํางานของ Buzzer เปนตน
![Page 41: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/41.jpg)
41
รูปที่ 4.4 แสดงฟงกชั่นหลักของโปรเจคท Timer
แนวความคดิในการใชงาน Timer ในตัวอยางโปรแกรมนี้คือ เลือก Timer 1 ซึ่งเปน Timer ขนาด 8 บิท ใหนับเวลาและสรางสัญญาณ Interrupt ตามระยะเวลาที่ไดกําหนดไว ซึ่งในตัวอยางโปรแกรมนี้กําหนดใหสรางสญัญาณทุก ๆ 4 millisecond หรือ 250 Hz และในสวนของฟงกชั่นหลักจะทําหนาที่วนตรวจสอบสัญญาณ Interrupt และทํางานตาง ๆ ไดแก การสแกน LED นับเวลา และควบคุมระยะเวลาในการทํางานของ Buzzer จากรูปที่ 4.4 ในสวนตนของฟงกชั่นหลัก ไดเพิ่มเติมฟงกชั่น InitTimer () และ ShowTime() โดยฟงกชั่น InitTimer() ทําหนาที่กําหนดคาเริ่มตนและระยะเวลาในการสรางสัญญาณ Interrupt ใหกับ Timer 1 ฟงกชั่น ShowTime() ทําหนาที่แปลงคาเวลาใหเปนรหัส LED 7 เซ็กเมนต เพื่อการแสดงผล ในสวนของวงรอบการทํางานจะวน
![Page 42: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/42.jpg)
42ตรวจสอบสัญญาณ Interrupt ของ Timer1 และทนัทีที่มีสัญญาณ Interrupt ก็จะทําการเคลียร และ ทํางานตามฟงกชั่นดังตอไปนี้
- LedDrive() สแกน LED - Moving_Led() ไฟวิ่ง - Timer() นับเวลา เพื่อสรางฐานเวลาจริง ( Real Time Cock ) - ShowTime() นําคาเวลาจริงมาแปลงเปนรหัส LED 7 เซ็กเมนต - SoundControl() ควบคุมระยะเวลาในการทํางานของ Buzzer
หลังจากที่ทํางานทั้งหมดแลวก็จะวนกลับไปตรวจสอบสัญญาน Interrupt ของ Timer1 อีกครั้ง
![Page 43: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/43.jpg)
434.3 การใชงาน Interrupt Timer
ชื่อโปรเจคท : Timer_Interrupt จุดประสงค
1. ใช Timer1 สราง Interrupt ทุก ๆ 4 millisecond ( 250 Hz) 2. เปนตัวอยางการใชงาน Interrupt ของ MB89F202/MB89N202 3. ใชฐานเวลาที่ไดเปนตัวกําหนดความถี่ในการสแกน LED 7 เซกเมนต
การแสดงผล : แสดงเวลาบน LED 7 เซกเมนต และ LED ทั่ง 3 ดวง สลับกนัสวาง ( ไฟวิ่ง ) โดยมีการเปลี่ยนแปลงทุก 1 วินาที
รูปที่ 4.5 แสดงไฟลสมาชิกของโปรเจคท Timer_Interrupt โครงสราง MB89F202/MB89N202 สามารถตอบสนองการเกิด Interrupt ไดหลายแหลง แตในตัวอยางโปรแกรมนี้ จะใช Interrupt ของ Timer 1 เปนกรณีศึกษา เพราะงายตอการแสดงผล จากตัวอยางโปรแกรมการใชงาน Timer 1 ที่ผานมา ใชวิธีการวนตรวจสอบสัญญาณ Interrupt แตในบางกรณีที่มีความตองการการตอบสนองตอสัญญาณ Interrupt อยางทันที ซึ่งไมโครคอนโทรลเลอรจะตองพักการทํางานในฟงกชันหลกัเพื่อ
![Page 44: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/44.jpg)
44ตอบสนองการเกิด Interrupt และหลังจากที่ทํางานในฟงกชั่นของ Interrupt เสร็จแลวจึงกลับมาทํางานในฟงกชั่นหลักตอไป
รูปที่ 4.6 การกําหนดฟงกชั่นสําหรับ Interrupt ของ Timer 1
สําหรับโปรแกรม Softune Workbench ในขั้นตนตองกําหนดชื่อฟงกชั่นสําหรับตอบสนองการเกิด Interrupt ไวที่สวนตนของโปรแกรมกอน ดังรูปที่ 4.6 ประโยคที่กําหนดชื่อฟงกชั่นสําหรับตอบสนองการเกิด Interrupt มีดังนี้ #pragma intvect Timer_Int 3 ซึ่งหมายความวา ฟงกชั่นสําหรับสนองการเกิด Interrupt ชื่อวา Timer_Int ตัวเลข 3 ที่อยูหลังสุด คือ หมายเลข Interrupt ของ Timer 1
รูปที่ 4.7 แสดงฟงกชั่น Interrupt ของโปรเจคท Timer_Interrupt หลังจากที่ไดกําหนดชื่อฟงกชั่นที่ตอบสนองการเกิด Interrupt แลว ขั้นตอนตอไปจะตองสรางฟงกชั่นชื่อดังกลาวไวในโปรแกรม ดังรปูที่ 4.7 โดยจะตองมีคําวา __interrupt นําหนาชื่อฟงกช่ัน
![Page 45: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/45.jpg)
45
รูปที่ 4.8 แสดงฟงกชั่นหลักของโปรเจคท Timer_Interrupt จากรูปที่ 4.7 และ 4.8 จะเห็นวา มีการยายฟงกชั่นยอย LedDrive() , Moving_Led() และ Timer() จากฟงกชั่นหลัก ไปไวในฟงกชั่นสําหรับการตอบสนอง Interrupt ของ Timer 1 เพราะตองการความเที่ยงตรงของเวลา
![Page 46: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/46.jpg)
464.4 การเขียนโปรแกรมรับสวิตช
เพื่องายตอการทําความเขาใจ จึงไดจัดทําตัวอยางการเขียนโปรแกรมรับสวิตชไว 3 โปรแกรม โดยเริ่มตนจากโปรแกรมงาย ๆ กอน แลวจึงเพิ่มความสามารถของโปรแกรมเขาไป เพื่อประโยชนสําหรับการนําไปใชงานจริง 4.4.1 โปรเจคท KeyBasic1 จุดประสงค
1. แสดงตัวอยางโปรแกรมรับสวิตชอยางงาย 2. เปนตัวอยางการประยุกตใชงาน Interrupt ของ Timer1
การทดสอบและการแสดงผล เมื่อกดสวิตช LED 7 เซ็กเมนตจะแสดงรหัสประจําตัวของสวิตช (KeyCode)
รูปที่ 4.9 แสดงไฟลสมาชิกของโปรเจคท KeyBasic1
![Page 47: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/47.jpg)
47
รูปที่ 4.10 แสดงฟงกชั่นหลักของโปรเจคท KeyBasic1
รูปที่ 4.11 แสดงฟงกชั่น Interrupt ของโปรเจคท KeyBasic1 จากรูปที่ 4.11 จะเห็นไดวามีการเพิ่มฟงกชั่นยอย GetKey() ไวในฟงกชั่น Interrupt เพราะตองการความเที่ยงตรงของเวลาในการสแกนรับสวิตช โดยฟงกชั่นยอย GetKey() จะทําหนาที่รับคาจากพอรทที่สวิตชตออยู และทําการหนวงเวลาโดยการใชฐานเวลาที่ได
![Page 48: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/48.jpg)
48จาก Timer 1 (250 Hz) เพื่อปองกันการรับสวิตชซ้ําเนื่องจากการสั่นของหนาสัมผัสของสวิตชในขณะกด เมื่อตรวจสอบไดวาสวิตชใดถูกกดก็จะทําการเขารหัส สวิตชแตละตัวมีรหัสประจําตัวดังตอไปนี้ สวิตชที่ 1 (Key1) -> 0x30 (48) สวิตชที่ 2 (Key2) -> 0x31 (49) สวิตชที่ 3 (Key3) -> 0x32 (50) สวิตชที่ 4 (Key4) -> 0x33 (51)
รูปที่ 4.12 แสดงฟงกชั่น GetKey() ของโปรเจคท KeyBasic1
จากรูปที่ 4.12 ฟงกชั่นยอย ShowByte(KeyCode) ซึ่งอยูในบรรทัดที่ 340 ทําหนาที่แปลงคารหสัประจําตัวของสวิตช (KeyCode) ใหเปนรหัสของ LED 7 เซ็กเมนต และเก็บคาที่แปลงไดไวในตัวแปร และ ฟงกชั่นยอย LedDrive() ที่อยูในฟงกชั่น Interrupt จะนาํขอมูลที่แปลงไดไปแสดงผลที่ LED 7 Segment
![Page 49: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/49.jpg)
494.4.2 โปรเจคท KeyBasic2
จุดประสงค แสดงตัวอยางการนํารหัสของสวติชที่ได (KeyCode) ไปใชงาน
การทดสอบและการแสดงผล 1. หลังจากรีเซต LED 7 เซ็กเมนตจะแสดงคาเริ่มตนของตัวแปร Counter 2. เมื่อกดสวิตชที่ 3 (Key3) ตัวแปร Counter จะมีคาเพิ่มขึน้ 1 คา 3. เมื่อกดสวิตชที่ 4 (Key4) ตัวแปร Counter จะมีคาลดลง 1 คา
รูปที่ 4.13 แสดงไฟลสมาชิกของโปรเจคท KeyBasic2
![Page 50: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/50.jpg)
50
รูปที่ 4.14 แสดงฟงกชั่นหลักของโปรเจคท KeyBasic2
จากรูปที่ 4.14 ฟงกชั่นยอย KeyOperation() ไดถูกเพิ่มเขามาในวงรอบการทํางานของฟงกชั่นหลัก เพือ่นําคารหัสประจําตัวของสวิตช (KeyCode) ไปใชงาน
![Page 51: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/51.jpg)
51
รูปที่ 4.15 แสดงฟงกชั่น KeyOperation() ของโปรเจคท KeyBasic2
จากรูปที่ 4.15 ฟงกชั่นยอย KeyOperation() จะทําการตรวจสอบคาของ KeyCode หากมีคาตรงกับรหัสประจําตัวของสวิตชที่ 3 ก็จะทําการเพิ่มคาตัวแปร Counter ขึน้ 1 คา และทําการแปลงคา Counter ใหเปนรหัส LED 7 เซ็กเมนต และในทํานองเดียวกัน หากมีคาตรงกับรหัสประจําตัวของสวิตชที่ 4 ก็จะลดคาตัวแปรลง 1 คา และทาํการแปลงคา Counter ใหเปนรหัส LED 7 เซ็กเมนต
![Page 52: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/52.jpg)
524.4.3 โปรเจคท KeyAdvance
จุดประสงค แสดงตัวอยางการเขียนโปรแกรมรับคาจากสวิตชแบบกดคางได
การทดสอบและการแสดงผล 1. หลังจากรีเซต LED 7 เซ็กเมนตจะแสดงคาเริ่มตนของตัวแปร Counter 2. เมื่อกดสวิตชที่ 1 (Key1) ตัวแปร Counter จะมีคาเพิ่มขึน้ 1 คา 3. เมื่อกดสวิตชที่ 2 (Key2) ตัวแปร Counter จะมีคาลดลง 1 คา 4. เมื่อกดสวิตชที่ 3 (Key3) ตัวแปร Counter จะมีคาเพิ่มขึ้น 1 คา และเมื่อ
กดคางไว ตัวแปร Counter จะเพิ่มคาขึ้นเรื่อย ๆ จนถึงคาสูงสุด 5. เมื่อกดสวิตชที่ 4 (Key4) ตัวแปร Counter จะมีคาลดลง 1 คา และเมื่อ
กดคางไว ตัวแปร Counter จะมีคาลดลงเรื่อย ๆ จนถึงศูนย
รูปที่ 4.16 แสดงไฟลสมาชิกของโปรเจคท KeyAdvance
![Page 53: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/53.jpg)
53
รูปที่ 4.17 แสดงฟงกชั่น GetKey() ของโปรเจคท KeyAdvance
![Page 54: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/54.jpg)
544.5 การใชงานสวนแปลงสัญญาณอนาลอกเปนดิจิตอล (ADC)
ชื่อโปรเจคท : ADC จุดประสงค
แสดงตัวอยางการเขียนโปรแกรมควบคุมการทํางานของสวนการแปลงสัญญาณอนาลอกเปนดิจิตอล (ADC)
การทดสอบและการแสดงผล นําตัวตานทานปรับคาไดคาประมาณ 10 กิโลโอหม ตอที่ CN4 (Thermistor Input2 ) แลวสังเกตคาที่แสดงผลที่ LED 7 เซ็กเมนต
รูปที่ 4.18 แสดงไฟลสมาชิกของโปรเจคท ADC เพื่อไมใหไฟล main.c มีขนาดใหญเกินไป จึงไดเขียนโปรแกรมเพื่อควบคุมการทํางานของสวนแปลงสญัญาณอนาลอกเปนดิจิตอลและเก็บไวในไฟล ADC.c นอกจากนี้ยังมีความสะดวกหากตองการนําไปใชกับโปรเจคทอ่ืน ๆ ดวย
![Page 55: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/55.jpg)
55
รูปที่ 4.19 แสดงฟงกชั่นหลักของโปรเจคท ADC
ฟงกชั่นยอย GetAdc() ทําหนาที่สแกนรับขอมูลจากสวนแปลงสัญญาณอนาลอกเปนดิจิตอลจํานวน 2 ชอง คือ ชองที่ 4 และ 5 โดยจะใชฐานเวลา 250 Hz จาก Timer 1 เปนตัวกําหนดความถี่ในการสแกนรับขอมูล (Sampling Rate) นอกจากนี้ยังทําการเฉลี่ยคาจากขอมูลดิบจํานวน 8 จุดดวย แลวนําขอมูลที่ไดเก็บไวในตัวแปร adc_channel4 และ adc_channel5 สวนฟงกชั่นในบรรทัดที่ 139 ShowInt(adc_channel5) จะแปลงคาตัวแปร adc_channel5 ใหเปนรหัส LED 7 เซ็กเมนต เพื่อนําไปแสดงผลตอไป
![Page 56: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/56.jpg)
564.6 การอินเตอรเฟซกับหนวยความจํา EEPROM (24C01)
ชื่อโปรเจคท : 24C01 จุดประสงค
แสดงตัวอยางการเขียนโปรแกรมติดตอกับหนวยความจําแบบ EEPROM เบอร 24C01 ซึ่งใชการอินเตอรเฟชแบบ I2C
การทดสอบและการแสดงผล ทดลองเปลี่ยนคาที่เขียนลงใน 24C01 แลวสงัเกตคาที่อานกลับมา ซึ่งแสดงผลบน LED 7 เซ็กเมนต
รูปที่ 4.20 แสดงไฟลสมาชิกของโปรเจคท 24C01 เหตุผลที่เลือก EEPROM เบอร 24C01 มาใชกับบอรด DEV-MB89N202-APP1 เพราะวาใชการอินเตอรเฟชแบบ I2C ซึ่งมีการใชงานอยางกวางขวางในอุปกรณตางๆโดยเฉพาะในวงการเครื่องเสียงและโทรทัศน ดังนั้นจึงไดเขียนโปรแกรมการอินเตอรเฟชแบบ I2C แยกออกเปนไฟลตางหาก แลวจึงรวมเขามาในโปรเจคท
![Page 57: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/57.jpg)
57
รูปที่ 4.21 แสดงฟงกชั่นหลักของโปรเจคท 24C01 จากรูปที่ 4.21 โปรแกรมในบรรทัดที่ 128 ถึงบรรทัดที่ 135 เปนการทดสอบการทํางานของโปรแกรมอินเตอรเฟชแบบ I2C วิธีการทดสอบคือ ทดลองเขียนคาลงหนวยความจํา EEPROM แลวทดลองอานคากลับ หากคาที่อานกลับมาไดมีคาตรงกับคาที่เขียนลงไปแสดงวาการทํางานของโปรแกรมถูกตอง วิธีการใชงานเรียกใชงานโปรแกรมอินเตอรเฟชแบบ I2C มีขั้นตอนดังตอไปนี้ การเขียนคา
1. ใสคาลงในกลุมตัวแปร (Array) i2c_buf 2. เรียกฟงกชั่นยอย i2c_write โดยตองสงคาใหฟงกชั่นดังนี้
i2c_write(a, b, c, d)
![Page 58: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู](https://reader033.vdocuments.pub/reader033/viewer/2022041607/5e34fe0cc27b8a6bd571de7e/html5/thumbnails/58.jpg)
58 a -> แอดเดรสของอุปกรณที่ตองการเขียนคา b -> แอดเดรสเริ่มตนที่ตองการเขียน c -> แอดเดรสเริ่มตนของกลุมตัวแปร i2c_buf d -> จํานวนขอมูลที่ตองการเขียน
จากรูปที่ 4.21 ในบรรทัดที่ 129 เปนตัวอยางการเรียกใชงานฟงกชั่นการเขียนคาลง EEPROM ซึ่งมีความหมายวา EEPROM มีคาแอดเดรสเทากับ 0xa0 เริ่มตนเขียนขอมูลที่แอดเดรส 0 ขอมูลที่ตองการเขียนเก็บอยูในกลุมตัวแปร i2c_buf และตองการเขียนขอมูลจํานวน 1 ไบท การอานคา
1. เรียกฟงกชั่นยอย i2c_read โดยตองสงคาใหฟงกชัน่ดังนี้ i2c_read(a,b,c,d) a -> แอดเดรสของอุปกรณที่ตองการอานคา b -> แอดเดรสเริ่มตนที่ตองการอาน c -> แอดเดรสเริ่มตนของกลุมตัวแปร i2c_buf d -> จํานวนขอมูลที่ตองการอาน
2. อานคาจากกลุมตัวแปร i2c_buf จากรูปที่ 4.21 ในบรรทัดที่ 134 เปนตัวอยางการใชงานฟงกชั่นการอานคาจาก
EEPROM โดยที่แอดเดรสของ EEPROM มีคาเทากับ 0xa0 เริ่มอานขอมูลที่แอดเดรส 0 ขอมูลที่อานไดจะเก็บไวในกลุมตัวแปร i2c_buf และตองการอานขอมูลเปนจํานวน 1 ไบท