Page 27 - The Journal of the Royal Society of Thailand
P. 27
วารสารราชบััณฑิิตยสภา
ปีีท่� ๔๙ ฉบัับัท่� ๑ มกิราคุม-เมษาย์น ๒๕๖๗
ศาสตราจารย์์กิิตติคุุณ ดร.มงคุล เดชนคุรินทร์ 17
pop ax ;retrieve ax again
call i2c_wr ;send lo byte of start addr
call chknak ;check NACK error
ret ;return with ah.0=ACK from last write
prewr endp
หมาย์เหตุ : คำสั�ง call chknak ที�ป็รากฏอย้่ ๓ แห่ง (ต่ามหลังคำสั�ง call i2c_wr) ในกระบวนคำสั�ง
prerw ขี�างบนนี� และ ๑ แห่งในกระบวนคำสั�ง prerd ขี�างล่างนี� ใช�ต่รวจสอบว่าอีอีพื่ร็อมส่งสัญญาณ NACK
(“1”) ให�แม่ขี่ายหร่อไม่ ถ�าส่งสัญญาณนี�ให�จริงก็แสดงว่า เกิดขี�อผิดพื่ลาดในการส่งขี�อม้ลจากแม่ขี่าย ในกรณีนี�
ผ้�เขีียนกำหนดไว�ในกระบวนคำสั�ง chknak ให�ไมโครคอนโทรลเลอร์แม่ขี่ายเลิกถ่ายโอนขี�อม้ลแล�วเขี�าส้่วงวนไม่ร้�
จบ (endless loop) พื่ร�อมกับแสดงสัญญาณบ่งบอกขี�อผิดพื่ลาด (00010001b = 11h) ผ่านชุดแสดงผลแบบ
ไดโอดเป็ล่งแสงที�ต่่อกับช่องทาง PB ขีองวงจรรวม 8255 (2) ต่ามภาพื่ที� ๒ โป็รดด้กระบวนคำสั�ง chknak
ในโป็รแกรมภาษัาแอสเซึ่มบลีต่ามภาพื่ที� ๑๐
๖. กิระบวนคุำส่�ง prerd (เต่รียมอ่าน) : อ�างอิงผังงานในภาพื่ที� ๙ และขีั�นต่อน ๑. - ๕. ขีองเกณฑ์์วิธีี
prerd proc ;(prepare for reading data; input: ax = start addr)
call prewr ;send start addr
call i2cstr ;start sequence
th
mov al,0A1h ;7-bit addr ID of EEPROM + 8 (read) bit=1
call i2c_wr ;send al = addr ID for read
call chknak ;check NACK error
ret ;return with ah.0=ACK from last write
prerd endp
โปรแกรมหลักที�ใช้�สาธีิต่การต่่อประสานแผงวงจรไมโครคอนโทรลเลอร์กับอีอีพื่ร็อมแบบอนุกรม
โป็รแกรมหลักที�ใช�แสดงต่ัวอย่างการทำงานขีองแผงวงจรไมโครคอนโทรลเลอร์ 8088 ที�ต่่อป็ระสานกับ
อีอีพื่ร็อมแบบอนุกรม AT24C256 ต่ามภาพื่ที� ๔ ในบทความนี�มีรายละเอียดต่ามที�แสดงไว�ในภาพื่ที� ๑๐ โดยสรุป็
โป็รแกรมดังกล่าวทำงานเป็็นขีั�นต่อนดังนี�
๑. เริ�มด�วยการกำหนดให�เรจิสเต่อร์ต่่าง ๆ ขีองหน่วยป็ระมวลผลกลาง 8088 ค่อ เรจิสเต่อร์ ds, es, ss,
bp, si, di อย้่ร่วมกันกับ cs (code segment) ในเซึ่กเมนต่์ (segment) 0000h โดยที�ต่ำแหน่งบนสุดขีอง
ss (stack segment) อย้่ที� sp (stack pointer) = 7FFEh ในหน่วยความจำเขี�าถ่งโดยสุ่ม (random access
memory) หร่อหน่วยความจำที�เรียกโดยย่อว่า “แรม” (RAM)