BASIC-51 COURSE Chapter3 (Thai)

Page 1

Proto Tech - Series

Embedded System ศักดิ์ชัย ผางส�าเนียง

เรี ย น-เล น -ใช

ไมโครคอนโทรลเลอร MCS-51 ดวยโปรแกรมภาษาเบสิก µÍ¹·Õè 3 : 㪌§Ò¹¾Íà µÍÔ¹¾ØµàÍÒµ ¾Øµ

เพิ่มเงื่อนไขในการควบคุมพอรต เอาตพุตดวยการอานคาจากพอรต อินพุต อีกหนึ่งการทดลองสําหรับ การเรียนรูเพื่อใชงานพอรตอินพุต เอาตพุตของไมโครคอนโทรลเลอร P89V51RD2 เกี่ ย วกั บ ¾อร์ ต อิ น ¾Ø ต ของไมâครคอนâทรลเลอร์ P89V51RD2 ในการก�าหนดให้เป็นพอร์ตของไมโครคอนโทรลเลอร์ P89V51RD2 ท�างานเป็นพอร์ตอินพุต ต้องเริ่มต้นด้วยการเขียนข้อมูล "1" มาที่แต่ละบิต ของพอร์ตที่ต้องการใช้งานเป็นอินพุต เพื่อหยุดการท�างานของเฟตที่ใช้ใน การขับสัญญาณเอาต์พุตของบิตนั้น ๆ ท�าให้ขาสัญญาณของพอร์ตเชื่อม ต่อเข้ากับวงจรพูลอัปภายในโดยตรง ส่งผลให้ขาพอร์ตนั้นมีลอจิกเป็น "1" สามารถรับสัญญาณลอจิก "0" จากอุปกรณ์ภายนอกได้ง่าย สัญญาณ ข้อมูลจากอุปกรณ์ภายนอกจะถูกส่งเข้ามาแล้วเก็บไว้ในวงจรบัฟเฟอร์ ภายในพอร์ต แล้วรอให้ซีพียูมาอ่านค่าเข้าไป เมื่อเป็นเช่นนี้ อุปกรณ์ ภายนอกที่เชื่อมต่อกับพอร์ตอินพุตของไมโครคอนโทรลเลอร์ MCS-51 แบบแฟลชควรก�าหนดให้ท�างานในสภาวะลอกิจ "0" จะดีและสะดวกที่สุด ซึ่งในปัจจุบันอุปกรณ์อินพุตที่เชื่อมต่อไมโครคอนโทรลเลอร์แทบทั้งหมด ท�างานที่ลอจิก "0" อยู่แล้ว ในรูปที่ 3-1 แสดงโครงสร้างอย่างง่ายของขาพอร์ตทั้งหมดในไมโคร คอนโทรลเลอร์ MCS-51 มาตรฐาน

การท´ลองที่ 2 อ‹านค‹าอิน¾Øตเ¾ื่อควบคØมเอาต์¾Øต การทดลองที่ 1 เราสามารถท�าให้ LED ติดดับตามเวลาที่ก�าหนดได้ แล้ว ในการทดลองนี้จะเปลี่ยนการวิธีควบคุม LED โดยมาใช้สวิตช์แทน ใน โปรแกรมของการทดลองนี้จะท�าให้เมื่อกดสวิตช์ครั้งแรก LED จะติด และ เมื่อกดอีกครั้ง LED จะดับ อุปกรณ์ที่ต้องใช้ในการทดลองนี้แสดงในรูปที่ L2-1 ส่วนวงจรทดลองเป็นดังรูปที่ L2-2 72

The Prototype Electronics

a

b c

d

(a) LED ขนาด 5 มม. สีแดงหรือสีอื่นตามต้องการ (b) ตัวต้านทาน 510Ω 1/4W 5% หรือ 1% (c) สวิตช์กดติดปล่อยดับ (d) สายต่อวงจร

