Proto Tech - Series
Embedded System ศักดิ์ชัย ผางส�าเนียง
เรี ย น-เล น -ใช
ไมโครคอนโทรลเลอร MCS-51 ดวยโปรแกรมภาษาเบสิก µÍ¹·Õè 1 : á¹Ð¹íÒ BASCOM-8051
บทความเชิงปฏิบัติการชุดใหมลาสุด ที่จะชวนนักเลนไมโครฯ มือใหม และผูสนใจที่ยังไมใชโคตรเซียน มาฝกหัดการเขียนโปรแกรม ภาษาเบสิกเพื่อควบคุมและใชงาน ไมโครคอนโทรลเลอรรุน "ลายคราม" อยาง MCS-51 ¨าก¼ู้เขียน
สิ่งที่ต้องเตรียม
ครั้งหนึ่งผมนั่งอ่านวารสารอิเล็กทรอนิกส์เช่นเดียวกับที่ท่านผู้อ่าน ก� า ลั ง อ่ า นอยู ่ ใ นขณะนี้ บนหน้ า วารสารนั้ น เป็ น โครงงานอิ เ ล็ ก ทรอนิ ก ส์ ที่ ค วบคุ ม การท� า งานด้ ว ยไอซี ตั ว เดี ย ว ซึ่ ง ไอซี ตั ว นั้ น เรี ย กว่ า ไมโครคอน โทรลเลอร์ ผมนั่งพิจารณาโครงงานและอดไม่ได้ที่จะนึกถึงเจ้าของโครงงาน นั้น ด้วยความรู้สึกยกย่องในความสามารถ และท่านเหล่านั้นได้ถูกขนาน นามว่า “นักพัฒนาระบบสมองกลฝังตัวอัจฉริยะ”
ในการติดตามบทความเชิงปฏิบัติการชุดนี้มีสิ่งที่คุณผู้อ่านต้องเตรียม การไปพร้อมๆ กันดังนี้
ถ้าหากจะเปรียบเทียบแล้วค�าว่า “นักพัฒนา” ส�าหรับผมแล้วเทียบได้ กับค�าว่า ”จอมยุทธ” เลยทีเดียว เด็กน้อยอย่างผมก็ได้แต่เฝามองและชื่นชม ผลงานเหล่านั้นเรื่อยมา โดยไม่รู้ว่าจะเริ่มต้นอย่างไรดี ทั้งๆ ที่ลึกๆ ในใจแล้ว ก็อยากถูกเรียกว่า “นักพัฒนาระบบสมองกลฝังตัวอัจฉริยะ” และอยากเป็น จอมยุทธ อยากออกแบบและสร้างโครงงานตามที่ตัวเองต้องการบ้าง คงเป็น เรื่องที่น่าภาคภูมิใจมากในชีวิตผมที่สามารถท�าตามความฝันของตัวเองได้ จนแล้วจนรอด กาลเวลาล่วงเลยผ่านไปหลายป จนความรู้สึกนั้นแทบจาง หายไปหมดสิ้นพร้อมกับอายุและหน้าที่รับผิดชอบที่มากขึ้น ทว่าวันที่ผมรอ คอยก็มาถึงโดยไม่ได้คาดคิดมาก่อน ประกายความฝันในวัยเยาว์กลับมารุ่งโรจน์ในดวงตาอีกครั้ง เมื่อได้ พบกับ BASCOM-8051 คอมไพล์เลอร์ภาษาเบสิก ผมเองรู้สึกเหมือนได้พบ กับจอมยุทธยาจกซู ซึ่งเป็นผู้น�าหนทางไปสู่การเป็นจอมยุทธ ก้าวแรกของ ผมเริ่มจากวันนั้นเป็นต้นมา ผมขอพาท่านผู้อ่านย้อนเวลาไปกับความทรง จ�าในวันวานของผม เพื่อเริ่มเต้นเดินทางจากวันนั้นมาสู่ปัจจุบันด้วยระยะ เวลาแบบก้าวกระโดด เพื่อเก็บเกี่ยวเคล็ดวิชาอันเป็นหนทางสู่ความเป็น จอมยุทธพร้อมๆ กันครับ
1. จัดเตรียมฮารดแวร ในบทความชุดนี้อ้างถึงบอร์ด TPE-51 ซึ่งเป็น บอร์ดไมโครคอนโทรลเลอร์ P89V51RD2 อันเป็นไมโครคอนโทรลเลอร์ใน ตระกูล MCS-51 ที่โปรแกรมได้ผ่านพอร์ต USB นับเป็นบอร์ดทดลองบอร์ด แรกที่มีการผลิตและน�าเสนอผ่านสื่อสาธารณะของเมืองไทย ท่านที่สนใจ สามารถสร้างบอร์ด TPE-51 เองได้โดยมีการตีพิมพ์บทความของโครงงาน บอร์ด TPE-51 ในวารสาร TPE ฉบับที่ 16 หรือถ้าต้องการจัดซื้อในแบบชุด คิตหรือแบบประกอบส�าเร็จดูรายละเอียดได้ในหน้าโฆษณาของ TPE และ หน้า TPE shop ท้ายเล่ม หรือท่านที่มีบอร์ดไมโครคอนโทรลลเอร์ 2. เตรียมคอมพิวเตอร จะต้องติดตั้งระบบปฏิบัติการวินโดวส์ XP SP2 เป็นอย่างน้อย และต้องมีพอร์ต USB ว่างอย่างน้อย 1 พอร์ตเพื่อใช้ใน การเชื่อมต่อกับฮาร์ดแวร์ที่ใช้ในการทดลอง 3. เตรียมซอฟตแวร จะต้องดาวน์โหลดและติดตั้งโปรแกรมที่ใช้ใน การเรียนรู้และทดลอง 2 ตัวคือ ซอฟต์แวร์ส�าหรับพัฒนาโปรแกรมของไมโคร คอนโทรลเลอร์ MCS-51 ด้วยภาษาเบสิก นั่นคือ BASCOM-51 รุ่นทดลองใช้ งาน และ Flash Magic ซึ่งใช้ในการดาวน์โหลดโปรแกรมลงใน P89V51RD2 4. อุปกรณและสายต่อสําหรับการทดลองทางฮารดแวร ซึ่งจะมี การเปลี่ยนแปลงตามเนื้อหาและลักษณะของการใช้งาน
The Prototype Electronics
65
BASCOM-8051 คืออะไร BASCOM-8051 เป็ น ซอฟต์ แ วร์ พั ฒ นาโปรแกรมส� ำ หรั บ ไมโคร คอนโทรลเลอร์ตระกูล MCS-51 ด้วยภาษาเบสิก พัฒนาขึ้นโดย MCS Electronics (www.mcselec.com) ประเทศเนเธอร์แลนด์ ภาษาเบสิก เป็ น ตั ว เลื อ กที่ น ่ า สนใจเป็ น อย่ า งมากส� ำ หรั บ ผู ้ เ ริ่ ม ต้ น ใช้ ง านไมโคร คอนโทรลเลอร์ไม่ว่าจะเป็นตระกูลใด เนื่องจากความง่ายของตัวภาษา หน่วยนับมาตรฐานและตัวเลขที่เป็นเลขฐานสิบ (decimal - DEC) ซึ่งเป็น ตัวเลขที่เราคุ้นเคยและใช้ในชีวิตประจ� ำวัน ผู้พัฒนาโปรแกรมสามารถ ก�ำหนดเป็นเลขฐานสอง (binary - BIN) และฐานสิบหก (hexadecimal HEX) ได้เมื่อมีความช�ำนาญมากขึ้น อีกทั้งขั้นตอนการเขียนโปรแกรมบน BASCOM-8051 ยังง่าย มีหน้าต่างท�ำงานหลักเพียงหน้าต่างเดียว ไม่ซบั ซ้อน มีเครื่องมืออ�ำนวยความสะดวกในการเขียนโปรแกรมอย่างครบครัน BASCOM-8051 รุ ่ น ที่ จ ะน� ำ มาใช้ เ รี ย นรู ้ กั น ในบทความชุ ด นี้ คื อ BASCOM-8051Demo หรือรุ่นทดลองใช้งาน สามารถดาวน์โหลดได้ที่ www.mcselec.com หรื อ ผ่ า นทางลิ ง ก์ http://www.mcselec.com/ index.php?option=com_docman&task=doc_download& gid=166&Itemid=54 (ลิงก์นี้อาจเปลี่ยนแปลงได้จากการปรับปรุงของเจ้า ของเว็บไซต์) โดยรุ่น Demo นี้มีข้อจ�ำกัดที่ขนาดของไฟล์หลังการคอมไพล์ ไม่เกิน 4 กิโลไบต์ ซึ่งนั่นไม่ใช่ปัญหาแต่อย่างใด นับว่ามากเพียงพอ ส� ำ หรั บ ฝึ ก วิ ท ยายุ ท ธในครั้ ง นี้ ส่ ว นท่ า นที่ ส นใจใช้ ง านรุ ่ น สมบู ร ณ์ ข อง BASCOM-8051 สามารถสั่งซื้อออนไลน์ได้ที่เว็บไซต์ของ MCS Electronics โดยตรง ราคา 79 ยูโร (ประมาณ 3,200 บาท) จัดได้ว่า เป็นหนึ่งในซอฟต์แวร์ ส�ำหรับไมโครคอนโทรลเลอร์ที่มีคอมไพเลอร์ภาษาเบสิกราคาประหยัดที่พอ จัดหามาใช้ได้
เมื่อดาวน์โหลดโปรแกรมมาแล้ว ให้ทำ� การติดตั้ง แล้วเปิดใช้งานได้ ทันที หน้าต่างหลักของโปรแกรมแสดงในรูปที่ 1-1
รูปที่ 1-1 หน้าต่างหลักของ Bascom-8051
ก่ อ นที่ จ ะเริ่ ม ทดสอบโปรแกรมแรก มาท� ำ ความรู ้ จั ก กั บ เครื่ อ งมื อ อ�ำนวยความสะดวกที่สำ� คัญและมักจะใช้งานบ่อย ดังนี้ สร้างไฟล์ใหม่ โปรแกรมจะเปิดหน้าต่างเอดิเตอร์หรือหน้าต่าง ส�ำหรับเขียนโปรแกรมขึ้นมาใหม่
คุณสมบัติที่น่าใจของ BASCOM-8051 มีดังนี้
เปิดไฟล์งานเดิม
บันทึกไฟล์ในชื่อเดิม
คัดลอก
วาง
คอมไพล์โค้ดโปรแกรม
ตรวจสอบความถูกต้องของไวยกรณ์ในโปรแกรม
เรียกดูรายงานการใช้ทรัพยากร
จ�ำลองการท�ำงาน
สร้างอักษรพิเศษส�ำหรับโมดูล LCD แบบตัวอักษร
กราฟิกคอนเวอร์เตอร์สำ� หรับใช้งานกับโมดูลกราฟิก LCD
• รองรับการพัฒนาโปรแกรมภาษาเบสิก
• รองรับค�ำสั่ง IF-THEN-ELSE-END IF, DO-LOOP, WHILEWEND, SELECT- CASE. • คอมไพล์ได้ไฟล์ .hex ที่มีขนาดเล็ก ท�ำให้การท�ำงานโดยรวมมี ความเร็ว
• รองรับชื่อตัวแปรและลาเบลได้ 32 ตัวอักษร
• รองรับชนิดของตัวแปรได้คึรบถ้วนไม่ว่าจะเป็น Bit, Byte, Integer, Word, Long, Single และ String • ใช้งานได้กับไมโครคอนโทรลเลอร์ในตระกู] MCS-51 ได้หลายยี่ห้อ และหลายเบอร์หลัก อาทิ 8031, 8032, 8051, 8052, 80552, 80535, 80537, AT89C/Sx051, AT89S8252, AT789S8253, 89C51RD (ใช้ได้กับ P89V51RD2 ด้วย), AT89C55WD, 89C420, 89C668, ADuC812 เป็นต้น
• รูปแบบค�ำสั่งคล้ายกับ Visual BASIC และ QBASIC
• มีค�ำสั่งพิเศษรองรับฮาร์ดแวร์หน้าที่พิเศษ อาทิ ค�ำสั่งติดต่อกับ โมดูล LCD, ระบบบัส I2C และบัส 1 สายหรือ 1-Wire • มีโปรแกรมจ�ำลองการท�ำงานเป็นหน้าต่างเทอร์มนิ อลเพือ่ ทดสอบการ สือ่ สารข้อมูลอนุกรม
• จ�ำลองการท�ำงานได้
• รองรับการเปลี่ยนสีของค�ำสั่งและตัวแปรในโปรแกรม เพื่อช่วยให้ ตรวจสอบและแก้ไขโปรแกรมได้ง่าย
66
เครื่องมือในการใช้งานของ BASCOM-8051
The Prototype Electronics
เปิดใช้งานหน้าต่างจัดการไลบรารี ใช้ในการผนวกไฟล์ไลบรารี เข้ามาในโปรแกรมหรือลบออก
เปิดคู่มือการใช้งาน BASCOM-8051
ออกจากโปรแกรม
ก้าวแรกของ¨อมยØท¸ ท´สอบเขียนâปรแกรมแรกกันเลย
(1) เขียนโปรแกรมดังต่อไปนี้
$regfile = “89C51RD.dat” $crystal = 11059200 $baud = 9600 $large Do Print "Hello Embedded Programmer" Wait 1
(3) หากเขียนรหัสค�าสั่งผิดพลาด แล้วท�าการคอมไพล์ จะเกิดการแจ้ง ความผิดพลาดขึ้นด้วยแถบสีแดงในบรรทัดที่เกิดข้อผิดพลาด ดังรูปที่ 1-3 จากรูปข้อผิดพลาดที่เกิดขึ้นคือ มีการพิมพ์ค�าสั่งหน่วงเวลาผิด Wai 1 ที่ ถูกต้องคือ Wait 1
Loop
ความหมายของโปรแกรม
บรรทัดที่ 1 : $regfile
= "89C51RD.dat"
‘ ก�าหนดว่าโปรแกรมนี้ใช้ไมโครคอนโทรลเลอร์เบอร์ 89C51RD หรือ 89V51RD2
บรรทัดที่ 2 : $crystal
= 18432000
‘ ความถี่ของคริสตอลเป็น 11.0592MHz
บรรทัดที่ 3 : $baud = 9600 ‘ อัตราบอดของโมดูล UART ผ่านพอร์ตอนุกรมเท่ากับ 9600 บิตต่อวินาที บรรทัดที่ 4 : $large ' ก�าหนดขนาดของหน่วยความจ�าเป็นขนาดใหญ่ ใช้เมื่อโปรแกรมมีขนาด เกิน 2 กิโลไบต์ ส�าหรับโปรแกรมนี้ไม่ใส่ก็ได้ บรรทัดที่ 5 : Do
รูปที่ 1-3 หน้าต่างของ BASCOM-8051 เมื่อเกิดข้อผิดพลาดในการการคอม ไพล์ขึ้น (4) หลังจากคอมไพล์โปรแกรม BASCOM-8051 มีความสามารถใน การจ�าลองการท�างานดูก่อนได้ ก่อนที่จะดาวน์โหลดไปยังฮาร์ดแวร์จริง โดย คลิกปุ่ม จะมีหน้าต่าง BASCOM simulator ซ้อนขึ้นมา ดังรูปที่ 1-4 จากนั้นท�าการทดสอบการจ�าลองการท�างานตามที่อธิบายในรูปได้เลย
' ก�าหนดจุดเริ่มต้นการวนรอบไม่รู้จบ
บรรทัดที่ 6 : Print "Hello Embedded Programmer" ' พิมพ์ข้อความที่อยู่ใน " " ออกทางโมดูล UART ของไมโครคอนโทรลเลอร์ บรรทัดที่ 7 :
Wait 1
บรรทัดที่ 8 : Loop
' หน่วงเวลา 1 วินาที ' จุดสิ้นสุดการวนรอบไม่รู้จบ
(2) เมื่อเขียนโปรแกรมครบถ้วนแล้ว ให้คลิกปุ่มคอมไพล์ โปรแกรม จะให้บันทึกชื่อไฟล์ก่อน หากการคอมไพล์สมบูรณ์ ไม่มีความผิดพลาดจะมี การแจ้งสถานะดังรูปที่ 1-2 จะได้ไฟล์ .hex ที่พร้อมส�าหรับการดาวน์โหลด ไปยังไมโครคอนโทรลเลอร์
รูปที่ 1-4 แสดงการจําลองการทํางานของ BASCOM-8051 จะเห็นไดวา BASCOM-8051 ชวยใหการเขียนโปรแกรมเพื่อควบคุม การทํางานของไมโครคอนโทรลลอร MCS-51 ทําไดงายขึ้น ไมมีความซับ ซอนในการสรางไฟลโปรเจ็กตเหมือนกับภาษา C ทําใหมือใหมเขาถึงไดงาย ในตอนตอไปจะเปนการทดลองที่ตองทดสอบการทํางานจริงทางฮารดแวร โดยเริ่ ม จากการส ง ค า ยั ง พอร ต เอาต พุ ต ของไมโครคอนโทรลเลอร เ พื่ อ ควบคุมอุปกรณเอาตพุตอยางงาย แลวคุณจะรูวา มันงายจริงๆ รูปที่ 1-2 หน้าต่างของโปรแกรมที่แสดงให้เห็นการคอมไพล์ซอร์สโค้ดที่ไม่มี ความผิดพลาด
www.tpemagazine.com The Prototype Electronics
67