|
1.
ตั้งค่าตัวแปรสำหรับกำหนดเป็นรหัส
Ascii
เพื่อเริ่มต้นตำแหน่งเคอร์เซอร์ซ้ายมือในโปรแกรมบน
คอมพิวเตอร์
ในที่นี้สมมุติชื่อ ST และตัวแปร NL สำหรับบอกให้ขึ้นบรรทัดใหม่ในโปรแกรมบน PC
เช่นกัน
ซึ่งสามารถกำหนดดังต่อไปนี้
ST
EQU ODH
NL EQU OAH
2.ตั้งค่าสำหรับกำหนดพื้นที่ในหน่วยความจำ
DATA: DS 20H ;
กำหนดใช้พื้นที่ในหน่วยความจำไว้ที่
32 byte
3.
ตั้งค่าใน Register DPTR
ในการที่จะเริ่มตำแหน่ง Address
ในหน่วยความจำ
สำหรับจะเอาไว้
เก็บข้อมูลหรือข้อความที่ส่งไปยังคอมพิวเตอร์
MOV
DPTR,#GiveWord
4.
เคลียร์ค่าใน Register A
โดยกำหนดค่า #00H
และเคลื่อนย้ายข้อมูลที่เก็บในหน่วยความจำไปที่
Register A
เพื่อจะในไปส่งข้อมูลผ่าน Serial port
ให้กับคอมพิวเตอร์ต่อไป
แนะนำว่าควรกำหนดเป็นโปรแกรมย่อยขึ้นใหม่
โดยผมใช้ชื่อ Send_Data
Send_Data
: MOV A,#00
MOV A,@A,+DPTR
; ในส่วนนี้จะเป็นการส่งข้อมูลผ่านออก
serial port
MOV SBUF,A
;
เอาค่าใน Register A ไปเก็บไว้ที่ Buffer
เพื่อส่งข้อมูลผ่าน Serial port
JNB TI,$
;
เปรียบเทียบเงื่อนไขเป็นจริงเมื่อ
Buffer Send Data เรียบร้อยแล้ว
CLR TI
;
เคลียร์ค่าของ TI(Transmit Interrupt) bit ใน SCON
Register เพื่อคอยส่งข้อมูลชุดใหม่ออกไป
JZ HOME
; ตรวจสอบข้อมูลหากพบว่าเป็น
00H
แสดงว่าข้อมูลหรือข้อความซึ่งถูกเก็บใน
หน่วยความจำที่เขียนไว้ถูกส่งไปหมดแล้ว
INC DPTR
;
หากยังไม่หมดข้อความก็ให้ส่งข้อมูลที่ตำแหน่ง
Address ในลำดับต่อไป
SJMP
Send_Data ;
กลับไปทำขั้นตอนส่งข้อมูล
5.กำหนดโปรแกรมย่อยสำหรับการเก็บข้อมูลในหน่วยความจำที่จะส่งไปยังคอมพิวเตอร์
โดยผมสมมุติชื่อ
GiveWord
ซึ่งจะมีข้อมูลที่ส่งเริ่มต้นจะบอกด้วยค่าแอสกี้
ก็คือ ST กับ NL
ที่กำหนดไว้ตอนบนของ
โปรแกรมนี้แล้วนั้น ก็ เพื่อจะให้โปรแกรมบนคอมพิวเตอร์รับรู้แล้วขึ้นบรรทัดใหม่
ต่อจากนั้นก็จะเป็น ข้อความ ปิดท้ายด้วยค่าแอสกี้ ST กับ NL
และค่าเพื่อใช้ในการตรวจสอบว่าส่งข้อมูลในหน่วย
ความจำ ไปหมดแล้วในที่นี้คือ 00H
GiveWord :
DB ST,NL,"MICROCONTROLLER INTERFACE SERAIL PORT"
DB " BY THAIIO DOT COM
",ST,NL
DB " SEND DATA TO COMPUTER COMPLETED! " ,ST,NL
DB 00H
|