รูปที่ L2-1 แสดงอุปกรณ์ทั้งหมดที่ใช้ในการทดลองนี้ (L2.1) เปิดโปรแกรม Bascom-8051 ขึ้นมา เขียนโปรแกรมที่ L2-1 บันทึกชื่อเป็น InOutPort.bas (L2.2) คอมไพล์และดาวน์โหลดโปรแกรมลงไปยังบอร์ด TPE-51 โดย ใช้ซอฟต์แวร์ Flash Magic (L2.3) รันโปรแกรมด้วยการกดสวิตช์ RESET จากนั้นทดลองกดสวิตช์ S1 หากทุกอยางถูกตอง LED ตองติดสวาง จากนั้นทดลองกดสวิตช S1 อีกครั้ง LED ตองดับ


รูปที่ 3-1 โครงสร้างของขาพอรตในไมโครคอนโทรลเลอร MCS-51

$regfile = "89C51RD.DAT $default Xram

$ramstart = 0

$ramsize = 1024

$crystal = 11059200 Lamp Alias P0.0 Switch Alias P0.1 Lamp = 1 Do

‘ เริ่มตนการทำางานที่ตำาแหนงแรก ‘ กำาหนดใหใชหนวยความจำาแรม 1024 ไบต ‘ ใชความถี่สัญญาณนาฬิกา 11.059200MHz ‘ กำาหนดใหคำาวา Lamp คือขาพอรต P0.0 ‘ กำาหนดให switch คือขาพอรต P0.1 ‘ กำาหนดสภาวะเริ่มตนให Lamp มีคาเปน “1” ‘ จุดเริ่มตนการวนรอบไมรูจบ

Debounce Switch , 0 , Controllamp , Sub

‘ ตรวจสอบการกดสวิตช ถาเปน “1” แสดงวายังไมมีการกดสวิตช ‘ ถาเปน “0” แสดงวา มีการกดสวิตชใหกระโดดไปทำางานที่โปรแกรมยอย Controllamp

Loop Controllamp:

If Lamp = 1 Then Lamp = 0

Else

Lamp = 1

End If Return

‘ จุดสิ้นสุดของการวนรอบไมรูจบ ‘ จุดเริ่มตนโปรแกรมยอย Controlleamp ‘ การตรวจสอบเงื่อนไข ถา Lamp มีคาเปน “1” ‘ ใหเปลี่ยนคา Lamp เปน “0” ‘ ถา Lamp ไมไดมีคาเปน “1” ‘ เปลี่ยนคา Lamp ใหเปน “1” ‘ จุดสิ้นสุดการตรวจสอบเงื่อนไข ‘ ยอนกลับ ในที่นี้คือกลับไปที่ Do...Loop

โปรแกรมที่ L2-1 ไฟล InOutPort.bas โปรแกรมอ่านค่าจากพอรตอินพุตเพื่อใช้ในการควบคุมพอรตเอาตพุตอย่างง่าย (คําอธิบายโปรแกรมภาษาไทยไม่ต้องพิมพ)

The Prototype Electronics

73


จากโปรแกรมที่ L2-1 มีคำาสั่งใหม 2 คำาสั่ง และรูปการเขียนโปรแกรม ยอยเพิ่มขึ้นมา

ส ว นโปรแกรมย อ ยแบบเป น ทางการต อ งมี ก ารประกาศชื่ อ ของ โปรแกรมยอยไวที่สวนหัวของโปรแกรม กอนเขาสูโปรแกรมหลัก ดังตัวอยาง

คำาสั่งที่ 1 คือ ค�ำสั่ง Debounce เปนคำาสั่งที่ออกแบบมาเพื่อตรวจ สอบการกดสวิตชโดยเฉพาะเพื่อปองกันสัญญาณรบกวนจากหนาสัมผัส ของสวิตชที่ยังไมนิ่ง เมื่อมีสัญญาณเขามา โปรแกรมจะไมทำางานทันที แต จะรออีก 25 มิลิวินาทีจึงตรวจสอบอีกครั้ง หากยังมีสัญญาณเขามาอยู แสดงวา ไมใชสัญญาณรบกวน โปรแกรมจึงทำางานตามเงื่อนไขที่เขียนไว

