best view IE mode 800x600 Text Size Medium

Home
แผนที่เว็บไซต์

 

 

 

บทความ

Basic Stamp ควบคุม Step Motor สามตัวพร้อมกัน แยกกันทำงานอย่างอิสระ
ผู้เขียน ... ทีมงาน AppSoftTech

   การเขียนโปรแกรมควบคุมการทำงานไมโครคอนโทรลเลอร์ Basic Stamp นั้น จุดที่ยากที่สุดเห็นจะเป็นเรื่องของการเขียนโปรแกรมให้อยู่ในรูปแบบของ Multiple Task คือการทำงานพร้อม ๆ กันของแต่ละ ซับรูทีน เช่นเดียวกับตัวอย่างนี้เป็นต้น ที่นำเสนอแนวทางในการเขียนโปรแกรมที่มีลักษณะการทำงานของ Multiple Task คือจะมีการตรวจสอบการกดคีย์สวิตซ์ และสั่งการทำงานไปขับ Step Motor ให้ทำงาน โดยที่สามารถรองรับการกดคีย์เพื่อไปควบคุม Step Motor ตัวที่ยังไม่ได้ถูกเรียกใช้งานได้ ในขนาดที่ Step Motor ตัวที่ถูกเรียกใช้งานก่อนหน้ายังคงทำงานอยู่ โดยเป็นพื้นฐานทางด้านแนวความคิดในการเขียนโปรแกรมในรูปแบบ Multiple Task

'==================
'Program : Step Motor Multiple Task
'Copyright(c) : 2003 AppSoftTech Co.,Ltd.
'website : http://www.appsofttech.com
'
'{$STAMP BS2sx}
'{$PBASIC 2.5}
'===================
'{I/O pins}
INPUT 12
INPUT 13
INPUT 14

'{ constants }
Delay CON 100

'{ variables }
DrvA VAR Nib
DrvB VAR Nib
DrvC VAR Nib
mstepA VAR Nib
mstepB VAR Nib
mstepC VAR Nib
DataStep VAR Nib(3)

'{ DATA statements }

'-------------------
'{ initialization }
DIRA=$f
DIRB=$f
DIRC=$f
DataStep(0) = %0011
DataStep(1) = %0110
DataStep(2) = %1100
DataStep(3) = %1001

'-------------------
' { code }

Main:
IF IN12 = 0 THEN
DrvA = 1 'input bit12 on
mstepA = 0
ENDIF
IF IN13 = 0 THEN
DrvB = 1 'input bit13 on
mstepB = 0
ENDIF
IF IN14 = 0 THEN
DrvC = 1 'input bit14 on
mstepC = 0
ENDIF

GOSUB DrvMotorA
GOSUB DrvMotorB
GOSUB DrvMotorC

PAUSE Delay
' DEBUG "++++ Delay ++++",CR

GOTO Main
END

'-------------------
'{ subroutines }

' Drive Motor A
DrvMotorA:
IF DrvA > 0 AND DrvA < 16 THEN
' DEBUG "mstepA = ", DEC mstepA , CR
OUTA = DataStep(mstepA)
mstepA = mstepA + 1
IF mstepA > 3 THEN
mstepA = 0
DrvA = DrvA + 1
ENDIF
' DEBUG "DrvA = ", DEC DrvA , CR
ENDIF
IF DrvA = 0 THEN OUTA = 0
RETURN

' Drive Motor B
DrvMotorB:
IF DrvB > 0 AND DrvB < 16 THEN
OUTB = DataStep(mstepB)
mstepB = mstepB + 1
IF mstepB > 3 THEN
mstepB = 0
DrvB = DrvB + 1
ENDIF
ENDIF
IF DrvB = 0 THEN OUTB = 0
RETURN

' Drive Motor C
DrvMotorC:
IF DrvC > 0 AND DrvC < 16 THEN
OUTC = DataStep(mstepC)
mstepC = mstepC + 1
IF mstepC > 3 THEN
mstepC = 0
DrvC = DrvC + 1
ENDIF
ENDIF
IF DrvC = 0 THEN OUTC = 0
RETURN

  ตัวอย่างนี้เป็นเพียงแนวทางในการเขียนโปรแกรมควบคุมการทำงานแบบทำงานหลาย ๆ งานพร้อมกันโดยการตรวจสอบเงื่อนไขและแยกการทำงานอย่างอิสระ ในการทำงานที่เกี่ยวกับ Multiple Task ไม่ควรที่จะมีชุดคำสั่งที่เกี่ยวกับการหน่วงเวลาเข้ามา เนื่องจากจะเป็นจุดที่ทำให้โปรแกรมเกิดการหน่วงเวลาในการตรวจสอบการทำงานในด้านต่าง ๆ ทำให้การทำงานในรูปแบบ Multiple Task ขาดความสมบูรณ์ไปได้

Home Page
>> หากมีข้อเสนอและแนะนำส่ง email มาได้ที่ support@appsofttech.com  ครับ

 

Home Page

best view IE mode 1024x768 Text Size Medium
ผู้จำหน่ายไมโครคอนโทรลเลอร์และอุปกรณ์อิเล็กทรอนิกส์ทุกประเภท
Copyright © 2005 Appsofttech Co., Ltd.


บริษัท แอพซอฟต์เทค จำกัด 19/6 หมู่ 6 หมู่บ้านเอกวัฒนา ซ.เพชรเกษม 53 ถนนเพชรเกษม แขวงบางแค เขตบางแค กรุงเทพฯ  10160 Tel: 0-2413-3985-6, Fax: 0-2413-3165(auto)
Hotline 081-4850870, 081-4316541

[ วิธีสั่งซื้อ | บริษัท | Term of use | Privacy Policy ]
 
Contact email: info@appsofttech.com  Designed by : : Appsofttech Co.,Ltd.