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)
   22   23   24   25   26   27   28   29   30   31   32