Declare Sub Controllamp 'ประกาศชื่อของโปรแกรมยอย Controllamp

คำาสั่ง Debounce มีวิธีการใชอยู 2 รูปแบบ คือ

.............. ..............

[รหัสคำาสั่งของโปรแกรมหลัก]

.............. Sub Controllamp () 'จุดเริ่มตนของโปรแกรมยอย Controllamp

Debounce Switch , 0 , โปรแกรมยอย, Sub

..........................

' ใหไปทีโ่ ปรแกรมยอย Controllamp เมือ่ Switch มีคา เปน "0"

...........................

Debounce Switch , 1 , โปรแกรมยอย , Sub

End sub

[รหัสคำาสั่งของโปรแกรมยอย] 'จุดสิ้นสุดของโปรแกรมยอย Controllamp

' ใหไปทีโ่ ปรแกรมยอย Controllamp เมือ่ Switch มีคา เปน "1" คำาสั่งที่ 2 คือ ค�ำสั่ง IF...Then เปนคำาสั่งตรวจสอบเงื่อนไขวาเปนจริง หรือไมจริง หากเปนจริงใหไปทำาตามเงื่อนไขที่อยูหลัง Then หากไมจริงให ไปทำาตามเงื่อนไขที่อยูหลัง Else แทน รูปแบบการใชงานที่ไมซับซอนมีอยู 2 แบบคือ IF..Else..Then และ IF...Then กรณี IF..Then...Else IF A <> B Then

จากการทดลองที่ผานมาดวยคําสั่งเพียงไมกี่บรรทัด ซึ่งทําความเขาใจ ไดงาย ก็ทําใหเราเขียนโปรแกรมควบคุมการติดดับของ LED ดวยการใช สวิตชไดแลว นี่คือการเริ่มตนสรางระบบควบคุมงายจากอุปกรณอินพุตหนึ่ง ตัวควบคุมอุปกรณเอาตพุตหนึ่งตัว การทดลองใน BASIC-51 Course จะ คอยๆ เริ่มทวีความนาสนใจเพิ่มขึ้นกับอุปกรณที่หลากหลาย และแนนอน นักทดลองมือใหมสามารถทําความเขาใจตามไปไดไมยากอยางแนนอน

[เงื่อนไขเปนจริง - ใหกระทำาคำาสั่งในบล็อกนี้] Else [เงื่อนไขไมเปนจริง - ใหกระทำาคำาสั่งในบล็อกนี้แทน] End if กรณี IF... Then

www.tpemagazine.com

IF A <> B Then [เงื่อนไขเปนจริง - ใหกระทำาคำาสั่งในบล็อกนี้] [เงื่อนไขไมเปนจริง - ใหขามการทำางานไป] ในโปรแกรมที่ L2-1 เลือกใชการตรวจสอบในแบบ IF...Then...Else เมื่อการตรวจสอบเงื่อนไขเปนจริง จะทำางานอยางหนึ่ง ถาหากไมเปนจริงก็ จะทำางานอีกอยางหนึ่ง ในขณะที่คำาสั่ง IF...Then จะเกิดการทำางานตามที่กำาหนดก็ตอเมื่อ เงื่อนไขในการตรวจสอบเปนจริงเทานั้น หากไมจริง โปรแกรมก็จะเพิกเฉย เพราะไมไดวางเงื่อนไขคำาสั่งไว โปรแกรมยอยเปนการสรางโปรแกรมขึ้นมาเพื่อทำางานเฉพาะ โดย โปรแกรมยอยที่สรางขึ้นในโปรแกรมที่ L2-1 เรียกวา โปรแกรมยอยแบบ ไมเปนทางการ กลาวคือ สามารถสรางขึ้นมาไดเลย โดยไมตองประกาศ เปนโปรแกรมยอยกอนลวงหนา ตองมีเครื่องหมายโคลอน : อยูหลังชื่อของ โปรแกรมยอยเสมอ เชน Controllamp: เปนตน

74

The Prototype Electronics

á เ ก @

2


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.