58
บริษัท อีเลคทรอนิคส ซอรซ จํากัด คูมือการใชงาน F 2 MC-8L FAMILY 8-BIT MICROCONTROLLER MB89201 SERIES เริ่มตนการใชงาน DEV-MB89N202-APP1 Rev. 2

บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

บริษัท อีเลคทรอนิคส ซอรซ จํากดั คูมือการใชงาน

F2MC-8L FAMILY 8-BIT MICROCONTROLLER

MB89201 SERIES

เร่ิมตนการใชงาน DEV-MB89N202-APP1

Rev. 2

Page 2: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

7

1.4 ลักษณะทางดานฮารดแวร

L = 91mm

W = 75mm

H = 40mm

** ขอสังเกต : รูปที่แสดงขางบนไมใชขนาดจริง เงื่อนไขแนะนําในการใชงาน 1. แรงดันขาเขา ดานอินพุทของ Power Supply +12 VDC , 9VAC 2. แรงดันขาเขา ดานขั้วตอเทอรมิสเตอร 5V 3. พิกัดหนาสัมผัสรีเลย 10A/120V

Page 8: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

92.2 การติดตั้งซอฟทแวรสาํหรับดาวนโหลดโปรแกรมของ Fujitsu รัน “Setup.exe” ในโฟลเดอร Fujitsu MCU Programmer V 5.0.02

คลิก OK เลือกโฟลเดอรสําหรับเก็บโปรแกรม แลวคลิก Next.

กําลังทําการติดตั้ง

Page 10: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

102.1 ติดตอกับบอรด DEV-MB89N202-APP1

รันโปรแกรม Fujitsu MCU Programmer Version 5.0.02 จากสตารทเมนู “Start>Programs>MCU Programmer”

โปรแกรมเมอรจะแสดง COM port ที่มีอยูบนคอมพิวเตอร

พอรตอนุกรมท่ีมีบนเครือ่ง

Page 11: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

11 เลือก F2MC8L Asynchronous และเลือกเบอร MCU แลวคลิกปุม Connect

พอรตอนุกรมที่ตออยูกับบอรด

ถาบอรด DEV-MB89N202-APP1 ตออยูกับคอมพิวเตอร โปรแกรมเมอรจะแสดงดังตัวอยางขางบน ซึ่งแสดงวาพอรตอนุกรมหมายเลข 1 (COM1) ตออยูกับบอรด

และอีกสักครู โปรแกรมเมอรจะแสดงไดอะล็อกบ็อกดังรูปขางลาง. คลิกเลือก “Advanced Mode”

Page 12: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

12 เลือกชนิดของ machine code ที่ตองการดาวนโหลด ดังเชน “Motorola S” คลิก “Load File/Project” เพื่อโหลด machine code สูบัฟเฟอร

Page 13: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

13โปรแกรมเมอรจะแสดงไฟลไดอะล็อกบ็อกดังรูปขางลาง โดยปกติ machine code จะถูกเก็บอยูในโฟลเดอร ABS

สําหรับตัวอยางขางลาง เลือก “ UART.mhx ”

Page 14: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

14 คลิก “OK” เพื่อเริ่มตนการโปรแกรม

Page 15: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

15บทที่ 3 Fujitsu Softune Workbench IDE 3.1 การติดตั้งโปรแกรม Softune Workbench

รันโปรแกรม “Setup.exe” ของ Softune Workbench V30L29 คลิก OK เลือกโฟลเดอรท่ีใชเก็บโปรแกรม

คลิก Next

Page 16: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

16 เลือกสวนประกอบของโปรแกรมที่ตองการ หากคอมพวิเตอรมีทรัพยากรมากพอ ขอแนะนําใหเลือกทั้งหมด

คลิกเลือกสวนประกอบที่ตองการ

คลิก Next

กําลังติดตั้งโปรแกรม

Page 17: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

17

คลิก Finish

Page 18: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

19การเปดโปรเจคทตัวอยาง 1. เลือกเมนู File

2. คลิกเลือก Open Workspace 3. คลิกเลือกไฟลนามสกุล wsp 4. คลิก Open

Page 20: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

20 หลังจากเลอืกไฟลนามสกุล wsp แลว Softune Workbench จะแสดงรายละเอียด ของโปรเจคท

Build All

Project Window

Editor การปรับแตงวินโดวของ Softune Workbench

1. คลิกขวาบน editor window

2. เลือก Customize

Page 21: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

21

4. ปุมเลือกแบบตัวอักษร

3. คลิกเพื่อเลือกหรือยกเลิก การเปลี่ยนแบบตัวอักษรของ editor window ดวยการใชเมนู

1. เลือกเมนู View

2. เลือก Font

Page 22: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

22 การเปลี่ยน configuration ของโปรเจคท

2. เลือก setup Project

1. เลือกเมนู Project ตรวจสอบดูวา register bank ถูกเลือกไวหรอืไม ตองเลือกอยางนอย 1 bank เพื่อปองกันการซอนทับกันของหนวยความจํา ดังแสดงในรูปขางลาง

3. เลือก Linker

4. เลือก Bank0

Page 23: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

23การเริ่มการทํางานของ Absolute Module Converter . 5. เลือก Converter

6. คลิกเลือก

8. คลิก OK

7. เลือกรูปแบบไฟลของ ไฟลภาษาเครื่อง (hex file)

การจําลองการทํางานดวยโปรแกรม

1. เลือกเมนู Debug

2. เลือก Start Debug

Page 24: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

24

3. คลิกเพื่อทําการเซต Debug .

4. เลือก Simulator Debugger

5. คลิก Next

Page 25: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

25 6. เลือกเมนู Debug

7. เลือก Load target file

Page 26: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

263.3 การสรางโปรเจคทใหม

1. เลือกเมน ูFile

2. เลือก New

4. คลิก OK 3. คลิกเลือก

Page 27: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

27

** ขอสังเกต : หากไมมีเบอร MB89N202 หรือ MB89F202 ไมมีอยูใน list box ใหเลือกเบอร MB89P935A แทน เพราะมีโครงสรางเหมอืนกัน

5. คลิกเลือก

4. เลือก Project

6. เลือก MCU Family

8. ต้ังชื่อ Project และ Workspace 7. เลือกเบอร MCU **

9. เลือกโฟลเดอรท่ีใชเก็บ Project และ Workspace 10. คลิก OK

Page 28: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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

2. ดับเบิลคลิกเพื่อดูรายละเอียด ในโฟลเดอร

1. หาโฟลเดอรท่ีใชเก็บโปรเจคท

Page 29: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

29

3. หาโฟลเดอรของโปรเจคทตัวอยาง

4. กอปป Source Code ไปไว ในโฟลเดอรของโปรเจคทใหม

Page 30: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

30

6. เลือก Add Member to folder

5. คลิกขวาบน Source Files

7. เลือกไฟล Source Code ท้ังหมดในโฟลเดอร

9. เลือกเมน ู Project

10. เลือก Setup Project

8. สังเกตจาก Project Window เห็นวา Source Code ไดถูกเลือกมาไวในโปรเจคท

Page 31: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

31

11. เลือก MCU

12. ตรวจสอบเบอร MCU

13. เลือก C Compiler

14. เพิ่มออปชั่นให Compilerยอมรบั เครื่องหมาย “ // “

Page 32: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

32

15. เลือก Linker

16. คลิกเลือก Disposition/Connection

17. คลิกเลือก Set Section

Page 33: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

33

18. เลือก ROM Section

21. คลิกเพื่อกําหนด section

20. เลือกชนดิของ section

19. เลือกชื่อของ Section

ทังสอง Section นี้ตองทําการกําหนดไว

17. กําหนดตําแหนงของ I/O Section 18. คลิกเพื่อกําหนด section

24. คลิก OK เพื่อเสร็จสิ้นการกําหนด

Page 34: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

34

25. เลือก Register Bank

26. เลือก Bank 0

27. เลือก Converter

29. เลือกชนิดของ hex file

28. คลิกเพื่อเริ่มตนการทํางานของ Absolute Module Converter

30. คลิกเพื่อเสร็จสิ้นการเซต project

Page 35: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

35

31. คลิกเพื่อทดลอง compile โปรเจคทใหม

แสดงวา Hex file ถูกสรางขึ้น

หากไมมีความผิดพลาดเกิดขึ้น แสดงวาการสรางโปรเจคทใหมสําเร็จ

Page 36: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

36 บทที ่4 โปรแกรมตัวอยาง

เพื่อใหการเริ่มตนการใชงานบอรดพัฒนา DEV-MB89N202-APP1 เปนไปไดอยางรวดเร็ว ทางผูจัดทําบอรดจึงไดพัฒนาโปรแกรมตัวอยางเพื่อใหผูใชงานสามารถนําไปประยุกตใชงานจริง และ ทดสอบการทํางานของบอรด โดยจะเนนโปรแกรมพื้นฐานที่มีการใชงานบอย ในการเริ่มตนศึกษาควรเริ่มตนตามลําดับจากโปรแกรมที่หนึ่งถึงโปรแกรมสุดทาย

ในการอธิบายโปรแกรมตัวอยางในบทนี้เนนอธิบายแนวความคิดในการเขียนโปรแกรม จะเปนการมองภาพโดยรวมของโปรแกรมเพือ่ใหงายสําหรับผูเริ่มตนใชงานซึ่งอาจจะยังไมคุนเคยกับ MB89F202/MB89N202 มากนัก ในสวนของรายละเอียดในการเขียนโปรแกรมนั้น ถึงแมจะมิไดเปนโปรแกรมที่มีความซบัซอนแตหากจะใหอธิบายโดยละเอียดทุกจุดนั้นคงตองใชพื้นที่ในการเขียนอธิบายมาก เพราะตองอางอิงไปถึงโครงสรางภายในของ MB89F202/MB89N202 และวงจรของบอรดดวยดวย โปรแกรมเมอรสามารถศึกษารายละเอียดไดโดยการทดลองใชบอรด DEV-MB89N202-APP1 ทดลองปรับเปลี่ยนโปรแกรมและสังเกตการเปลี่ยนแปลง สวนของโครงสรางภายในของไมโครคอนโทรลเลอรนั้นสามารถศึกษาไดจาก Datasheet และ Hardware Manual ที่มีอยูใน CD-ROM โปรแกรมตัวอยางที่ใหมากับบอรด DEV-MB89N202-APP1 มีทั้งที่เขียนดวย ภาษา แอสเซมบลี และ ภาษาซี แตจะอธิบายเฉพาะโปรแกรม ภาษาซี เทานั้น เพราะทําความเขาใจงายกวา

Page 37: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

42ตรวจสอบสัญญาณ Interrupt ของ Timer1 และทนัทีที่มีสัญญาณ Interrupt ก็จะทําการเคลียร และ ทํางานตามฟงกชั่นดังตอไปนี้

- LedDrive() สแกน LED - Moving_Led() ไฟวิ่ง - Timer() นับเวลา เพื่อสรางฐานเวลาจริง ( Real Time Cock ) - ShowTime() นําคาเวลาจริงมาแปลงเปนรหัส LED 7 เซ็กเมนต - SoundControl() ควบคุมระยะเวลาในการทํางานของ Buzzer

หลังจากที่ทํางานทั้งหมดแลวก็จะวนกลับไปตรวจสอบสัญญาน Interrupt ของ Timer1 อีกครั้ง

Page 43: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

45

รูปที่ 4.8 แสดงฟงกชั่นหลักของโปรเจคท Timer_Interrupt จากรูปที่ 4.7 และ 4.8 จะเห็นวา มีการยายฟงกชั่นยอย LedDrive() , Moving_Led() และ Timer() จากฟงกชั่นหลัก ไปไวในฟงกชั่นสําหรับการตอบสนอง Interrupt ของ Timer 1 เพราะตองการความเที่ยงตรงของเวลา

Page 46: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

464.4 การเขียนโปรแกรมรับสวิตช

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

1. แสดงตัวอยางโปรแกรมรับสวิตชอยางงาย 2. เปนตัวอยางการประยุกตใชงาน Interrupt ของ Timer1

การทดสอบและการแสดงผล เมื่อกดสวิตช LED 7 เซ็กเมนตจะแสดงรหัสประจําตัวของสวิตช (KeyCode)

รูปที่ 4.9 แสดงไฟลสมาชิกของโปรเจคท KeyBasic1

Page 47: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

47

รูปที่ 4.10 แสดงฟงกชั่นหลักของโปรเจคท KeyBasic1

รูปที่ 4.11 แสดงฟงกชั่น Interrupt ของโปรเจคท KeyBasic1 จากรูปที่ 4.11 จะเห็นไดวามีการเพิ่มฟงกชั่นยอย GetKey() ไวในฟงกชั่น Interrupt เพราะตองการความเที่ยงตรงของเวลาในการสแกนรับสวิตช โดยฟงกชั่นยอย GetKey() จะทําหนาที่รับคาจากพอรทที่สวิตชตออยู และทําการหนวงเวลาโดยการใชฐานเวลาที่ได

Page 48: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

494.4.2 โปรเจคท KeyBasic2

จุดประสงค แสดงตัวอยางการนํารหัสของสวติชที่ได (KeyCode) ไปใชงาน

การทดสอบและการแสดงผล 1. หลังจากรีเซต LED 7 เซ็กเมนตจะแสดงคาเริ่มตนของตัวแปร Counter 2. เมื่อกดสวิตชที่ 3 (Key3) ตัวแปร Counter จะมีคาเพิ่มขึน้ 1 คา 3. เมื่อกดสวิตชที่ 4 (Key4) ตัวแปร Counter จะมีคาลดลง 1 คา

รูปที่ 4.13 แสดงไฟลสมาชิกของโปรเจคท KeyBasic2

Page 50: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

50

รูปที่ 4.14 แสดงฟงกชั่นหลักของโปรเจคท KeyBasic2

จากรูปที่ 4.14 ฟงกชั่นยอย KeyOperation() ไดถูกเพิ่มเขามาในวงรอบการทํางานของฟงกชั่นหลัก เพือ่นําคารหัสประจําตัวของสวิตช (KeyCode) ไปใชงาน

Page 51: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

51

รูปที่ 4.15 แสดงฟงกชั่น KeyOperation() ของโปรเจคท KeyBasic2

จากรูปที่ 4.15 ฟงกชั่นยอย KeyOperation() จะทําการตรวจสอบคาของ KeyCode หากมีคาตรงกับรหัสประจําตัวของสวิตชที่ 3 ก็จะทําการเพิ่มคาตัวแปร Counter ขึน้ 1 คา และทําการแปลงคา Counter ใหเปนรหัส LED 7 เซ็กเมนต และในทํานองเดียวกัน หากมีคาตรงกับรหัสประจําตัวของสวิตชที่ 4 ก็จะลดคาตัวแปรลง 1 คา และทาํการแปลงคา Counter ใหเปนรหัส LED 7 เซ็กเมนต

Page 52: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

53

รูปที่ 4.17 แสดงฟงกชั่น GetKey() ของโปรเจคท KeyAdvance

Page 54: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

544.5 การใชงานสวนแปลงสัญญาณอนาลอกเปนดิจิตอล (ADC)

ชื่อโปรเจคท : ADC จุดประสงค

แสดงตัวอยางการเขียนโปรแกรมควบคุมการทํางานของสวนการแปลงสัญญาณอนาลอกเปนดิจิตอล (ADC)

การทดสอบและการแสดงผล นําตัวตานทานปรับคาไดคาประมาณ 10 กิโลโอหม ตอที่ CN4 (Thermistor Input2 ) แลวสังเกตคาที่แสดงผลที่ LED 7 เซ็กเมนต

รูปที่ 4.18 แสดงไฟลสมาชิกของโปรเจคท ADC เพื่อไมใหไฟล main.c มีขนาดใหญเกินไป จึงไดเขียนโปรแกรมเพื่อควบคุมการทํางานของสวนแปลงสญัญาณอนาลอกเปนดิจิตอลและเก็บไวในไฟล ADC.c นอกจากนี้ยังมีความสะดวกหากตองการนําไปใชกับโปรเจคทอ่ืน ๆ ดวย

Page 55: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

564.6 การอินเตอรเฟซกับหนวยความจํา EEPROM (24C01)

ชื่อโปรเจคท : 24C01 จุดประสงค

แสดงตัวอยางการเขียนโปรแกรมติดตอกับหนวยความจําแบบ EEPROM เบอร 24C01 ซึ่งใชการอินเตอรเฟชแบบ I2C

การทดสอบและการแสดงผล ทดลองเปลี่ยนคาที่เขียนลงใน 24C01 แลวสงัเกตคาที่อานกลับมา ซึ่งแสดงผลบน LED 7 เซ็กเมนต

รูปที่ 4.20 แสดงไฟลสมาชิกของโปรเจคท 24C01 เหตุผลที่เลือก EEPROM เบอร 24C01 มาใชกับบอรด DEV-MB89N202-APP1 เพราะวาใชการอินเตอรเฟชแบบ I2C ซึ่งมีการใชงานอยางกวางขวางในอุปกรณตางๆโดยเฉพาะในวงการเครื่องเสียงและโทรทัศน ดังนั้นจึงไดเขียนโปรแกรมการอินเตอรเฟชแบบ I2C แยกออกเปนไฟลตางหาก แลวจึงรวมเขามาในโปรเจคท

Page 57: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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: บริษัท อีเลคทรอนิ คสซอร ซ จํัดาก คู มือการใช งาน · พอร ตอนุกรมที่ต ออยู

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 ไบท