126
1 คํานํา เอกสารประกอบการสอนเลมนีไดจัดทําขึ้นเพื่อใชในการสอนรายวิชา 178 320 ไมโครโพรเซสเซอรและ การตอประสาน (Microprocessors and Interfacing) สําหรับนักศึกษาระดับปริญญาตรี สาขาวิชาวิศวกรรม คอมพิวเตอร อยางไรก็ตาม นักศึกษาควรจะตองศึกษาและคนควาเพิ่มเติมดวยตัวเอง ทั้งจากหนังสืออางอิง (ที่กลาวไว ในเอกสารฉบับนี) และหนังสือเลมอื่นๆที่เกี่ยวของ ในการผลิตเอกสารประกอบการสอนเลมนีผูเขียนใครขอแสดงความขอบคุณบุคลากรภาควิชาวิศวกรรม คอมพิวเตอรทุกทานที่มี่สวนในการสนับสนุนและสงเสริมจนเอกสารนี้สําเร็จลุลวงดวยดี โดยเฉพาะ ดร.วรินทร สุวรรณวิสูตร ภาควิชาวิศวกรรมคอมพิวเตอร มหาวิทยาลัยขอนแกน สําหรับเอกสารอางอิงตางๆสําหรับวิชานี้ทีทานไดสะสมมา พรอมทั้ง ดร.สิริวิชญ เตชะเจษฎารังษี สําหรับขอเสนอแนะตางๆ คุณธเนศ อุไรเรืองพันธ สําหรับ การจัดทําปก ทายที่สุดนีผูเขียนหวังเปนอยางยิ่งวา เอกสารเลมนี้จะชวยใหผูเรียนไดเขาใจเนื้อหาไดเปนอยางดี เปน พื้นฐานที่ดีและเปนประโยชนในการศึกษาคนควา เพื่อเพิ่มพูนเทคนิคในการออกแบบและพัฒนาระบบไมโคร โพรเซสเซอรที่ดี ดร.ดารณี หอมดี พฤษภาคม 2548

คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

1

คานา

เอกสารประกอบการสอนเลมน ไดจดทาขนเพอใชในการสอนรายวชา 178 320 ไมโครโพรเซสเซอรและการตอประสาน (Microprocessors and Interfacing) สาหรบนกศกษาระดบปรญญาตร สาขาวชาวศวกรรม

คอมพวเตอร

อยางไรกตาม นกศกษาควรจะตองศกษาและคนควาเพมเตมดวยตวเอง ทงจากหนงสออางอง (ทกลาวไว

ในเอกสารฉบบน) และหนงสอเลมอนๆทเกยวของ

ในการผลตเอกสารประกอบการสอนเลมน ผเขยนใครขอแสดงความขอบคณบคลากรภาควชาวศวกรรม

คอมพวเตอรทกทานทมสวนในการสนบสนนและสงเสรมจนเอกสารนสาเรจลลวงดวยด โดยเฉพาะ ดร.วรนทร

สวรรณวสตร ภาควชาวศวกรรมคอมพวเตอร มหาวทยาลยขอนแกน สาหรบเอกสารอางองตางๆสาหรบวชานท

ทานไดสะสมมา พรอมทง ดร.สรวชญ เตชะเจษฎารงษ สาหรบขอเสนอแนะตางๆ คณธเนศ อไรเรองพนธ สาหรบ

การจดทาปก

ทายทสดน ผเขยนหวงเปนอยางยงวา เอกสารเลมนจะชวยใหผเรยนไดเขาใจเนอหาไดเปนอยางด เปน

พนฐานทดและเปนประโยชนในการศกษาคนควา เพอเพมพนเทคนคในการออกแบบและพฒนาระบบไมโคร

โพรเซสเซอรทด

ดร.ดารณ หอมด

พฤษภาคม 2548

Page 2: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

2

สารบาญ

คานา ..................................................................................................................................1

คาอธบายรายวชา...................................................................................................................3

บทท 1 บทนา .....................................................................................................................3

1.1 ระบบคอมพวเตอร .......................................................................................................................................................... 3

1.2 ภาษาคอมพวเตอร ........................................................................................................................................................... 3

1.3 ระบบเลขฐานทใชในคอมพวเตอร ................................................................................................................................... 3

บทท 2 ระบบไมโครคอมพวเตอร........................................................................................3

2.1 ระบบไมโครคอมพวเตอรพนฐาน.................................................................................................................................... 3

2.2 หนวยประมวลผลกลาง ................................................................................................................................................... 3

2.3 สถาปตยกรรมของไมโครโพรเซสเซอร ........................................................................................................................... 3

บทท 3 สถาปตยกรรมของไมโครโพรเซสเซอร Z80 ............................................................3

3.1 ขาสญญาณบน Z80 ......................................................................................................................................................... 3

3.2 รจสเตอรบนไมโครโพรเซสเซอร Z80 ............................................................................................................................. 3

3.3 รปแบบของคาสงในไมโครโพรเซสเซอร Z80 ................................................................................................................. 3

3.4 Z80 ADDRESSING MODES ................................................................................................................................................ 3

บทท 4 ชดคาสง (INSTRUCTION SET) ของ Z80 ...............................................................3

4.1 DATA TRANSFER INSTRUCTIONS ...................................................................................................................................... 3

4.2 ARITHMETIC INSTRUCTIONS............................................................................................................................................. 3

4.3 LOGICAL INSTRUCTIONS .................................................................................................................................................. 3

4.4 BIT MANIPULATION INSTRUCTIONS .................................................................................................................................. 3

4.5 BRANCH INSTRUCTIONS .................................................................................................................................................. 3

4.6 MACHINE CONTROL OPERATIONS INSTRUCTIONS.............................................................................................................. 3

4.7 ASSEMBLER DIRECTIVES.................................................................................................................................................. 3

บทท 5 Z80 MACHINE CYCLES AND BUS TIMING..........................................................3

5.1 OPCODE FETCH MACHINE CYCLE..................................................................................................................................... 3

5.2 MEMORY READ MACHINE CYCLE .................................................................................................................................... 3

5.3 MEMORY WRITE MACHINE CYCLE................................................................................................................................... 3

5.4 ทบทวนสาระสาคญ......................................................................................................................................................... 3

5.5 การสรางสญญาณควบคม................................................................................................................................................ 3

Page 3: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

3

บทท 6 การตอประสานกบหนวยความจา ........................................................................... 3

6.1 แนวคดพนฐานเกยวกบหนวยความจา ..............................................................................................................................3

6.2 การถอดรหสตาแหนง ......................................................................................................................................................3

6.3 PARTIAL ADDRESS DECODING และ FOLD BACK MEMORY..................................................................................................3

บทท 7 การตอประสานกบอปกรณ I/O............................................................................... 3

7.1 การตอประสานกบอปกรณเอาทพต..................................................................................................................................3

7.2 การตอประสานกบอปกรณอนพต ....................................................................................................................................3

7.3 MEMORY – MAPPED I/O ...................................................................................................................................................3

บทท 8 INTERRUPT........................................................................................................... 3

8.1 ความรเบองตนสาหรบ INTERRUPT I/O ใน Z80 .................................................................................................................3

8.2 การ ENABLE และ DISABLE INTERRUPT...............................................................................................................................3

8.3 INTERRUPT FLIP-FOPS .......................................................................................................................................................3

8.4 คาสง RETURNS ตางๆ .......................................................................................................................................................3

8.5 NON-MASKABLE INTERRUPT (NMI) ..................................................................................................................................3

8.6 MASKABLE INTERRUPT (INT) ...........................................................................................................................................3

8.7 TIMING DIAGRAM สาหรบการตอบสนองตอการ INTERRUPT ของ CPU...............................................................................3

8.8 MULTIPLE INTERRUPTS และ PRIORITIES ...........................................................................................................................3

บทท 9 อปกรณตอประสานทสามารถโปรแกรมได ............................................................. 3

9.1 แนวคดพนฐานของอปกรณตอประสานทสามารถโปรแกรมได .......................................................................................3

9.2 การสรางตวรบสงทสามารถโปรแกรมไดอยางงาย (PROGRAMMABLE TRANSCEIVER).........................................................3

9.3 อปกรณ I/O แบบขนานสาหรบ Z80..................................................................................................................................3

9.4 ชป 8255A........................................................................................................................................................................3

บทท 10 การแปลงสญญาณแอนะลอก-ดจตอลเบองตน .................................................... 3

10.1 DIGITAL-TO-ANALOG CONVERSION (DAC).....................................................................................................................3

10.2 ANALOG-TO-DIGITAL CONVERSION (ADC).....................................................................................................................3

บทท 11 การสงขอมลผาน PARALLEL PRINTER PORT ของ PC...................................... 3

11.1 8-BIT DATA PORT (0X378) ..............................................................................................................................................3

11.2 5-BIT STATUS PORT (0X379) ...........................................................................................................................................3

11.3 4-BIT CONTROL PORT (0X37A) .......................................................................................................................................3

11.4 GROUND SIGNALS ..........................................................................................................................................................3

11.5 การเขยนโปรแกรมภาษา C รบสงขอมลกบ I/O PORTS ....................................................................................................3

11.6 ความเรวของการรบ/สงขอมลผาน PARALLEL PRINTER PORT ..........................................................................................3

Page 4: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

4

บทท 12 การสงขอมลผาน SERIAL PORT ของ PC............................................................3

12.1 SERIAL INTERFACING..................................................................................................................................................... 3

12.2 HANDSHAKING .............................................................................................................................................................. 3

12.3 ASYNCHRONOUS TECHNIQUES ....................................................................................................................................... 3

12.4 DECODING SERIAL BIT STREAMS AND ERROR DETECTION............................................................................................... 3

เอกสารอางอง.....................................................................................................................3

Page 5: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

5

คาอธบายรายวชา

178 320 Microprocessors and Interfacing

ไมโครโพรเซสเซอรและการตอประสาน

Review of number systems and basic arithmetic operations used in processors. Processor architecture,

instruction sets and addressing mode. Types of electronic memory and their circuit diagram. Input and

output device interfacing, parallel and serial interfacing, synchronous and asynchronous interfacing, as

well as D/A and A/D device interfacing.

ทบทวนระบบตวเลขและการดาเนนงานเลขคณตพนฐานในไมโครโพรเซสเซอร สถาปตยกรรมของไมโคร

โพรเซสเซอรและแบบจาลองการเขยนโปรแกรม เซตคาสงและแบบ วธการกาหนดเลขทอย ชนด

หนวยความจาอเลกทรอนกสและวงจร การจดเรองขดจงหวะ การตอประสานอปกรณรบเขาและสงออก

การตอประสานแบบขนานและอนกรม การตอประสานอปกรณแปลงสญญาณแอนะลอกกบสญญาณ

ดจตอล

Page 6: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

6

บทท 1 บทนา

1.1 ระบบคอมพวเตอร

ความหมายและความเปนมา

เมอพจารณาศพทคาวา คอมพวเตอร ถาแปลกนตรงตวตามคาภาษาองกฤษ จะหมายถงเครองคานวณ

ดงนนถากลาวอยางกวาง ๆ เครองคานวณทมสวนประกอบเปนเครองกลไกหรอเครองไฟฟา ตางกจดเปน

คอมพวเตอรไดทงสน ลกคดทเคยใชกนในรานคา ไมบรรทดคานวณ (slide rule) ซงถอเปนเครองมอ

ประจาตววศวกรในยคยสบปกอน หรอเครองคดเลข ลวนเปนคอมพวเตอรไดทงหมด

ในปจจบนความหมายของคอมพวเตอรจะระบเฉพาะเจาะจง หมายถงเครองคานวณ

อเลกทรอนกสทสามารถทางานคานวณผลและเปรยบเทยบคาตามชดคาสงดวยความเรวสงอยางตอเนองและ

อตโนมต

พจนานกรมฉบบราชบณฑตยสถาน พ.ศ. 2525 ไดใหคาจากดความของคอมพวเตอรไวคอนขาง

กะทดรดวา “เครองอเลกทรอนกสแบบอตโนมต ทาหนาทเสมอนสมองกล ใชสาหรบแกปญหาตาง ๆ ทงท

งายและซบซอน โดยวธทางคณตศาสตร”

เครองคานวณในยคประวตศาสตร

เครองคานวณเครองแรกของโลก ไดแก ลกคด มการใชลกคดในหมชาวจน และใชในอยปตโบราณ

มากวา 2500 ป ลกคดของชาวจนประกอบดวยลกปดรอยอยในราวเปนแถวตามแนวตง โดยแตละแถว

แบงเปนครงบนและลาง ครงบนมลกปด 2 ลก ครงลางมลกปด 5 ลก แตละแถวแทนหลกของตวเลข

เครองคานวณกลไกทรจกกนด ไดแก เครองคานวณของปาสคาลเปนเครองทบวกลบดวยกลไกเฟอง

ทขบตอกน Blaise Pascal นกคณตศาสตรชาวฝรงเศส ไดประดษฐขนในป พ.ศ. 2185

สรปเหตการณทสาคญเกยวกบคอมพวเตอร

ป ค.ศ. เหตการณทสาคญ หมายเหต

2600 BC ลกคด (Abacus) เปนเครองมอประมวลผลขอมลทใชงานมานานหลายพนป ยคแอนะลอก

1500 Leonardo da Vinci คด แตไมไดสราง

1642 Blaise Pascal สรางเครองบวกเลข ทเรยกวา (Pascalline) ทางานเหมอน

เครองนบรอบ

ยคระบบ

จกรกล

1694 Gottfried Wilhelm Leibniz สราง Leibniz calculator ซงถอวาเปนเครองคด

เลขระบบจกรกล (mechanical calculator) เครองแรกของโลกทสามารถ +,

– , * , / และ 2√ ได

1801 Joseph Marie Jacquard ไดประดษฐ Pasteboard card Jacquard-loom ทม

การควบคมลวดลายการทอผาจากการอานตาแหนงเสนดายบนบตรโลหะ

ยคของการม

หนวยความจา

Page 7: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

7

เจาะร ถอวาเปนตนแบบของคอมพวเตอรแบบอตโนมตในยคตอมา

1821 Charles Babbage สราง difference engine ทสามารถคานวณ polynomial ท

ซบซอน และ differential equation ได, ตพมพบทความทางวทยาศาสตร

เกยวกบแนวความคดทใกลเคยงกบคอมพวเตอรในสมยปจจบน

1864 George Boole ไดสรางระบบพชคณตแบบใหม เรยกวา Boolean Algebra

ซงตอมาไดกลายเปนพนฐานทางตรรกศาสตรทใชหาขอเทจจรงและเหตผล

ทเปนเงอนไข ซงสงผลถงแนวคดเกยวกบเลขฐานสอง (Binary Number)

ซงเปนสญลกษณแทนสถานะทางไฟฟาอนเปนพนฐานของระบบดจตอล

คอมพวเตอรดวย

1879 Herman Hollerith ไดสรางเครองนบประชามต (Electrical Census

Counting Machine) โดยใชเครองตรวจจบทางไฟฟาเพออานขอมลจาก

บตร ใชในการเกบขอมลสามะโนครวประชากรของชาวอเมรกาเปนครง

แรก และเปนผกอตงบรษท IBM

ยค

อเลกทรอนกส

และดจตอล

1939 John Atanasoff และ Chifford Berry ไดทดลองสราง electronic digital

computer ขนเปนเครองแรก เรยกวา Atanasoff-Berry Computer: ABC

1944 John W. Mauchly, J. Presper Eckert Jr. และ Dr. John Von Neumann จาก

มหาวทยาลยฮารวารด ไดนาแนวคดของ Babbage มาประยกตสราง

คอมพวเตอรททางานโดยใชระบบไฟฟารวมกบระบบจกรกล (Electro-

mechanical) ทมชอวา Mark I สามารถคณตวเลขขนาด 10 หลกไดภายใน

เวลาไมกวนาท

1945 John von Neumann ไดเขยนบทความเกยวกบ binary coding, การคานวณ

แบบเรยงลาดบ, โปรแกรมทเกบไวในหนวยความจา ซงยงคงเปนรากฐาน

ของคอมพวเตอรในปจจบน

1946 Mauchly และ Eckert จากมหาวทยาลยเพนซลวาเนย ไดสรางคอมพวเตอร

ทใชระบบไฟฟาลวน ทชอวา ENIAC (Electronics Numerical Integrator

And Calculator) ซงใช vacuum tubes

ดจตอล

คอมพวเตอร

เครองแรกของ

โลก

1947 Transistor ถกคนพบโดยทมนกวทยาศาสตรประจา BELL Laboratory ซง

ประกอบดวย John Bardeen, Walter Brattain, และ William Schockley

1950 บรษท Eckert-Mauchly Computer Corporation ไดผลตและจาหนาย

คอมพวเตอรชอ UNIVAC (UNIVersal Automatic Computer) เปนครงแรก

1955 IBM วางตลาดคอมพวเตอรทใช transistor ยค transistors

Page 8: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

8

1957 Robert Noyce กบเพอนอก 7 คน ลาออกจาก Schockley Lab มาอยกบ

Fairchild

1959 Jack Kilby ของ TI จดลขสทธ IC (Integrated Circuit) ตอมาอก 5 เดอน

Robert Noyce กจดดวย (ฟองรองกน วธของ Noyce ดกวา)

1968 Noyce ตง Intel

1969 Marcian Ted Hoff สรางไมโครโพรเซสเซอร (µP)

1971 µP 4004 เรมวางตลาด

1972 µP 8008 เรมวางตลาด

1974 8080, บรษท RCA และ Motorola ออกมารวมดวย

1976

µC (=µP + Mem + IO)

Intel 8048 NS

COP400

µP

Zilog Z80

Intel 8085

Texas TMS9900

1978 Intel 8051

Motorola MC6801

Zilog Z8

Intel 8086

Zilog Z8000

1980 Motorola 68000

ยคของคอมพวเตอร

การพฒนาทงขนาดและประสทธภาพในการประมวลผลของดจตอลคอมพวเตอร สามารถสรปไดเปน 5 ยค

ดงน

• คอมพวเตอรยคท 1 (First Generation Computer: พ.ศ. 2497-2501): ยคของหลอดสญญากาศ

คอมพวเตอรในยคนใชหลอดสญญากาศ (Vacuum tube) เปนวงจรอเลกทรอนกส เครองยงมขนาดใหญมาก

ใชกระแสไฟฟาจานวนมาก ทาใหเครองมความรอนสงจงมกเกดขอผดพลาดงาย คอมพวเตอรในยคนไดแก

UNIVAC I, IBM 600

• คอมพวเตอรยคท 2 (Second Generation Computer: พ.ศ. 2502-2507): ยคของ Transistors

คอมพวเตอรยคนใชทรานซสเตอร (Transistor) เปนวงจรอเลกทรอนกส และใชวงแหวนแมเหลกเปน

หนวยความจา คอมพวเตอรมขนาดเลกกวายคแรก ตนทนตากวา ใชกระแสไฟฟาและมความแมนยามากกวา

• คอมพวเตอรยคท 3 (Third Generation Computer: พ.ศ. 2508-2513): ยคของ IC

คอมพวเตอรยคนใชวงจรไอซ (IC: Integrated Circuit) เปนสารกงตวนาทสามารถบรรจวงจรทางตรรกะไว

แลวพมพบนแผนซลกอน(Silicon) เรยกวา "ชป"

• คอมพวเตอรยคท 4 (Fourth Generation Computer: พ.ศ. 2514-2523): ยคของ LSI

Page 9: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

9

คอมพวเตอรยคนใชวงจร LSI (Large-Scale Integrated Circuit) เปนการรวมวงจรไอซจานวนมากลงในแผน

ซลกอนชป 1 แผน สามารถบรรจไดมากกวา 1 ลานวงจร ดวยเทคโนโลยใหมนทาใหเกดแนวคดในการบรรจ

วงจรทสาคญสาหรบการทางานพนฐานของคอมพวเตอรนนคอ CPU ลงชปตวเดยว เรยกวา "ไมโคร

โพรเซสเซอร"

• คอมพวเตอรยคท 5 (Fifth Generation Computer: พ.ศ. 2524-ปจจบน): ยคของ VLSI และ

portable/pocket computers

คอมพวเตอรยคนใชวงจร VLSI (Very Large-Scale Integrated Circuit) เปนการพฒนาไมโครโพรเซสเซอร

ใหมประสทธภาพมากขน

ประเภทของคอมพวเตอร

การจดแบงประเภทของ เครองคอมพวเตอร จะอาศย

คณสมบตตางๆ เชน ความเรวของการประมวลผล และขนาด

ความจา ของหนวยบนทกขอมล ซงสามารถแบงได เปน 4

ประเภท ไดแก

• Super Computer

• Mainframe Computer

• Mini Computer

• Micro Computer

ทมา: NECTEC’s Web Based Learing

ไมโครโพรเซสเซอร

Computer = CPU (ALU + CU) + Memory + I/O

Microcomputer = MPU + Memory + I/O

MPU = µP = CPU ทมลกษณะเปน single chip (IC เพยงตวเดยว) → วงจรรวม (IC) ททาหนาท

เปนหนวยประมวลผลกลางทสามารถโปรแกรมได

โดยท µP จะถกออกแบบขนมาเฉพาะตามลกษณะของงานทตองการให µP ทางาน ซง µP

สามารถทจะทางานตามคาสงตางๆ ทไดรบการโปรแกรมเขามา

กอกาเนดไมโครโพรเซสเซอร

เมอกอนนน Intel เปนบรษทผลตชปไอซ แหงหนงทไมใหญโตมากนกเทาในปจจบน เมอป ค.ศ.

1969 ไดสรางความสะเทอน ใหกบวงการอเลคทรอนคส โดยการออกชปหนวยความจา (Memory) ขนาด 1

Kbyte มาเปนรายแรก

บรษทบสซคอมพ (Busicomp) ซงเปนผผลตเครองคดเลขของญปนไดทาการวาจางให Intel ทาการ

ผลตชปไอซ ทบสซคอมพเปนคนออกแบบเองทมจานวน 12 ตว โครงการนถกมอบหมายใหนาย M.E. Hoff,

Page 10: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

10

Jr. ซงเขาตดสนใจทจะใชวธการออกแบบชปแบบใหม โดยสรางชปทใหถกโปรแกรมได หมายถงวา

สามารถนาเอาชดคาสงของการคานวณไปเกบไวใน หนวยความจากอนแลวใหไอซตวนอานเขามาแปล

ความหมาย และทางานภายหลง

ในป 1971 Intel ไดนาผลตภณฑออกสตลาด โดยใชชอทางการคาวา Intel 4004 ในราคา 200 เหรยญ

สหรฐ และเรยกชปนวาเปน ไมโครโพรเซสเซอร(Microprocessor) กเพราะวา 4004 นเปน CPU (Central

Processing Unit) ตวหนง ซงมขนาด 4.2 X 3.2 มลลเมตร ภายในประกอบดวยทรานซสเตอรจานวน 2,250

ตว และเปนไมโครโพรเซสเซอรขนาด 4 บต

หลงจาก 1 ปตอมา Intel ไดออก ไมโครโพรเซสเซอร ขนาด 8 บตออกมาโดยใชชอวา 8008 ม

ชดคาสง 48 คาสง และอางหนวยความจาได 16 Kbyte ซงทาง Intel หวงวาจะเปนตวกระตนตลาดทางดานชป

หนวยความจาไดอกทางหนง

เมอป 1973 ทาง Intel ไดออก ไมโครโพรเซสเซอร 8080 ทมชดคาสงพนฐาน 74 คาสงและสามารถ

อางหนวยความจาได 64 Kbyte

ไมโครคอมพวเตอร เครองแรกของโลก

เมอป 1975 มนตยสารตางประเทศฉบบหนง ชอวา Popular Electronics ฉบบเดอนมกราคมไดลง

บทความเกยวกบเครองไมโครโพรเซสเซอรเครองแรกของโลกทมชอวา อลแตร 8800 (Altair) ซงทาออกมา

เปนชดคท โดยบรษท MITS (Micro Insumentation And Telemetry Systems)

ทมา: NECTEC’s Web BasedLlearing

บรษท MITS ถกกอตงเมอป 1969 โดยมจดมงหมายเพอทาตลาดในดานเครองคดเลข แตการคา

ชะลอตวลง ประธานบรษท ชอ H. Edword Roberts เหนการไกลคดเปดตลาดใหมซงจะขายชดคด

คอมพวเตอร ประมาณเอาไววาอาจขายไดในจานวนปละประมาณ 200-300 ชด จงใหทมงานออกแบบและ

พฒนาแลวเสรจกอนถงครสตมาส ในป 1974 แตเพงมา ประกาศตวในปถดไป สาหรบ CPU ทใชคอ 8080

และคาวา ไมโครคอมพวเตอร จงถกเรยกใชเปนครงแรกเพอชดคทคอมพวเตอรชดน

Page 11: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

11

ชดคทของอลแตรนประกอบดวยไมโครโพรเซสเซอร 8080 ของบรษท Intel ม เพาเวอรซพพลาย ม

แผงหนาปดทตดหลอดไฟ เปนแถวมาใหเพอแสดงผล รวมถงหนวยความจา 256 Bytes นอกนนยงม Slot ให

เสยบอปกรณอน ๆ เพมได แตกทาให

MITS ตองผดคาด คอภายในเดอนเดยวมจดหมายสงเขามาขอสงซอเปนจานวนถง 4,000 ชดเลย

ทเดยวดวยชป 8080 นเองไดเปนแรงดลใจใหบรษท Digital Research กาเนดระบบปฏบตการ (Operating

System) ทชอวา CP/M หรอ Control Program for Microcomputer ขนมา ในขณะท Microsoft ยงเพงออก

Microsoft Basic รนแรก

ยค Z80

เมอเดอนพฤศจกายนป 1974 ไดม วศวกรของ Intel บางคนไดออกมาตงบรษทผลตชปเอง โดยมชอ

วา Zilog เนองจาก วศวกรเหลาน ไดมสวนรวมในการผลตชป 8080 ดวยจงไดนาเอาเทคโนโลยการผลตนมา

สรางตวใหมทดกวา มชอวา Z80 ยงคงเปน ชปขนาด 8 บต เมอไดออกสตลาดไดรบความนยมเปนอยางมาก

เนองจากไดปรบปรงขอบกพรองตาง ๆ ทมอยใน 8080 จงทาใหเครองคอมพวเตอร หลายตอหลายยหอ หน

มาใชชป Z80 กน แมแต CP/M กยงถกปรบปรงใหมาใชกบ Z80 นดวย

1.2 ภาษาคอมพวเตอร

มนษยทกวนนสอสารกนดวยภาษาทแตกตางกน ขนอยกบความเปนมาและสภาพแวดลอใของแตละ

ชาต ภาษาทนยมใชสอสารกนในปจจบนน เชน ภาษาองกฤษ ภาษาฝรงเศส ภาษาญปน ภาษาจน และอน ๆ

การสอสารของคอมพวเตอรกมลกษณะเชนเดยวกบการสอสารของมนษย กลาวคอมภาษาทแตกตางกน

จานวนมากทสามารถสงใหคอมพวเตอร ทางานได เชน ภาษาเบสก (BASIC) ภาษาปาสคาล (PASCAL)

ภาษาโคบอล (COBOL) ถงแมวาคอมพวเตอรจะรบคาสงจากภาษาคอมพวเตอรทมโครงสรางแตกตาง

กนไดแตเนองจากคอมพวเตอรเปนอปกรณอเลกทรอนกส ดงนนการรบคาสงในการทางานคอมพวเตอรจะ

รบเปนสญญาณไฟฟาทเรยกวา "ภาษาเครอง" หรอ 1 machine language นนเอง

ประเภทของภาษาคอมพวเตอร

ภาษาทใชในการโปรแกรมคอมพวเตอรมจานวนหลายรอยภาษา แตละภาษากมคณลกษณะโครงสราง

และกฎเกณฑของตนเอง บางภาษาถกพฒนาขนใหทางานกบเครองคอมพวเตอรบางประเภท ในขณะทบาง

ภาษาถกพฒนาใหสามารถทางานเฉพาะอยาง เชน ทางวทยาศาสตรหรอธรกจ

1. ภาษาเครอง (Machine Language)

ภาษาเครองเปนภาษาคอมพวเตอรเพยงภาษาเดยวทสามารถสอสารไดกบคอมพวเตอรโดยตรง ซงใน

บางครงกเรยกกนวาภาษาในยคทหนง

คาสงในภาษาเครองจะเปนชดคาสงทประกอบดวยตวเลขของเลขฐานสอง (binary digits หรอ bits) ทใช

เลข 0 และ 1 เปนสญลกษณแทนสญญาณไฟฟาปดและเปดตามลาดบ และเนองจากคอมพวเตอรสามารถ

สอสารเขาใจกบภาษาเครองไดโดยตรง ดงนนโปรแกรมภาษาเครองจงไมจาเปนตองมตวแปลภาษา ขอเสย

ของโปรแกรมทเขยนดวยภาษาเครองคอ โปรแกรมจะสามารถทางานเฉพาะกบเครองคอมพวเตอรทใช

Page 12: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

12

พฒนาโปรแกรมนนเทานน (machine - dependent) และขอเสยอกประการหนงกคอผเขยนโปรแกรมจะรสก

ยงยากและเบอหนาย ตลอดจนตองใชเวลามากในการพฒนาโปรแกรมดวยภาษาเครอง

2. ภาษาระดบตา (Low-level Language): Assembly

เนองมาจากภาษาเครองยากแกการเขยนโปรแกรม ภาษาในยคทสอง (second-generation language) ท

เรยกวา ภาษาแอสแซมบล จงไดถกพฒนาขน ภาษาแอสแซมบลหรอภาษาสญลกษณ (symbolic

programming language) จะใชรหสและสญลกษณแทน 0 และ 1 ในการเขยนโปรแกรมภาษาแอสแซมบล ม

ขอดหลายประการเมอเทยบกบภาษาทเขยนดวยภาษาเครรอง ตวอยางเชน ภาษาแอสแซมบลจะใชตวยอทม

ความหมาย หรอในบางครงเรยกวานมอนก (mnemonics) ในคาสงเพอเขยนโปแกรม เชน ใช A แทนการ

บวก ใช C แทนการเปรยบเทยบ ใช M แทนการคณ เปนตน ขอดอกประการหนงกคอ ภาษาแอสแซมบล

สามารถเรยนรไดงายและเรวกวาการเขยนโปรแกรมดวยภาษาเครอง (เลข 0 และ 1) นอกจากนผเขยน

โปรแกรมดวยภาษาแอสแซมบลยงสามารถกาหนดชอทเกบขอมลในหนวยความจาเปนคาในภาษาองกฤษ

(แทนทจะเปนเลขทตาแหนงในหนวยความจา) ตวอยางเชน โปรแกรมเมอรสามารถใช PRICE แทนตาแหนง

ทอยของ unit price ซงเดมจะเกบเปนตวเลข เชน 11001011 เปนตน

โปรแกรมทเขยนดวยภาษาแอสแซมบล จาเปนจะตองทาการแปลดวยโปรแกรมแปลภาษาทเรยกวา

แอสแซมบล (assembler) โดยแอสแซมเบลอจะทาหนาทแปลโปรแกรมตนฉบบ (source program) ทเขยน

ดวยภาษาแอสแซมบลให เปนภาษาเครองซงคอมพวเตอรสามารถเขาใจได

ขอด: เหมาะสาหรบงานทตองการความแนนอน และความละเอยด

ประหยดเนอทของหนวยความจา

3. ภาษาระดบสง (High-level Language)

เนองมาจากภาษาเครองและภาษาแอสแซมบล ยงมขอจากดในการนาไปพฒนาโปรแกรม ดงนนจงไดม

การพฒนาภาษาระดบสง (high-level languages) ขน ภาษาระดบสงเปนภาษาทงายตอการเรยนรและการ

นาไปประยกตใชงาน นอกจากนโปรแกรมภาษาทเขยนดวยภาษาระดบสงยงสามารถทางานบนเครอง

คอมพวเตอรตางชนดกนไดดวย (ไมผกตดกบฮารดแวร) ภาษาในยคทสาม(third- generation languages หรอ

3GL) หรอภาษาโพรซเยอร(procedural languages) เปนชดคาสงทมลกษณะเหมอนคาในภาษาองกฤษ เชน

ใชคาสง add เพอสงใหคอมพวเตอรบวก และใชคาสง print เพอสงใหพมพ นอกจากนคาสงในภาษายคทสาม

ยงใชสญลกษณทางคณตศาสตร เชน * แทนการคณ + แทนการบวก เปนตน

เชนเดยวกบภาษาแอสแซมบล โปรแกรมภาษาในยคทสามทถกเขยนขนหรอทเรยกวา โปรแกรม

ตนฉบบ (source code) จงจาเปนจะตองมตวแปลภาษาเพอใหเปนภาษาเครองซงเปนภาษาทคอมพวเตอร

เขาใจได โดยโปรแกรมแปลภาษาระดบสงจะจาแนกเปน 2 ประเภทคอ คอมไพเลอร (compiler) และ

อนเตอรพรเตอร (interpreter) ตวแปลภาษาระดบสงขนอยกบภาษาทใชในการเขยนโปรแกรม

ตวแปลภาษา (Language translator) แบงออกเปน 3 ประเภท

• Assembler เปนตวแปลภาษาแอสแซมบลใหเปนภาษาเครอง

Page 13: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

13

• Compiler คอ ซอฟตแวรทใชในการแปลภาษาระดบสงใหเปนภาษาเครอง (Machine language)

คาสงทใชเขยนในโปรแกรมภาษาระดบสงเราเรยกวา Source code คอมไพเลอรจะทาการแปล

Source code ใหเปนภาษาเครอง เราเรยกวา Object code เพอทาการจดเกบไวเพอนามาใชงาน (Run)

ภายหลง

• Interpreter คอ ซอฟตแวรททาการเปลยนภาษาระดบสงใหเปนภาษาเครองในแตละครงเมอตองการ

ทางาน แตกตางจากคอมไพเลอรททาการแปลครงเดยวสามารถทางานไดตลอด

1.3 ระบบเลขฐานทใชในคอมพวเตอร

เปนททราบกนดวาคอมพวเตอรทางานดวยกระแสไฟฟา ดงนนจงมการแทนทสภาวะของกระแสไฟฟา

ได 2 สภาวะ คอ สภาวะทมกระแสไฟฟา และสภาวะทไมมกระแสไฟฟา และเพอใหโปรแกรมเมอรสามารถ

สงการคอมพวเตอรได จงไดมการสรางระบบตวเลขทนามาแทนสภาวะของกระแสไฟฟา โดยตวเลข 0 จะ

แทนสภาวะไมมกระแสไฟฟา และเลข 1 แทนสภาวะมกระแสไฟฟา

ระบบตวเลขทมจานวน 2 จานวน (2 คา) เรยกวาระบบเลขฐานสอง (Binary Number System) ซงเปน

ระบบตวเลขทสามารถนามาใชในการสงงานคอมพวเตอร โดยการแทนทสภาวะตางๆ ของกระแสไฟฟา แต

ในชวตประจาวนของคนเราจะคนเคยกบตวเลขทมจานวน 10 จานวน คอ เลข 0 - 9 ซงเรยกวาระบบ

เลขฐานสบ (Decimal Number System) ดงนนจงมความจาเปนตองศกษาระบบเลขฐาน ประกอบการ

การศกษาวชาดานคอมพวเตอร

ระบบจานวนทใชในทางคอมพวเตอร ประกอบดวย

• ระบบเลขฐานสอง (Binary Number System) ประกอบดวยตวเลข 0 และ 1

• ระบบเลขฐานแปด (Octal Number System) ประกอบดวยตวเลข 0 - 7

• ระบบเลขฐานสบ (Decimal Number System) ประกอบดวยตวเลข 0 - 9

• ระบบเลขฐานสบหก (Hexadecimal Number System) ประกอบดวยตว เลข 0 - 9 และ A - F

ระบบเลขฐานสบ (Decimal Number System)

ระบบเลขฐานสบ เปนระบบเลขทใชกนในชวตประจาวน ไมวาจะนาไปใชคานวณประเภทใด โดยจะม

สญลกษณทใชแทนตวเลขตางๆ ของเลขฐานสบ (Symbol) จานวน 10 ตว ตวเลขหรอทเรยกวา Digit ทใช

แทนระบบเลขฐานสบ ไดแก 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

ตวเลขแตละตวจะมคาประจาตว โดยกาหนดใหคาทนอยทสด คอ 0 (ศนย) และเพมคาทละหนง จนครบ

จานวน 10 ตว ดงนนคามากทสด คอ 9 การนาตวเลขเหลาน มารวมกลมกน ทาใหเกดความหมายเปน "คา"

นน อาศยวธการกาหนด "หลก" ของตวเลข (Position Notation) กลาวคอ คาของตวเลขจานวนหนง พจารณา

ไดจากสองสงคอ

• คาประจาตวของตวเลขแตละตว

• คาหลกในตาแหนงทตวเลขนนปรากฏอย

Page 14: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

14

ในระบบทวาดวยตาแหนงของตวเลข ตาแหนงทอยทางขวาสด จะเปนหลกทมคานอยทสด เรยกวา Least

Significant Digit (LSD) และตวเลขทอยในหลกซายสดจะมคามากทสด เรยกวา Most Significant Digit

(MSD)

นยาม คาหลกของตวเลขใดๆ คอ คาของฐานยกกาลงดวยคาประจาตาแหนง ของแตละหลก โดย

กาหนดใหคาประจาตาแหนงของหลกของ LSD มคาเปน 0

ในระบบเลขฐานสบ จะมสญลกษณอย 10 อยาง คอ 0 - 9 จานวนขนาดของเลขฐานสบ สามารถอธบาย

ได โดยใชตาแหนงนาหนกของแตละหลก (Positional Weight) โดยพจารณาจากเลข ดงตอไปน

3472 สามารถขยายไดดงน

= 3000 + 400 + 70 + 2 3472

= (3 x 103) + (4 x 102) + (7 x 101) + (2 x 100)

จะเหนวานาหนกตามตาแหนง ของตวเลขตางๆ สามารถขยายตามระบบจานวนได และถกแทนทดวย

สมการ ดงตอไปน

N = dnRn + ... + d3R

3 + d2R2 + D1R

1 + D0R0

เมอ

เลขทเปนเศษสวน หรอจานวนผสมนน กสามารถจะเขยนในรป Positional Notation ไดเชนกน โดย

ตวเลขแตละหลก จะอยในตาแหนงหลงจดทศนยม กาลงของหลก จะมคาเปนลบ เรมจากลบ 1 เปนตนไป

นบจากนอยไปหามาก ดงนนในระบบเลขฐานสบ หลกแรกหลงจดทศนยม จะมคาเทากบ เลขจานวนนนคณ

ดวย 10-1 ตวทสองจะเปน 10-2 ไปเรอยๆ

456.395 = 4 x 102 + 5 x 101 + 6 x 100 + 3 x 10-1 + 9 x 10-2 + 5 x 10-3

กฎการแทนตวเลขนน สามารถนาไปใชกบระบบตวเลขทวๆ ไปได โดยไมคานงวา เลขนนจะเปนฐาน

อะไร

ระบบเลขฐานสอง

ระบบเลขฐานสอง มสญลกษณทใชเพยงสองตว คอ 0 และ 1 ถาเปรยบเทยบเลขฐานสอง กบเลขฐานสบ

แลว คาของหลกทถดจากหลกทนอยทสด (LSD) ขนไป จะมคาเทากบ ฐานสองยกกาลงหมายเลขหลก

แทนทจะเปน 10 ยกกาลง ดงน

เลขฐานสบ เลขฐานสอง

100 = 1 หนวย

20 = 1 หนง

N คอ คาของจานวนฐานสบทตองการ

dn คอ ตวเลขทอยในตาแหนงตางๆ

R คอ ฐานของจานวนตวเลขนนๆ

n คอ คายกกาลงของฐานตามตาแหนงตางๆ

Page 15: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

15

101 = 10 สบ 21 = 2 สอง

102 = 100 รอย 22 = 4 ส

103 = 1000 พน 23 = 8 แปด

ระบบเลขฐานสองเกดจากการใชตวเลขเพยง 2 ตว คอ 0 และ 1 ดงนน สมการคอ

N = ... + (d3 x 23) + (d2 x 22) + (d1 x 21) + (d0 x 20)

เมอ d คอคา 0 หรอ 1 เชน 1101 = (1 x 23) + (1 x 22) + (0 x 21) + (1 x 20)

เพอตดปญหายงยาก ในการแทนคาของเลขระบบตางๆ เรานยมเขยน ตวเลขอยในวงเลบ และเขยนคา

ของฐานนน อยนอกวงเลบ เชน (101101)2 = (45)10

สาหรบเศษสวน จะเขยนคาของเศษสวนอยหลงจด (Binary Point) ยกกาลงเปนลบ เพมขนตามลาดบ ดง

ตวอยาง (0.1011)2 = (1 x 2-1) + (0 x 2-2) + (1 x 2-3) + (1 x 2-4)

การแปลงเลขฐานสองเปนเลขฐานสบ

การแปลงเลขฐานสองเปนเลขฐานสบ มหลายวธ แตทจะแนะนาคอ การกระจายคาประจาหลก จากนน

นามาบวกรวมกนอกครง ผลลพธทไดจะเทากบคาในเลขฐานสบ

ตวอยาง 10111 มคาเทากบเทาไรในระบบเลขฐานสบ

วธทา

(10111)2 = 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 1 x 20

= 16 + 0 + 4 + 2 + 1

= 23

การแปลงเลขฐานสบเปนฐานสอง

การแปลงเลขฐานสบเปนเลขฐานสองกมหลายวธ แตทจะแนะนาคอ การหารดวย 2 แลวจดคาเศษจาก

การหารไว จนกระทงหารไมไดอกแลว จากนนนาเศษ จากการหารแตละครง มาไลลาดบจากลางขนไปหาคา

บนสด ผลลพธทไดจะเทากบคาในเลขฐานสอง

ตวอยาง 2610 มคาเทากบเทาไรในระบบเลขฐานสอง

วธทา หาไดจากวธหารสนดงน

เมอหารไมได ใหนาคาเศษมาเรยงตอกน โดยเรยงจากคาลางสด ไปหาคาบนสด เพราะฉะนนจะได

คาเทากบ 11010

Page 16: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

16

ดงนน 26 (ในฐานสบ) จงมคาเทากบ 110102

การแปลงเลขเศษสวนฐานสอง (Fractional Binary Numbers) ใหเปนฐานสบ

เนอหาทกลาวไปแลว ไดกลาวถงระบบเลขฐาน และการแปลงเลขฐานสองเปนเลขฐานสบ การ

แปลงเลขฐานสบเปนเลขฐานสอง ในสวนของเลขจานวนเตม ในสวนนจะแนะนาการแปลงเลขฐานทเปน

เลขเศษสวน

สมการการแปลงเลขเศษสวนฐานสองเปนฐานสบ คอ

nRn

d....3R3

d2R2

d1R1

dN −++−+−+−=

ตวอยาง ตองการแปลงเลขเศษสวนฐานสอง 0.1011 เปนเลขฐานสบ

พจารณาทละจด

• ตาแหนงแรกของจานวนทระบ (d1) คอ 1 ซงมคายกกาลงฐานสองคอ -1 ดงนนคาประจา

ตาแหนงนคอ 1 x 2-1

• ตาแหนงทสอง (d2) คอ 0 มคายกกาลงฐานสองคอ -2 ดงนนคาประจาตาแหนงคอ 0 x 2-2

• ตาแหนงทสาม (d3) คอ 1 มคายกกาลงฐานสองคอ -3 ดงนนคาประจาตาแหนงคอ 1 x 2-3

• ตาแหนงทส (d4) คอ 1 มคายกกาลงฐานสองคอ -4 ดงนนคาประจาตาแหนงคอ 1 x 2-4

สามารถเขยนสมการไดคอ

102

43

6875.0 0.1011

0625.0 125.0 0 5.0 2

1

2

1 0

2

1

421 321 220 121 N

=+++=

+++=

−×+−×+−×+−×=

การแปลงเลขหลงทศนยม (เศษสวน) ฐานสบ (Fractional Decimal Numbers) ใหเปนฐานสอง

การเปลยนเลขหลงทศนยมฐานสบ ใหเปนฐานสอง จะใชวธการนาคาเลขหลงทศนยมตง แลวคณ

ดวยสอง จากนนนาผลลพธทไดเปนตวตงในการคณครงตอไป จนกวาคาผลลพธสวนทเปน เลขหลงทศนยม

เทากบ .00 กรณทคณแลวไมลงตวเทากบ .00 กใหคณจนไดคาทตองการ สดทายนาคาตวเลขกอนทศนยม

จากผลลพธแตละครง มาเขยนเรยงตอกน กจะไดคาฐานสองทตองการ ดงตวอยาง

ตวอยาง ตองการแปลงเลข (0.65625)10 เปนเลขฐานสอง

พจารณาทละจด

นา 0.65625 คณดวย 2 ไดคาเทากบ 1.31250

• คา 1 (เลขกอนทศนยม) จะเปนคาหลกแรกของคาเลขฐานสอง

• นา .31250 (เลขหลงทศนยม) ไปเปนตวตงในการคณครงถดไป

นา 0.31250 คณดวย 2 ไดคาเทากบ 0.62500

• คา 0 (เลขกอนทศนยม) จะเปนคาหลกทสองของคาเลขฐานสอง

Page 17: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

17

• นา .62500 (เลขหลงทศนยม) ไปเปนตวตงในการคณครงถดไป

นา 0.62500 คณดวย 2 ไดคาเทากบ 1.25000

• คา 1 (เลขกอนทศนยม) จะเปนคาหลกทสามของคาเลขฐานสอง

• นา .25000 (เลขหลงทศนยม) ไปเปนตวตงในการคณครงถดไป

นา 0.25000 คณดวย 2 ไดคาเทากบ 0.50000

• คา 0 (เลขกอนทศนยม) จะเปนคาหลกทสของคาเลขฐานสอง

• นา .50000 (เลขหลงทศนยม) ไปเปนตวตงในการคณครงถดไป

นา 0.5000 คณดวย 2 ไดคาเทากบ 1.00000

• คา 1 (เลขกอนทศนยม) จะเปนคาหลกทหาของคาเลขฐานสอง

• เนองจากเลขหลงทศนยมเทากบ .00000 จงไมตองคณตอ

นาเลขกอนทศนยมของการคณแตละครง มาเขยนเรยงกน จะไดคาเทากบ 10101 ดงนนเลขทศนยม

ฐานสบ 0.65625 จะเทากบ 0.10101 ในฐานสอง

การแปลงเลขฐาน 10 เปนฐาน 8 และฐาน 16

การแปลงเลขฐาน 10 เปนเลขฐาน 8 และเลขฐาน 16 มลกษณะเดยวกบการแปลงเปนเลข

ฐาน 2 โดยใชคาฐานไปหารเพอหาเศษ ตวอยาง

ตองการแปลง 169 เปนเลขฐาน 8 กระทาไดโดย

8 หาร 169 เทากบ 21 เศษ 1

8 หาร 21 เทากบ 2 เศษ 5

8 หาร 2 ไมสามารถหารได เศษ 2

ดงนน 169 เทากบ 2518

ตองการแปลง 169 เปนฐาน 16 กระทาไดโดย

16 หาร 169 เทากบ 10 เศษ 9

16 หาร 10 ไมสามารถหารได เศษ 10

แตเนองจาก 10 เปนคาทแสดงดวย A

ดงนน 169 เทากบ A916

การแปลงเลขฐาน 8 หรอ 16 เปนฐาน 10 กใชวธเดยวกบการแปลงเลขฐาน 2 เปนฐาน 10 ดง

ตวอยางทแนะนาไปกอนแลว

ระบบตวเลขกบรหสขอมล

Page 18: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

18

รหสขอมล (Data Representation) หมายถง รหสทใชแทนตวเลข ตวอกษร สญลกษณตางๆ ท

ประกอบอยในคาสง และขอมล เพอใชในการประมวลผล สามารถแบงได 2 ประเภทคอ

• รหสภายในระบบคอมพวเตอร (Internal Code) เปนรหสทใชแทนขอมลในหนวยความจาของ

คอมพวเตอร เชน

o รหส BCD - Binary Code Decimal

o รหส EBCDIC - Extended Binary Coded Decimal Interchange Code

o รหส ASCII - American Standard Code for Information Interchange

o รหส Unicode

• รหสภายนอกระบบคอมพวเตอร (External Code) เปนรหสทพฒนาสาหรบบนทกขอมลนอกเครอง

คอมพวเตอร เชนรหสทใชกบบตรเจาะร

บต (Bit)

สภาวะไฟฟา 1 เสน หรอคา 0 หรอ 1 แตละคาเรยกวา บต (Bit) ซงเปนคายอของ "BInary digiT"

ไบต (Byte)

กลมของบตทมความหมายเฉพาะเรยกวา ไบต (Byte) ดงนนถามสายสญญาณ 8 เสน แสดงวามสญญาณ

ทสามารถผสมผสานกนได 8 บต เมอนาคาสญญาณตางๆ มาผสมผสานกน กสามารถสรางรหสแทนขอมล

ได จานวน 28 = 256 คา เปนตน ดงตวอยางในตารางทแสดงอกขระ, การเรยงกนของบต และคาเลขฐาน 10

ทแทนอกขระ

ดงนนถาตองการปอนคาวา Hello จะมคาเทากบขอมลจานวน 6 ไบต ซงมกจะไดยนวา 1 ไบต เทยบ

กบ 1 ตวอกษรนนเอง

Binary Code Decimal (BCD)

BCD เปนรหสขอมลทประกอบดวยเลขฐานสอง 6 บต แทนขอมล 1 อกขระ (1 Character) จง

สามารถสรางรหสขอมลไดจานวน 26 = 64 รหส

รหสทง 6 บต แบงไดเปน 2 กลม โดย 2 บตแรกเรยกวา Zone Bit และ 4 บตถดไปเรยกวา Numeric

Bit

Extended Binary Coded Decimal Interchange Code (EBCDIC)

EBCDIC เปนรหสแบบ 8 บต โดยใชเลขฐานสอง 8 ตวแทนขอมล 1 อกขระ ทาใหสามารถสราง

รหสได 256 รหส (28) และยงสามารถใชเลขฐาน 16 มาใชแสดงรหสขอมลไดเชนกน เปนระบบการลงรหสท

พฒนาโดย IBM เนองจากพฒนาจาก IBM ทาใหเปนรหสทเดนกวา ASCII เมอนาไปใชกบบตรเจาะร

(Punched cards) ตงแตป 1960 อกทงยงมอกขระ "cent sign" ซงไมมใน ASCII

American Standard Code for Information Interchange (ASCII)

Page 19: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

19

ASCII เปนรหสทนยมใชกนอยางแพรหลายในปจจบน พฒนาโดยสถาบนมาตรฐานแหงชาต

สหรฐอเมรกา (American National Standard Institute: ANSI) ประกอบดวยเลขฐานสอง 7 บต (ปจจบนใช 8

บต) เรยกวา 1 ไบต (Byte) แทนอกขระ 1 ตว ซงเปนรหสทนยมใชกนบนคอมพวเตอรระบบ PC ทงนได

แบงเปน 3 ชดคอ

• 32 ชดแรก (ตาแหนงท 0 - 31) แทนรหสควบคมตางๆ

• ตาแหนงท 32 - 127 แทนอกขระภาษาองกฤษ ตวเลขและสญลกษณตางๆ เรยกวา Lower ASCII

• 128 ชดหลง (ตาแหนงท 128 - 255) แทนอกขระในภาษาตางๆ เชน อกขระภาษาไทย เปนตน ทาให

คอมพวเตอรสามารถรบ/สงขอมลภาษาอนๆ ได เรยกวา Higher ASCII

Page 20: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

20

บทท 2 ระบบไมโครคอมพวเตอร

2.1 ระบบไมโครคอมพวเตอรพนฐาน

ระบบไมโครคอมพวเตอรโดยพนฐานประกอบไปดวยองคประกอบ 3 สวนดวยกนคอ

• หนวยประมวลผลกลาง หรอ CPU (Central Processing Unit)

• หนวยความจา

• สวนทตดตอกบอปกรณ input/output

นอกจากองคประกอบหลกทง 3 สวนนแลว ยงตองมสวนสาคญทเปนตวเชอมโยงทกสวนใหทางาน

รวมกนนนกคอ ระบบเสนทางในการตดตอสอสารขอมล ดงแสดงในรปท 2.1

รปท 2.1 ระบบไมโครคอมพวเตอรพนฐาน

หนวยความจา (Memory) ทาหนาทเกบคาสงและขอมลในรปของเลขฐานสอง หนวยความจานสามารถ

แบงออกไดเปน 2 ประเภทใหญ คอ

1. หนวยความจาหลก (Main Memory) เชน ROM (Read-Only Memory) และ RWM (Read/Write

Memory)

2. หนวยความจาเกบขอมล (Storage Memory) เชน แผนดสก และ ฮารดดสก

โดยท

ROM เปนหนวยความจาทสามารถอานไดอยางเดยว ไมสามารถเปลยนแปลงขอมลภายในได จง

ใชสาหรบเกบขอมลทไมตองการการเปลยนแปลง โดยทวไปขอมลทอยภายใน ROM จะไดรบการเขยน

บนทกจากโรงงาน ซงมกจะเปนโปรแกรมทสาคญเพอใหระบบเรมตนทางานเฉพาะอยาง

แบงออกเปนหลายตาแหนง 64K → >4G

CPU ทาตามคาสงเสมอ

แสดงทศทางของขอมล

แบงออกเปนหลาย ๆ ตาแหนง (256 → 1024)

I/O Space อาจใชพนทบางสวนของ Memory

space กได ซงเรยกวา memory-mapped I/O

ROM

RWM

Memory

ALU

Control

Unit

Registers

I/O

CPU

data

data

data

Page 21: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

21

RWM หรอทนยมเรยกกนวา RAM (Random Access Memory) เปนหนวยความจาทสามารถทง

อานและเขยนได ใชสาหรบเกบโปรแกรมและขอมลทวๆไปของผใช โดยทหนวยความจาประเภทนม

ลกษณะเปนแบบ volatile คอขอมลจะสญหายไปจากหนวยความจาเมอไมมไฟเลยงระบบ

อปกรณ input: ทาหนาทถายโอนขอมลทอยในรปของเลขฐานสอง จากภายนอก เขามายง CPU

อปกรณ output: ทาหนาทถายโอนขอมลทอยในรปของเลขฐานสอง จาก CPU ออกสภายนอก

อปกรณอนพตอยางเดยว - แปนพมพ, เมาส, สวทช, …

อปกรณเอาทพตอยางเดยว - เครองพมพ, จอภาพ, หลอดไฟ LED, …

อปกรณทเปนทงอนพตและเอาทพต - secondary storage, communication devices

(harddisk drives, floppy disk drives, tapes)

ระบบสายสญญาณ (Bus System)

สายสญญาณในการตดตอสอสารขอมลระหวางวงจรและอปกรณตางๆ ททางานรวมในระบบไม

โครโพรเซสเซอรม 3 ประเภท คอ

• Address Bus: ทางานไดทศทางเดยว ใชในการกาหนดตาแหนงทใชในการตดตอระหวางวงจร

และอปกรณตางๆ ทตอและทางานรวมกบ CPU ตามปกต address bus นจะถกกาหนดเปน A0 ถง

An โดย n เปน MSB (Most Significant Bit) ของ address bus นน

• Control Bus: ใชควบคมการตดตอกบวงจรและอปกรณตางๆ ทตอรวมกบ CPU โดย CPU จะ

สงสญญาณควบคมออกไปเพอกาหนดการตดตอใหอปกรณทตอรวมทราบ

• Data Bus: ใชในการรบและสงขอมล ทางานไดสองทศทาง โดยจะทางานหลงจาก address bus

และ control bus ไดกาหนดตาแหนงและการตดตอสอสารแลว เพอเปนการสงขอมลถงกน

เชนกนตามปกต data bus นจะถกกาหนดเปน D0 ถง Dn โดย n เปน MSB (Most Significant

Bit) ของ data bus นน โดยทเราจะเรยกประเภทของไมโครโพรเซสเซอรตามขนาดของ data bus

ดงน ไมโครโพรเซสเซอร 8 บต เชน ไมโครโพรเซสเซอร Z80 เนองจากม data bus ขนาด 8 บต

เปนตน

2.2 หนวยประมวลผลกลาง

หนวยประมวลผลกลาง (Central Process Unit: CPU) เปนสวนสาคญทสดของระบบไมโคร

โพรเซสเซอร โดยมวงจรควบคมใหการทางานเปนไปตามคาสง สวนประกอบหลกภายในวงจร CPU คอ

• หนวยคานวณทางตรรกะและคณตศาสตร (Arithmetic and Logic Unit: ALU) ทสามารถคานวณ

ไดทงตวเลขและตวอกษร โดยการประมวลผลในสวนของ ALU ทสาคญจะประกอบดวย การ

บวก (add), การลบ (subtract), ลอจก AND, ลอจก OR, ลอจก EX-OR, เปรยบเทยบ (compare),

Page 22: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

22

การเลอนบตทางซายหรอขวา, การเพมคา (increment), การลดคา (decrement), การเซทบต (set

bit), การรเซทบต (reset bit), การทดสอบบต (test bit)

• หนวยควบคม (Control Unit) ททาหนาทควบคมการทางานภายในใหปฏบตตามคาสงทกาหนด

• วงจรหนวยความจาภายในหรอ register ททาหนาทเกบคาตวแปรตางๆ ทใชในการคานวณและ

ผลลพธทไดจากการคานวณ ดงแสดงในรปท 2.2

รปท 2.2 ระบบไมโครโพรเซสเซอรพนฐาน

การทางานของ CPU มอยดวยกน 3 ลกษณะหลกๆ คอ

อานคาสง (fetch an instruction)

แปลคาสง (decode the instruction)

ทางานตามคาสง (execute the instruction)

รปท 2.3การทางานพนฐานของ CPU

• Fetch: CPU ทาการอานคาสงทเปนเลขฐานสองจากหนวยความจา

• Decode: CPU ทาการแปลหรอถอดรหสของคาสงทอานมา เพอหาวาเปนคาสงประเภท

ไหน มการทางานอยางไร รวมทงตองมการตดตอกบสวนอนๆ เชน หนวยความจาหรอ I/O บาง

หรอไมอยางไร

• Execute: CPU นาคาสงนนไปปฏบต โดยการทางานตางๆ ในขนตอนน จะขนอยกบวา

คาสงทไดจากการถอดรหสเปนอะไร และมการตดตอกบสวนใดบาง ซงแตละคาสงจะมจานวน

รหสเทาไรนนกขนอยกบชนดของ CPU เชน Z80 จะมขนาดตงแต 1-4 bytes สวน MCS-51 จะม

ขนาดตงแต 1-3 bytes เปนตน

Page 23: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

23

การทางานของ CPU อาจเลอมกนไดแบบ pipelining

Pipeline คอการทางานแบบคาบเกยวกน (overlap) โดยการแบง CPU ออกเปนสวนยอย ๆ แลวแบงงาน

กนรบผดชอบ โดยเดมท pipeline เปนเทคนคของสถาปตยกรรมแบบ RISC (Reduced Instruction Set

Computer) ตอมานามาใชกบสถาปตยกรรมแบบ CISC (Complex Instruction Set Computer) ซงการ

ทางานของระบบทม pipeline นนกคอ จะสามารถรบงานใหมไดในขณะทยงคงทางานเกาตอไปไดดวย

จากรปจะเหนวา ขนตอนการทางานของแตละคาสงแบงการทางานออกเปน 5 ขนตอน ซง

สามารถแยกการทางานออกจากกนเปนขนตอนได เมอคาสงแรกทา task#1 เสรจจะเขาสขนตอน task#2

ซงใน cycle น ในสวนททา task#1 จะวาง คาสงตอไปสามารถทา task#1 ไดเลย โดยไมตองรอใหคาสง

แรกทางานจนเสรจถงขนตอน task#5 ซงจะทาใหการทางานเรวขนถงประมาณ 5 เทาจากปกต ดงรปท 2.4

รปท 2.4 Pipelining

Z80 ทางานแบบธรรมดา ไมม pipeline

2.3 สถาปตยกรรมของไมโครโพรเซสเซอร

หมายถง โครงสรางและการทางานของไมโครโพรเซสเซอรอยางกวางๆ ความหมายไมไดจากด

อยเฉพาะภายในไมโครโพรเซสเซอรแคนน แตอาจรวมถงฮารดแวรและซอฟตแวรภายนอกทใชงานกบ

ไมโครโพรเซสเซอรกได

ไมโครโพรเซสเซอรแตละเบอรจะมสถาปตยกรรมทตางกน โดยทวไปเราจะเปรยบเทยบไมโคร

โพรเซสเซอรใน องคประกอบหลกตอไปน

1. ขนาด data word → ยงใหญ ยงเรว

2. ขนาด address bus → ยงใหญ ยงมหนวยความจามาก

3. ความเรว

องคประกอบรองทใชในการเปรยบเทยบ เชน

1. ม register กตว มชนดอะไรบาง

2. จานวนคาสง และชนดของคาสง

3. วธการทคาสงอางถงขอมล (addressing modes) มกวธ อะไรบาง

4. วงจรหรออปกรณประกอบมอะไรบาง

Page 24: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

24

2000H 07

2001H 11

2002H 30

LD A, (3011H)

2003H 1A ← NEG

2004H B1

2005H 10

2006H 30

LD (3010H), A

แปลงมาเปน machine code

โดย computer

3010H ← Ch1

PC →

(Program Counter)

3011H ← Ch2

Page 25: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

25

บทท 3 สถาปตยกรรมของไมโครโพรเซสเซอร Z80

ทาไมตองเปน Z80: Z80 เปนไมโครโพรเซสเซอรทมโครงสรางงายตอการเรยนรและการจดวงจรแตละขา

ของตวไมโครโพรเซสเซอรมหนาทเดยว ไมซบซอน ผทเรมตนศกษา Z80 จะเกดความรสกวา การเรยนรไมโคร

โพรเซสเซอรไมใชเรองยาก

โครงสรางของไมโครโพรเซสเซอร Z80 มโครงสรางทพฒนามาจาก 8080 ดงนนในแงโครงสรางพนฐาน

จะ เหมอนกบ CPU 8080 แตเนองจาก Z80 มการพฒนามากขนทางซอฟตแวรและฮารดแวรจงทาใหมรายละเอยด

แตกตางเพมเตมอกหลายประการดวยกน

3.1 ขาสญญาณบน Z80

Z80 เปน IC ขนาด 40 ขา แบบ DIP (Dual Inline package) ดงแสดงในรปท 3.1 โดยมโครงสรางภายใน

และตาแหนงของขาตางๆ ดงตอไปน

รปท 3.1 Z80 Microprocessor Pin layout

หนาทของขาสญญาณบน Z80

จากรปท 3.1 ขาและสญญาณตางๆของ Z80 สามารถแบงออกไดเปน 6 กลมดงในรปท 3.2 คอ

1. Address bus

2. Data bus

3. Control signals

4. External requests

5. Request acknowledge และ Special signals

6. Power และ Frequency signals

A10 A9 A8 A7

A6 A5

A4 A3 A2 A1 A0 GND RFSH

1M

RESET BUSRQ

WAIT BUSAK WR RD

A11 A12 A13 A14

A15 φ

D4 D3 D5 D6

+5 V D2 D7 D0 D1

INT NMI

HALT MREQ

IORQ

Z80

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Page 26: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

26

รปท 3.2 Z80 Microprocessor Logic Signals

โดยรายละเอยดของขาและสญญาณตางๆ มดงน

Address Bus:

สายสญญาณ tri-state ซงเปนสายสญญาณทมทศทางเดยว (unidirectional) 16 สญญาณ (A15- A0) ใชใน

การสงตาแหนงของ memory registers หรอ อปกรณ I/O ตางๆ ซงจะสามารถอางไดถง 64k (216) ตาแหนง

Data Bus:

สายสญญาณ tri-state ซงเปนสายสญญาณทม 2 ทศทาง (bidirectional) 8 สญญาณ (D7- D0) ใชในการ

โอนยายขอมล โดยในขอมลสามารถเคลอนทในทศทางใดกไดในแตละสายสญญาณคออาจจะเปนจากไมโคร

โพรเซสเซอรไปยง memory หรออปกรณ I/O ตางๆ หรอในทางกลบกนคอจาก memory หรออปกรณ I/O ตางๆ

ไปยงไมโครโพรเซสเซอร

Control และ status signals:

• 1M - Machine cycle one: ขาสญญาณท active low โดยจะ active เมอ opcode ถก fetch จาก memory

• MREQ - Memory request: ขาสญญาณ tri-state ท active low โดยจะ active เมอมการ read/write กบ memory

โดยเปนการบอกวา คาตาแหนงของขอมลใน memory ทตองการ read/write ไดอยท address bus แลว

• IORQ - I/O request: ขาสญญาณ tri-state ท active low โดยจะ active เมอมการ read/write กบ I/O โดยเปน

การบอกวา คาตาแหนงของขอมลของ I/O ทตองการ read/write ไดอยท low-order address bus (A7 - A0) แลว

• RD - Read: ขาสญญาณ tri-state ท active low โดยจะ active เมอมการ read จาก memory หรอ I/O

• WR - Write: ขาสญญาณ tri-state ท active low โดยจะ active เมอมการ write จาก memory หรอ I/O

External Requests :

• RESET - Reset: ขาสญญาณท active low โดยเปนการ reset CPU ซงจะตอง active อยางนอย 3 clock

periods เพอ clear คา PC, R, I โดยทระหวาง reset สายสญญาณตางๆ จะไม active

Address Bus

A15

A0

D7

D0

1M

MREQ

IORQ

WR RD

+5 V GND φ INT NMI WAITRESET BUSRQ

BUSAK RFSH HALT

Data Bus

Control Signals

Request cknowledge

และ Special Signals

External Requests

Power Clock

Ground

Page 27: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

27

• INT - Interrupt request: (level-sensitive) ขาสญญาณท active low เพอขอขดจงหวะการทางานของ CPU

รบการขดจงหวะ (interrupt acknowledge) จะมสญญาณ IORQ ในชวง M1 ดวย

• NMI - Nonmaskable interrupt: (edge-sensitive) ขาสญญาณท active low ถาสญญาณน active จะขดจงหวะ

การทางานของ CPU ไมสามารถจะ disable ได ใชสาหรบการทางานฉกเฉน

• BUSAK - Bus acknowledge: ขาสญญาณท active low โดยจะ active เพอแสดงวา CPU ตอบรบ BUSRQ

• WAIT - Wait: ขาสญญาณท active low โดยเปนสญญาณทขอให CPU คอยกอน

Request Acknowledge และ Special Signals:

• HALT - Halt: ขาสญญาณท active low โดยเปนสญญาณแสดงวา CPU อยในสถานะ halt

• RFSH - Refresh: ขาสญญาณท active low โดยจะ active เมอ CPU จะทาการ refresh DRAM

• BUSRQ - Bus request: ขาสญญาณท active low โดยอปกรณภายนอกจะสงสญญาณนเพอขอควบคม bus เอง

Clock และ Power Supply:

• φ - Clock: ตอกบแหลงความถภายนอก เนองจาก Z80 ไมมวงจรนาฬกาภายในตว chip

• +5V - Power supply: แหลงจายไฟเลยงระบบ (ควรม Capacitor ชนด tantalum ตอครอม power supply)

• GND - Ground: ขาสายดน

3.2 รจสเตอรบนไมโครโพรเซสเซอร Z80

สวนของไมโครโพรเซสเซอรทเกยวของกบการเขยนโปรแกรม ซงไดแก รจสเตอร (register) ทผเขยน

โปรแกรมสามารถใชงานได โครงสรางภายในของไมโครโพรเซสเซอร Z80 ประกอบดวย รจสเตอรภายในท

สามารถเขยนและอานไดถง 208 บต โดยแบงไดเปนกลมของรจสเตอรขนาด 8 บต 18 รจสเตอรและรจสเตอร

ขนาด 16 บต อก 4 รจสเตอร

รจสเตอรใน Z80 เมอแบงตามหนาทสามารถแบงไดเปนดงน

กลมรจสเตอรหลก (Main Registers)

รจสเตอรในกลมแรก คอ A, B, C, D, E, H, L และ F เปนรจสเตอรขนาด 8 บต ทใชงานทวไปโดย

รจสเตอร เหลานสามารถประกอบรวมกนเปนครจสเตอรได คอ AF, BC, DE และ HL โดยครจสเตอรเหลานไดรบ

การใชงานในลกษณะของรจสเตอร ขนาด 16 บต การกระทาภายใน CPU อาจจะอาศยเพยงรจสเตอรเดยวหรอ

กระทาเปนครจสเตอรได รปท 3.3 แสดงใหเหนถงทงรจสเตอรหลกและรจสเตอรรอง (ซงจะกลาวตอไป) ทมอยใน

Z80 โดยท A คอ Accumulator และ F คอ flag ซงมลกษณะพเศษเฉพาะ จงขออธบายรายละเอยดของรจสเตอรทง

สองตวนเพมเตมดงน

Accumulator และ Flag register

CPU จะมรจสเตอรทใชเปนหลกในการ เปนตว operand สาหรบกระทาทางคณตศาสตรและลอจก โดย

รจสเตอรหลกนจะมเพยง 8 บต เรยกวา accumulator การกระทาในสวนของหนวยคณตศาสตร และทาง

ตรรกศาสตรยอมเกดเงอนไขไดหลายอยางทจะตองแสดงสถานะภาพของเงอนไขเหลานน เชน เงอนไขผลลพธ

Page 28: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

28

เปนศนยผลลพธเปนบวกหรอลบมตวทดหรอตวขอยมในการกระทา ทางคณตศาสตร แสดงเงอนไข parity คหรอค

สงเหลานจะใหผลลพธแสดงสถานะ ไดดวย flag

Main Register Alternate Register การเรยกใช register pairs

A F A′ F′

B C B′ C′

D E D′ E′

H L H′ L′

8 บต

8 บต

AF, BC, DE, HL

16 บต

A - Accumulator เปน register ทใชบอย โดยเฉพาะคาสงทเกยวของกบการคานวณ

F - Flag register บอกสถานะของผลลพธจากการทาคาสงทเกยวของกบการคานวณ

สวนทเหลอ - General purposed register

รปท 3.3 กลมรจสเตอรหลกและสารองขนาด 8-bit ของไมโครโพรเซสเซอร Z80

Flag ของ Z80 จะมดวยกนทงหมด 6 ตว จงใชเพยง 6 บต แต Z80 อาศยการเพมบตขนอก 2 บต และกลาย

เปน register F ซงมขนาด 8 บต รปท 3.4 แสดงถงโครงสรางภายในของแตละบตใน flag register โดยทรายละเอยด

ของแตละบตจะมแสดงอยในตารางท 3.1

รจสเตอร F นสามารถไดรบการ set, reset, การกระทาตามคาสงทางคณตศาสตร หรอ ทางตรรกศาสตรได

และเราสามารถใช F เหมอนรจสเตอรหนง ซงเมอรวมกบ accumulator (A) แลว จะกลายเปนรจสเตอรขนาด 16บต

ได โดยทคนเขยนโปรแกรมยงสามารถใชคาสงในการเคลอนยายขอมลจาก accumulator (A) และ flag register (F)

ไปเกบไวใน A' และ F' ได เพอทาใหการใชงาน ของ A และ F มประสทธภาพดยงขน

7 6 5 4 3 2 1 0

Flag register S Z X H X P/V N C

รปท 3.4 Flag Register ของไมโครโพรเซสเซอร Z80

0 - ถา bit ท 7 ของผลลพธเปน 0 S sign flag

1 - ถา bit ท 7 ของผลลพธเปน 1 ใชกบ signed number

0 – ถาผลลพธ ≠ 0 Z zero flag

1 – ถาทก bit ของผลลพธ เปน 0

Page 29: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

29

0 – ถาไมมการทด/ยมระหวาง bit บน-ลาง H half carry flag

1 - ถามการทด/ยมระหวาง bit บน-ลาง

0 – ถาไมเกด overflow

1 - ถาเกด overflow

กรณ overflow

(สาหรบ signed number)

0 – ถาจานวน bit ทเปน 1 เปนเลขค P/V parity/overflow

1 - ถาจานวน bit ทเปน 1 เปนเลขค กรณ parity

0 – ถาเปนคาสงประเภท add N add/subtract

1 - ถาเปนคาสงประเภท subtract

0 - ถาไมมการทด/ยม ท bitท 7 หรอ bit ท 15 C Carry flag

1 – ถามการทด/ยม ท bit ท 7 หรอ bit ท 15 เสมอนเปน bit ท 8 หรอ 16

ตารางท 3.1 รายละเอยดของแตละบตใน Flag Register

บางคาสงมผลตอ carry flag โดยตรง เชน

SCF - set carry flag

CCF - complement carry flag Note: ไมมคาสงท reset carry flag

คาสงประเภท rotate และ shift กมผลตอ carry flag ไดดวย

กลมรจสเตอรสารอง (Alternate Register)

รจสเตอรชดนเปนรจสเตอรทใชในการเกบขอมลชวคราว โดยเปนตวเกบขอมลทมาจากรจสเตอรหลก ใน

การทตองการใชรจสเตอรหลกทางานอยางอนกอน ดงนนรจสเตอรกลมนจงไมสามารถกระทาทางคณตศาสตร

และทางตรรกศาสตรได รจสเตอรเหลานมดวยกน 8 ตว คอ A', B', C', D', E', H', L' และ F’

กลมรจสเตอรทใชงานเฉพาะอยางขนาด 16 บต

นอกเหนอจาก Accumulator และ Flag register ทมหนาทเฉพาะอยางแลว Z80 ยงปบระกอบไปดวย

register ทมหนาทเฉพาะอยางอนๆ อก ซงมขนาด 16 บต (ในขณะท A และ F ตางกมขนาดเพยง 8 บต) คอ

Program counter (PC) เปนรจสเตอรขนาด 16 บต ทเปนตวกาหนดตาแหนงของโปรแกรมในขณะสภาวะ

การกระทาการ fetch โดยขณะทา การ fetch คาทอยใน PC จะไปปรากฏอยท address bus เพอชไปยงตาแหนงใน

หนวยความจา ให CPU อานคาสงมาตความหมายคาทอยใน PC จะเพมคาขนไดอยางอตโนมต หลงการกระทาการ

fetch แตถาหาก CPU กระทาคาสงใหขามไปยงตาแหนงอน (Jump) คา address ทจะกระโดดขามนนจะโหลดเขา

มายง PC ไดอยางอตโนมต

Stack pointer (SP) เปนรจสเตอรทมขนาด 16 บตทใชสาหรบชไปยง address ชนบนสดของ stack ทอยใน

RAM โดยสวนของ stack มลกษณะโครงสราง เปนหนวยความจา เปนแบบเกบทหลงเรยกออกกอน (last-in-first-

out) ขอมลใน stack อาจไดรบการ push หรอ pop มาจาก รจสเตอรภายใน CPU ลกษณะของ stack ในทนยงเปน

สวนชวยในการกระทา interrupt และการเรยก โปรแกรมยอย กลาวคอ ในการ interrupt คาของโปรแกรม

Page 30: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

30

เคานเตอรจะไดรบการรกษาไวในชน stack ครนเมอโปรแกรมกลบจาก interrupt ไปกระทายงโปรแกรมหลกกจะ

นาคาจาก stack กลบเขามายง PC ใหม ในทานองเดยวกน การกระโดดไปกระทายงโปรแกรมยอยกเชนเดยวกน

ดงนน การกระทาในรปของ interrupt ของ โปรแกรมยอยสามารถ ซอนกนไดไมมสนสด

Index Register (IX, IY) Z80 ม index register ขนาด 16 บตอย 2 ตว แตละตวใชประโยชนหลกในการทา

หนาทเปนตวเกบ base address เพอ ทาหนาทอาง address แบบ index addressing ซงใน mode นซงมขอมลทอยใน

index register นจะใชรวมกบขอมลทตดมากบคาสง (operand) อก 8 บต เพอเปนตวกาหนด address ใหกบคาสง

ขอมลทตดมากบคาสงนเราเรยกวา displacement ซงจะเกบในรปของตวเลข 2's complement

Interrupt page address register (I) การ interrupt ของ Z80 มดวยกนอยหลาย modes และ mode หนงททา

ใหการ interrupt ของ Z80 มประสทธภาพสง กลาวคอ เมอเกดการ interrupt ใน mode นขน มนสามารถอางถง

address โดยทางออม ไปทางานในทใดกไดในหนวยความจา โดยอาศยคาในรจสเตอร I นซงมขนาดเพยง 8 บต

รวมกบคาทสงมาจากอปกรณ peripheral อก 8 บต ชไปยงคาในหนวยความจาเพอนาคานนมา load เขาใน PC เพอ

ทางานตอไป ดวยวธการนเราจงสามารถกระโดดเขาไปทาทสวนใดกไดในหนวยความจา

Memory refresh register (R) การตอไมโครโพรเซสเซอรกบหนวยความจานน โดย ปกตจะตอกบ

หนวยความจาชนด static ไดโดยงาย แตชนด dynamic ทตองการการ refresh มราคาถกกวามความหนาแนนสงกวา

Z80 ใหขอดกวาประการหนงคอมนสามารถใหการ refresh หนวยความจาได อยางอตโนมต โดยคาใน R รจสเตอร

จะเพมคาขนอก 1 ทกครงทมการกระทาการ fetch คาสง และ ขอมลในรจสเตอร R นซงมขนาด 8 บต จะถกสงออก

ไปยง address bus ในสวนบตทมนยสาคญตากวาจงหวะของการสงนจะเปนจงหวะเดยวกนกบท CPU สงสญญาณ

refresh ออกมา ผโปรแกรมสามารถกาหนดคาใหกบ รจสเตอร R นไดแตคาในรจสเตอร นจะเรยกใชโดยผ

โปรแกรมทางคาสงโดยตรงไมได

16 บต

IX index register ตวท 1

IY index register ตวท 2 ชไปยงขอมลใน memory space

SP stack pointer

PC program counter

I R

รปท 3.5 16-bit Registers ของไมโครโพรเซสเซอร Z80

3.3 รปแบบของคาสงในไมโครโพรเซสเซอร Z80

ในทกคาสงจะมรปแบบทเปนมาตรฐาน โดยจะประกอบไปดวย สวนรหสคาสง (mnemonic – อานวา น

โมนก หรอ operation code– opcode) และสวนตวแปรดาเนนการ (operand) โดยในสวนของรหสคาสงนนมกเปน

Interrupt vector

Refresh register (ใชจรงแค 7 bits)

Page 31: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

31

คายอของการกระทา เชน LD ซงมาจากคาวา load หมายถง การโอนขอมล หรอ INC ซงมาจากคาวา increment

หมายถง การเพมขน สาหรบในสวนของ operand จะแสดงดวย register และตวเลข โดยจานวนของ operand นน

ขนอยกบชนดของคาสง

คาสงแตละคาสงของ Z80 จะมขนาดไมเทากน โดยทบางคาสงมความยาวเพยง 1 byte และบางคาสงอาจม

มากกวานน ในการทางานตามคาสงหนงๆ Z80 อาจจะตองมการตดตอกบสวนอนเชน memory หรอ I/O เพอ

read/write ขอมลทจาเปนในการทางานของคาสงนนๆ

อยางไรกตามความยาวของคาสงไมไดบงบอกถงจานวนชนงานท CPU ตองทาเพอใหทางานคาสงหนงๆ

นน เสมอไป ตวอยางเชน คาสง OUT(10H),A ซงมความยาว 2 bytes โดยจะเปนการสงขอมลใน accumulator ไป

ยง output port หมายเลข 10H

Byte ท 1 เกบ OUT → opcode บอกวาเปนการสงขอมลออกพอรต

Byte ท 2 เกบ (10H), A → operand บอกวาขอมลขนาด 1 byte จาก accumulator จะถกสงไปยงพอรต

หมายเลข 10H

โดยคาสงน Z80 จะมการทางาน 3 อยางดงน

1. อาน byte แรก จากหนวยความจา

2. อาน byte ทสอง จากหนวยความจา

3. สงขอมลไปยงพอรตหมายเลข 10H

รปแบบของคาสงของ Z80 มดวยกน 4 ประเภทดงตอไปน

1-byte instructions

เชน LD A, B 01 111 000 (78H)

2-byte instructions

เชน LD B, 32H 0000 0110 (06 H) Byte ท 1

0011 0010 (32H) Byte ท 2

3-byte instructions

เชน LD BC, 2080H 0000 0001 (01H) Byte ท 1

1000 0000 (80H) Byte ท 2

0010 0000 (20H) byte ท 3

4-byte instructions

เชน LD IX, 2000H 1101 1101 (DDH) Byte ท 1

0010 0001 (21H) Byte ท 2

0000 0000 (00H) Byte ท 3

0010 0000 (20H) Byte ท 4

Page 32: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

32

3.4 Z80 Addressing Modes

Addressing mode คอวธการไดมาซงขอมลทไดอางถงใน operand ของแตละคาสง โดยท Z80 ม

addressing modes ทงหมด 10 ประเภท ดงแสดงในตารางท 3.2

Addressing Modes คาอธบาย ตวอยาง

Immediate operand ตวทสองเปนขอมลขนาด 8 บตเพอ load ใส register

เดยว LD B,97H

Immediate Extended operand ตวทสองเปนขอมลหรอตาแหนงขนาด 16 บตเพอ load

ใส register ค LD BC,8045H

Register operand ตวทสองเปน register LD B,A

Implied เปนคาสงทมการอางถง register ตวอนทไมไดปรากฏอยใน

operand โดยสวนใหญจะเปนการอางถง register A AND B

Register Indirect คาทอยใน register ค จะเปนตาแหนงในหนวยความจา (memory

pointer) ของขอมลทตองการอางถง LD B,(HL)

Extended ขอมลขนาด 16 บต คอ ตาแหนงของคาสงตอมาทตองการขาม

กระโดดไป JP 2080H

Relative operand จะเปนเพยงคา displacement ในรปของ 2’s

complement JR 14H

Indexed ตาแหนงของขอมลทตองการหาไดจากการหาผลบวกของ index

register และ คา displacement ขนาด 1 byte INC (IX+10H)

Bit mode นใชสาหรบการทางานแบบบต (bit operation) โดยมการ

กาหนดบตทตองการจะกระทาการจาก register หรอตาแหนงใน

หนวยความจาหนงๆ โดยวธใดวธหนงจาก 3 โหมดน (register,

register indirect หรอ indexed)

SET 7,B

Page Zero ประกอบไปดวย 8 คาสง restart ซงเปน one-byte call โดย

ตาแหนงทจะเรยกใชจะม byte บนเปน 00H จงสามารถกาหนด

เฉพาะ byte ลางในคาสงได

RST 28H

ตารางท 3.2 รายละเอยดของ Addressing Mode ของไมโครโพรเซสเซอร Z80

Page 33: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

33

บทท 4 ชดคาสงของ Z80

ชดคาสง (Instruction Set) ของ Z80 แบงออกเปน 6 ประเภท ดงน

1. data transfer ⇒ การโอนยายขอมล

2. arithmetic operations ⇒ การคานวณผลทางคณตศาสตร

3. logic operations ⇒ การคานวณผลทางตรรกศาสตร

4. bit manipulation ⇒ การจดการขอมลระดบบต

5. branch operations ⇒ การประมวลผลแบบขามกระโดด

6. machine control operations ⇒ การจดการควบคมระบบ

4.1 Data Transfer Instructions

• กลม 8-bit load

• กลม 16-bit load

• กลม exchange

• กลม block transfer

• กลม IO

รปท 4.1ชดคาสงกลม load และ exchange

หมายเหต: คาสง data transfer ไมมผลตอ flags ตางๆ ยกเวนบางคาสงในกลม I/O

Page 34: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

34

กลม 8-bit load

LD rd, rs การทางาน: rd ← rs

n r ← n

(HL) r ← (HL)

(IX + d) r ← (IX + d)

(IY + d) r ← (IY + d)

หรอ

LD (HL) , r การทางาน: (HL) ← r

(IX + d) (IX + d) ← r

(IY + d) (IX + d) ← r

โดยท r, rd, rs = A, B, C, D, E, H,หรอ L (7 ตวเทานน ไมม F)

n = ขอมลขนาด 8 บต

d = คา displacement ขนาด 1 byte

ตวอยาง

ถาขณะน registers A B C D HL IX และ IY เกบคา 10H 20H 30H 40H 4F4FH 8080H และ 8120H ตามลาดบ

LD A, B เปนคาสงททาให accumulator มคาเทากบ 20H (คาของ register B)

LD D, 90H เปนคาสงททาให register D มคาเทากบ 90H

LD E, (IX + 20H) เปนคาสงททาให register E มคาเทากบคาทเกบในตาแหนง 80A0H (8080H+20H)

LD (HL), B เปนคาสงททาใหตาแหนง 4F4FH ท HL ชอยมคาเทากบ 20H (คาของ register B)

LD (IY+40H), C เปนคาสงททาใหตาแหนง 8160H (8120H+40H) มคาเทากบ 30H (คาของ register C)

LD r , n การทางาน: r ← n

(HL) (HL) ← n

(IX + d) (IX+d) ← n

(IY + d) (IY+d) ← n

โดยท r = A, B, C, D, E, H,หรอ L (7 ตวเทานน ไมม F)

n = ขอมลขนาด 8 บต และ d = คา displacement ขนาด 1 byte

ตวอยาง

ถาขณะน registers HL IX และ IY เกบคา 4F4FH 8080H และ 8120H ตามลาดบ

LD (HL), 50H เปนคาสงททาใหตาแหนง 4F4FH ท HL ชอยมคาเทากบคาคงท 50H

LD (IX + 20H), 60H เปนคาสงททาใหตาแหนง 80A0H (8080H + 20H) มคาเทากบคาคงท 60H

LD (IY+40H), 70H เปนคาสงททาใหตาแหนง 8160H (8120H + 40H) มคาเทากบคาคงท 70H

Page 35: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

35

LD A, (BC) การทางาน: A ← (BC)

(DE) A ← (DE)

(HL) A ←(HL)

(nn) A ← (nn)

หรอกลบกน

โดยท nn = ขอมลขนาด 16 บต

ตวอยาง

ถาขณะน registers BC DE และ HL เกบคา 8000H 8001H และ 8002H ตามลาดบ โดยทคาขอมล ณ ตาแหนงเหลานน

คอ 10H 20H และ 30H ตามลาดบ

LD A, (BC) เปนคาสงททาให accumulator มคาเทากบ 10H ซงอย ณ ตาแหนง 8000H ท BC ชอย

LD A, (DE) เปนคาสงททาให accumulator มคาเทากบ 20H ซงอย ณ ตาแหนง 8001H ท DE ชอย

LD A, (HL) เปนคาสงททาให accumulator มคาเทากบ 30H ซงอย ณ ตาแหนง 8002H ท HL ชอย

LD A, I การทางาน: A ← I

R A ← R

หรอกลบกน

ตวอยาง

ถาขณะน registers A, I และ R เกบคา 10H, 20H และ 30H ตามลาดบ

LD R, A เปนคาสงททาให memory refresh register มคาเทากบ 30H (คาของ accumulator)

LD A, I เปนคาสงททาให accumulator มคาเทากบ 20H (คาของ interrupt vector register)

กลม 16-bit load

LD rr , nn การทางาน: rr ← nn

IX IX ← nn

IY IY ← nn

โดยท rr = BC, DE, HL, SP

nn = ขอมลขนาด 16 บต

ตวอยาง

ไมวาขณะน registers BC IX และ IY จะเกบคาอะไร

LD BC, 8050H เปนคาสงททาให register ค BC มคาเทากบคาคงท 8050H

LD IX, 8060H เปนคาสงททาให indexed register ค IX มคาเทากบคาคงท 8060H

LD IY, 8070H เปนคาสงททาให indexed register ค IY มคาเทากบคาคงท 8070H

Page 36: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

36

LD rr , (nn) การทางาน: rr ← (nn)

IX IX ← (nn)

IY IY ← (nn)

หรอกลบกน โดยท rr = BC, DE, HL, SP (ถาใช HL จะใช 3 bytes, ตวอนๆ ใช 4 bytes)

nn = ขอมลขนาด 16 บต

ตวอยาง

ถาขณะนทตาแหนง 8010H 8020H และ 8030H เกบคา 10H 20H และ 30H และไมวา registers DE, IX และ IY จะเกบ

คาอะไร

LD DE, (8010H) เปนคาสงททาให register ค DE มคาเทากบ 10H ซงอย ณ ตาแหนง 8010H

LD IX, 8020H เปนคาสงททาให indexed register ค IX มคาเทากบ 20H ซงอย ณ ตาแหนง 8020H

LD IY, 8030H เปนคาสงททาให indexed register ค IY มคาเทากบ 30H ซงอย ณ ตาแหนง 8030H

LD SP, HL

IX

IY

ตวอยาง

ถาขณะน registers HL IX และ IY เกบคา 4F4FH 8080H และ 8120H ตามลาดบ และไมวา stack pointer (SP) จะเกบ

คาอะไร

LD SP, HL เปนคาสงททาให SP มคาเทากบ 4F4FH (คาของ register ค HL)

LD SP, IX เปนคาสงททาให SP มคาเทากบ 8080H (คาของ register ค IX)

LD SP, IY เปนคาสงททาให SP มคาเทากบ 812oH (คาของ register ค IY)

PUSH rr การทางาน: SP ← SP - 1

IX (SP) ← (oprH)

IY SP ← SP - 1

(SP) ← (oprL)

POP rr การทางาน: (oprL) ← (SP)

IX SP ← SP + 1

IY (oprH) ← (SP)

SP ← SP + 1

โดยท rr = AF, BC, DE หรอ HL

oprH / oprL =byte บน/ลางของ operand ของคาสง PUSH และ POP

Page 37: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

37

ตวอยาง

ถาขณะน registers AF และ IY เกบคา 4F00H และ 8160H ตามลาดบ และ stack pointer (SP) มคา 2040H หลงจากทา

คาสง

PUSH AF เปนคาสงททาใหตาแหนง 203F H เกบคา 4F H และตาแหนง 203E H เกบคา 00 H

PUSH IY เปนคาสงททาใหตาแหนง 203D H เกบคา 81 H และตาแหนง 203C H เกบคา 60 H หลงจากนน SP

จะมคาเทากบ 203C H หลงจากนนเมอพบคาสง

POP IX เปนคาสงททาให indexed register IX มคาเทากบ 8160 H

POP BC เปนคาสงททาให register BC มคาเทากบ 4F00 H หลงจากนน SP จะกลบมามคาเทากบ 2040 H

กลม exchange

EX DE, HL การทางาน: DE ↔ HL

เปนคาสงทใชในการสลบคา register ค ทง 2 ตว โดยท register ค DE จะมคาเทากบคาของ register ค HL โดย HL

จะมคาเทากบคาท HL เคยเกบไว

ตวอยาง

ถาขณะน registers ค DE และ HL เกบคา 4F00H และ 8160H ตามลาดบ

EX DE, HL จะทาให DE มคาเทากบ 8160H (คาของ HL) และ HLมคาเทากบ 4F00H (คาของ DE เดม)

EX AF, AF′ การทางาน: AF ↔ AF′ คาสง EX นยงเปนคาสงเดยวทใชในการเขาถง alternative registers A′, B′, C′, D′, E′, F′, H′ และ L′ อกดวย

EXX การทางาน: BC ↔ BC′ DE ↔ DE′ HL ↔ HL′ คาสง EXX เปนคาสงทใชในการสลบขอมลระหวาง main registers และ alternative registers ทเดยว 3 ค

กลม block transfer

LDI การทางาน: (DE) ← (HL)

DE ← DE + 1

HL ← HL + 1

BC ← BC - 1 increment

คาสง LDI เปนคาสงทใชในการโอนยายขอมลจากหนวยความจาตนฉบบทชโดย register HL ไปยงหนวยความจา

ปลายทางทชโดย register DE แลวเพมคาตวชหนวยความจาทงสอง และลดคาตวนบ BC

Page 38: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

38

ตวอยาง

LDIR การทางาน: ทา LDI จนกระทง BC = 0 repeat

LDD การทางาน: (DE) ← (HL)

DE ← DE - 1

HL ← HL - 1

BC ← BC – 1 decrement

คาสง LDD เปนคาสงทใชในการโอนยายขอมลจากหนวยความจาตนฉบบทชโดย register HL ไปยงหนวยความจา

ปลายทางทชโดย register DE แลวลดคาตวชหนวยความจาทงสอง และลดคาตวนบ BC

ตวอยาง

LDDR การทางาน: ทา LDD จนกระทง BC = 0 repeat

กลม I/O

IN A, (n)

OUT (n), A โดยท n เปน 8-bit port number

คาสง IN เปนคาสงทใชในการรบคาขอมลจากพอรตหมายเลขท n ไปเกบไวท accumulator

คาสง OUT เปนคาสงทใชในการสงคาขอมลใน accumulator ออกไปยงพอรตหมายเลขท n

IN r, (C)

OUT (C), r โดยท r = A, B, C, D, E, H, L

คาสง IN เปนคาสงทใชในการรบคาขอมลจากพอรตหมายเลขทอยใน register C ไปเกบไวท register r

คาสง OUT เปนคาสงทใชในการสงคาขอมลใน register r ออกไปยงพอรตหมายเลขทอยใน register C

Page 39: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

39

INI การทางาน: (HL) ← (C)

HL ← HL + 1

B ← B - 1 increment

คาสง INI เปนคาสงทใชในการรบคาขอมลจากพอรตหมายเลขทอยใน register C ไปเกบไวทหนวยความจา

ตาแหนงทโดย register HL แลวเพมคา HL และลดคาตวนบ B

INIR การทางาน: ทา INI จนกระทง B = 0 repeat

OUTI การทางาน: (C) ← (HL)

HL ← HL + 1

B ← B - 1 increment

คาสง OUT เปนคาสงทใชในการสงคาขอมลในหนวยความจาตาแหนงทโดย register HL ออกไปยงพอรตหมายเลข

ทอยใน register C แลวเพมคา HL และลดคาตวนบ B

OTIR การทางาน: ทา OUTI จนกระทง B = 0 repeat

IND การทางาน: (HL) ← (C)

HL ← HL - 1

B ← B - 1 decrement

คาสง INI เปนคาสงทใชในการรบคาขอมลจากพอรตหมายเลขทอยใน register C ไปเกบไวทหนวยความจา

ตาแหนงทโดย register HL แลวลดคา HL และลดคาตวนบ B

INDR การทางาน: ทา IND จนกระทง B = 0 repeat

OUTD การทางาน: (C) ← (HL)

HL ← HL - 1

B ← B - 1 decrement

คาสง OUT เปนคาสงทใชในการสงคาขอมลในหนวยความจาตาแหนงทโดย register HL ออกไปยงพอรตหมายเลข

ทอยใน register C แลวลดคา HL และลดคาตวนบ B

OTDR การทางาน: ทา OUTD จนกระทง B = 0 repeat

4.2 Arithmetic Instructions

• กลม 8-bit addition

• กลม 8-bit subtraction

• กลม compare

Page 40: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

40

• กลม increment และ decrement แบบ 8-bit

• กลมทม operand เพยงตวเดยว (คอ accumulator)

• กลม 16-bit addition

• กลม 16-bit subtraction

• กลม increment และ decrement แบบ 16-bit

กลม 8-bit addition

ADD A, r การทางาน: A ← A + r

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

คาสง ADD เปนคาสงทใชในการบวกขอมลขนาด 8 บตจากแหลงตางๆ กบ accumulator แลวเกบผลลพธท

accumulator โดยแหลงสาหรบขอมล 8 บต นนไดแก

r หมายถง Register ตางๆ

n หมายถง ขอมลขนาด 8 บตจรงๆ

(HL) หมายถง คาในหนวยความจาทชโดย register HL

(IX+d) หรอ (IY+d) หมายถง คาในหนวยความจาทชโดย index register IX หรอ IY บวกกบ

คาระยะหาง d bytes

ADC A, r การทางาน: A ← A + r + CY

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

คาสง ADC เปนคาสงทใชในการบวกขอมลขนาด 8 บตจากแหลงตางๆ กบคาตวทดใน carry flag และ accumulator

แลวเกบผลลพธท accumulator

กลม 8-bit subtraction

SUB A, r การทางาน: A ← A - r

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

Page 41: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

41

คาสง SUB เปนคาสงทใชในการลบคา accumulator ดวยขอมลขนาด 8 บตจากแหลงตางๆ แลวเกบผลลพธท

accumulator โดยแหลงสาหรบขอมล 8 บตนนไดแก r n (HL) (IX+d) หรอ (IY+d)

SBC A, r การทางาน: A ← A - r - CY

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

คาสง SBC เปนคาสงทใชในการลบคา accumulator ดวยขอมลขนาด 8 บตจากแหลงตางๆ แลวเกบผลลพธท

accumulator

กลม compare

CP r การทางาน: A - r

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

คาสง CP เปนคาสงทใชในการเปรยบเทยบคาใน accumulator กบคาตางๆ โดยไมมการเปลยนแปลงคาเหลาน แตจะ

มการเปลยนแปลง flags ตางๆ ดงน

CPI การทางาน: A - (HL)

HL ← HL + 1

BC ← BC - 1 increment

คาสง CPI เปนคาสงทใชในการเปรยบเทยบคาใน accumulator กบคาในหนวยความจาทชโดย register HL แลวเพม

คา HL และลดคาตวนบ BC

CPIR การทางาน: ทา CPI จนกระทง A = (HL) หรอ BC = 0 repeat

CPD การทางาน: A - (HL)

HL ← HL - 1

BC ← BC - 1 decrement

คาสง CPI เปนคาสงทใชในการเปรยบเทยบคาใน accumulator กบคาในหนวยความจาทชโดย register HL แลวลด

คา HL และลดคาตวนบ BC

Page 42: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

42

CPDR การทางาน: ทา CPD จนกระทง A = (HL) หรอ BC = 0 repeat

กลม increment และ decrement แบบ 8-bit

INC r หรอ DEC r

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d) มผลตอทก flags ยกเวน CY

คาสง INC/DEC เปนคาสงทใชในการเพม/ลดคาตางๆ 1 คา

กลมทม operand เพยงตวเดยว (คอ accumulator)

DAA - decimal-adjust accumulator

CPL - 1’s complement

NEG - 2’s complement

SCF - set carry flag

CCF - Complement carry flag

กลม 16-bit addition ADD HL, BC หรอ ADD IX, BC หรอ ADD IX, BC

DE DE DE

HL IX IX

SP SP SP

มผลเฉพาะ N และ CY flags นน, Flag H จะ undefined

ADC HL, BC

DE

HL

SP มผลตอทก flags, Flag H จะ undefined

คาสงในกลมนจะตางจากคาสงสาหรบการบวกกอนหนาน คอเปนการบวกคาขนาด 16 บต

กลม 16-bit subtraction

SBC HL, BC การทางาน: HL ← HL - BC - CY

DE DE

HL HL

SP

SPมผลตอทก flags, Flag H จะ undefined

Page 43: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

43

คาสงในกลมนจะตางจากคาสงสาหรบการลบกอนหนาน คอเปนการลบคาขนาด 16 บตซงมเฉพาะ SBC ซงเปนการ

ลบเพมเตมดวยคา carry flag ดวย

กลม increment และ decrement แบบ 16-bit

INC BC หรอ DEC BC

DE DE

HL HL

SP SP

IX IX

IY IY

ไมมผลตอ flags ใดๆเลย

คาสงในกลมนจะตางจากคาสงสาหรบการเพมและลดคากอนหนาน คอเปนการเพมและลดคาขนาด 16 บต

4.3 Logical Instructions

AND A, r การทางาน: A ← A & r

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

OR A, r การทางาน: A ← A | r

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

XOR A, r การทางาน: A ← A XOR r

n n

(HL) (HL)

(IX + d) (IX + d)

(IY + d) (IY + d)

Page 44: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

44

4.4 Bit Manipulation Instructions

• กลม rotate

• กลม shift

• กลม bit, set, reset และ test

กลม rotate

RLC r

(HL)

(IX + d)

(IY + d) rotate left circular

RLC A คนละคาสง แตทางานเหมอนกน โดยจะมผลกระทบ

RLCA กบ flags ไมเหมอนกน และจานวน byte ของคาสงไมกน

RL r

(HL)

(IX + d)

(IY + d) rotate left

RL A คนละคาสง แตทางานเหมอนกน โดยจะมผลกระทบ

RLA กบ flags ไมเหมอนกน และจานวน byte ของคาสงไมกน

RRC r

(HL)

(IX + d)

(IY + d) rotate right circular

RRC A คนละคาสง แตทางานเหมอนกน โดยจะมผลกระทบ

RRCA กบ flags ไมเหมอนกน และจานวน byte ของคาสงไมกน

RR r

(HL)

(IX + d)

(IY + d) rotate right

RR A คนละคาสง แตทางานเหมอนกน โดยจะมผลกระทบ

RRA กบ flags ไมเหมอนกน และจานวน byte ของคาสงไมกน

CY 7 ← 0

CY 7 ← 0

CY7 → 0

CY7 → 0

Page 45: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

45

RLD ใชกบตวเลข BCD

A (HL)

RRD ใชกบตวเลข BCD

A (HL)

กลม shift

SLA r

(HL)

(IX + d)

(IY + d) shift left arithmetic

SRA r

(HL)

(IX + d)

(IY + d) shift right arithmetic

SRL r

(HL)

(IX + d)

(IY + d) shift right logical

กลม bit, set, reset และ test

BIT b, r หรอ SET b, r หรอ RES b, r

(HL) (HL) (HL)

(IX + d) (IX + d) (IX + d)

(IY + d) (IY + d) (IY + d)

r = A, B, C, D, E, H และ L โดยท b คอตาแหนง bit 0 → 7

7 - 4 3 - 0 7 - 4 3 - 0

7 - 4 3 - 0 7 - 4 3 - 0

CY 7 ← 0 0

CY7 ← 0

CY 7 → 00

Page 46: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

46

4.5 Branch Instructions

• กลม unconditional jump

• กลม conditional jump

• กลม call และ return

กลม unconditional jump

JP nn การทางาน: PC ← nn absolute jump

nn = ตาแหนง 16 บต

JR e การทางาน: PC ← PC + e relative jump

e = เลข 8 บต (-128 → +127)

JP (HL) การทางาน: PC ← HL

(IX) IX

(IY) IY

กลม conditional jump

JP cc, nn conditional absolute jump

cc = NZ, Z, NC, C, PO, PE, P, M

JR cc, nn conditional relative jump

cc = NZ, Z, C

DJNZ e การทางาน: B ← B -1 decrease and jump if not zero

If B = 0 continue

Else (B ≠ 0) PC ← PC + e

กลม call และ return

CALL nn การทางาน: (SP - 1) ← PCH

(SP - 2) ← PCL

SP ← SP - 2

PC ← nn

CALL cc, nn conditional call

Page 47: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

47

RET การทางาน: PCL ← (SP)

PCH ← (SP+1)

SP ← SP + 2

RET cc conditional return

RETI return from interrupt

เหมอนกบ RET แต peripheral chip บางตวจะถกสรางใหรจก RETI

RETN return from non-maskable interrupt

RST p การทางาน: (SP - 1) ← PCH restart

(SP - 2) ← PCL

PCH ← 0

PCL ← p

เหมอนกบ CALL เพยงแต high address เปน 00H และ low address ม 8 ตาแหนง

4.6 Machine Control Operations Instructions

HALT การทางาน: พกการทางานชวคราว

NOP การทางาน: ไมมการปฏบตงาน (No Operation) โดยไมมผลตอ flags ใดๆ

4.7 Assembler Directives

นอกเหนอจากคาสงทง 6 ประเภททไดอธบายผานมานน ในการเขยนโปรแกรมภาษาแอสแซมบลเพอ

กาหนดการทางานไมโครโพรเซสเซอร Z80 ยงม Assembler Directives ทเกยวของดงน

1. คาตอทายคงท (Constant Suffix)

เปนตวอกษร (D B Q หรอ H) ทใชกาหนดเลขฐานตาง ๆ ของขอมล โดยท

D แสดงวาขอมลเปนเลขฐานสบ (โดยอาจละไวในฐานทเขาใจได)

B แสดงวาขอมลเปนเลขฐานสอง

Q แสดงวาขอมลเปนเลขฐานแปด

H แสดงวาขอมลเปนเลขฐานสบหก โดยทตวเลขทเรมตนดวย A ถง F ตองม 0

นาหนาเสมอ

ตวอยาง

97, 0A1H, 1011B หมายถง 97 A1H 10112 ตามลาดบ

2. คาสง ORG (Origin)

Page 48: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

48

เปนคาสงทใชกาหนดตาแหนงเรมตนในหนวยความจาของโปรแกรม

ตวอยาง

ORG 2000H เปนคาสงทแสดงวากลมคาวงตอจากนจะเรมเกบทตาแหนง 2000H

ในหนวยความจา

3. คาสง END

เปนคาสงของ assembler ทแสดงจดสนสดของโปรแกรม โดยทคาสง HALT ของไมโคร

โพรเซสเซอร แสดงการสนสดการทางานของโปรแกรม แตไมไดหมายถงการสนสดการ

ทางานของแอสแซมบล

4. คาสง EQU (Equate)

เปนคาสงทใชกาหนดคาคงทใหแกตวแปรตางๆ

ตวอยาง

PORTA EQU 0B3H ตวแปรทชอ PORTA มคาเทากบ B3H

5. คาสง DB (Define Byte)

เปนคาสงทใชกาหนดคาตาง ๆ ลงในหนวยความจาครงละ 1 byte

ตวอยาง

DATA: DB 00H,01H,10H ทตาแหนง DATA เกบขอมล 00H ตามดวย 01H และ 10H

6. คาสง DW (Define Word)

เปนคาสงทใชกาหนดคาขนาด 1 word หรอ 2 bytes ลงในหนวยความจา

ตวอยาง

ADDR: DW 2050H ทตาแหนง ADDR เกบขอมล 2050H

7. คาสง DFS (Define Storage)

เปนคาสงทใชจองจานวนตาแหนงหนวยความจาทกาหนด โดยตวเลขทตามมานนมหนวยเปน byte

ตวอยาง

DAT: DFS 4 ทตาแหนง DAT ไดจองหนวยความจาขนาด 4 bytes

Page 49: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

49

บทท 5 Z80 Machine Cycles and Bus Timing

การทางานของ CPU ในแตละคาสง (instruction) จะประกอบไปดวยกจกรรม 3 อยาง คอ

1. Fetch อานคาสง

2. Decode แปลคาสง

3. Execute ทางานตามคาสง ซงอาจจะเปน

- CPU ไมมการตดตอกบภายนอก

- CPU ↔ Memory (memory read/write)

- CPU ↔ I/O (I/O read/write)

- CPU ตอบรบการขอจากภายนอก (external request acknowledge)

เมอทางานครบทง 3 อยางน จะเรยกวา 1 instruction cycle ในแตละคาสงจะแบงการทางานยอย ๆ ลงไปอก

เรยกวา machine cycle ไดแก การตดตอกบ memory หรอ I/O หรอ การตอบรบ (acknowledge) หรอ การขอรองจาก

ภายนอก (external request)

1M หมายถง machine cycle แรก ซงตองเปนการ fetch opcode เสมอ ในชวงปลายของ 1M จะมการ refresh

DRAM, decode สญญาณ และอาจมการ execute ถา CPU ไมตองตดตอกบภายนอกอก

รปท 5.1 Z80 Machine Cycles และ Timings

T-states หมายถง คาบเวลาของนาฬกา หรอ clock periods นนเอง

“1 instruction cycle” ประกอบดวย 1 – 6 machine cycles

“1 machine cycle” ประกอบดวย 3 – 6 T–states ขนอยกบชนดของ machine cycle

ดงนน instruction ทสนทสดจะใช 1 machine cycle คอ M1 ซงจะม 4 T-states

ในบทนเราจะมงความสนใจไปทการทางาน 3 อยางแรกจากตารางท 5.1 คอ opcode fetch, memory read

และ memory write

T4 T2 T3 T1 T2 T3 T1T1 T2 T3 T4

M1 M2

1 instruction cycle Instruction ถดไป

Refresh DRAM, Decode instruction และอาจจะ

execute ถา CPU ไมตองตดตอภายนอกอก

Page 50: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

50

Machine Cycle 1M MREQ IORQ RD WR

Opcode Fetch ( 1M ) 0 0 1 0 1

Memory Read 1 0 1 0 1

Memory Write 1 0 1 1 0

I/O Read 1 1 0 0 1

I/O Write 1 1 0 1 0

Interrupt Acknowledge 0 1 0 1 1

Nonmaskable Interrupt 0 0 1 0 1

Bus Acknowledge ( BUSAK = 0) 1 Z Z Z Z

หมายเหต: Logic 0 = Active, Logic 1 = Inactive, Z = High Impedance

ตารางท 5.1 ชนดของ Machine Cycles และ Control Signals ในไมโครโพรเซสเซอร Z80

5.1 Opcode Fetch Machine Cycle

การทางานลาดบแรกในคาสงใดๆคอ การทไมโครโพรเซสเซอรอาน (fetch) คาสงเครอง (machine code) ซง

ในทนกคอคา opcode จาก memory ตวอยางท 5.1 อธบายใหเหนถงการทางานของ opcode fetch รวมไปถง timing

signals ทใชใน machine cycle นดวย

ตวอยางท 5.1 Accumulator ของไมโครโพรเซสเซอร Z80 มขอมล 9FH อย และ opcode 0100 0111 (47H)

ของคาสง LD B, A ถกเกบไวใน memory ตาแหนง 2002H คาสงนเปนคาสงขนาด 1 byte เมอถก execute ขอมลท

อยใน accumulator จะถก copy ไปไวท register B ดวย จงหาลาดบของเหตการณตางๆ ทจะเกดขนเพอทจะ

execute คาสงเครองคาสงน พรอมทงแสดงรายละเอยดของสญญาณบน bus ตาง ๆ ทขนอยกบ system clock

คาตอบ

สมมตวา Z80 ไดเสรจสนการ execute คาสงใน memory ตาแหนงท 2001H และขณะน PC มคาเทากบ

2002H หลงจากนนขนตอนของกจกรรมตาง ๆ ท Z80 ตองทา คอ

1. Z80 นาขอมลจาก PC (2002H) ไปไวท address bus แลวทาการเพมคาของ PC ไปเปนตาแหนงถดไป ซงใน

ทนคอ 2003H เนองจาก PC จะชไปยงคาสงถดไปทจะถก execute เสมอ

2. Z80 สงสญญาณควบคม MREQ และ RD ไปเพอ enable memory output buffer (เพอบอกวานเปนการ

ขอรองใช memory เพอการอาน)

3. ขอมล (opcode 47H) จาก memory ตาแหนง 2002H จะไปอยท data bus และจะถกนาเขามาท instruction

decoder ของไมโครโพรเซสเซอร

Page 51: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

51

4. Z80 จะ decode คา opcode และทาการ execute คาสงนน ซงจะหมายถงการ copy ขอมลจาก

accumulator ไปยง register B

CE

OEWR

CE

OEMEMRDMEMWR

MEMRDWR

รปท 5.2 Z80 Machine Cycles และ Timings

รปท 5.2 แสดงใหเหนถงการทางานของ Z80 เมอทาการ fetch คา opcode โดยอาศย address bus และ data

bus รวมดวยสญญาณควบคม

รปท 5.3 แสดง timings ของ Opcode fetch machine cycle โดยเปนสดสวนกบ system clock สงเกตวา

address bus จะถกแสดงโดยใชเสนคขนานซงเปนวธทใชบอยในการแสดงระดบของ logic ของกลมของขอมล

(บางก ‘0’ หรอ low บางก ‘1’ หรอ high) และการตดกนของเสนทง 2 หมายถงการเปลยนแปลงของขอมล ซงกคอ

เมอ address ใหมเขามาท address bus สวนสถานะทเปน high impedance จะแสดงในลกษณะของเสนตรงท

กงกลาง (ไมเปน ‘0’ หรอ ‘1’) ดงเชนในบางสวนของ data bus รายละเอยดตาง ๆ เกยวกบ timings ใน Opcode

fetch machine cycle มดงน

1. จากรปท 5.3 แสดงใหเหนวา Opcode fetch cycle เสรจสมบรณใน 4 clock periods หรอ T-states โดยท

Machine cycle น ถกนยามวา M1 cycle

2. ในชวงเรมตนของ clock period แรก (T1) สญญาณควบคม 1M จะเปน ’0’ (active low) และ คาของ PC

(2002H) จะไปปรากฏท address bus

3. หลงจากขาลง (falling-edge) ของ T1 Z80 จะสงใหสญญาณควบคมทเหมาะสม ( MREQ และ RD ) ทาจน

(ทงค active low)

Page 52: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

52

รปท 5.3 Z80 Opcode Fetch Machine Cycle (M1) และ Bus Timings

4. ในสวนของ memory ซงไมไดถกแสดงในรปท 5.3 น จะทาการ decode ตาแหนงจาก address bus เพอใหได

คา 2002H ซงจะเปนตาแหนงใน memory สวนสญญาณควบคมทงสอง ( MREQ และ RD ) จะไป enable

memory output buffer เพอไปสงให data bus ซงเคยมสถานะเปน high impedance ทางานเปน input bus

ในชวงตนของ T2 เพอสงคาเขาไปยงไมโครโพรเซสเซอรหลงจากขาลงของ T2 memory จะนาคา 47H ท

อานไดจากตาแหนง 2002H ไปไวท data bus

5. หลงจากขาขนของ T3 แลวไมโครโพรเซสเซอรจะอานขอมลจาก data bus และทาการ inactive สญญาณ

ควบคมตางๆ ( 1M , MREQ และ RD )

6. ในชวงของ T3 และ T4 instruction decoder ในไมโครโพรเซสเซอรจะ decode และ execute ตามคา

opcode ทอานมาได สงเหลานคอการทางานภายใน ไมโครโพรเซสเซอร

สวนอก 2 ขนตอนขางลางน ถงแมจะไมมสวนเกยวของกบปญหาในตวอยางน อยางไรกตามขนตอน

เหลานกถกรวมอยทนดวยในฐานะทเปนสวนหนงของ M1 cycle

1. ในชวง T3 และ T4 ในขณะท Z80 ปฏบตงานภายใน low-order ของ address bus จะถกใชในการจาย

address ขนาด 7 บต เพอทจะ refresh ตว dynamic memory ซงถาระบบม memory ประเภทนอย ขนตอน

นจะทาใหการการตอประสานกบฮารดแวรเปนไปไดงายขน

2. ในรปท 5.3 นมการแสดงสญญาณ WAIT ซงจะถก sample โดย Z80 ในชวง T2 ถาสญญาณ WAIT น

active คอถกทาใหเปน low โดยอปกรณภายนอกหนง ๆ (เชน memory หรอ I/O) Z80 จะเพม wait states

Page 53: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

53

(clock cycles) เพอทจะขยาย machine cycle ออกไป จนกระทง สญญาณ WAIT กลบมาเปน high อกครง

เทคนคนจะใชเมออปกรณภายนอกมการตอบสนองทชามาก ๆ

5.2 Memory Read Machine Cycle

Machine cycle ตอมาทจะกลาวถง คอ Memory read machine cycle ซงจะมความคลายกบ Opcode fetch

machine cycle ทไดกลาวมาขางตนแลว โดยท Opcode fetch cycle นนถอวาเปน Memory read machine cycle ทม

1M active ดวย

ตวอยางท 5.2 คาสงเครอง (machine codes) 2 คาสง 0011 1110 (3EH) และ 1001 1110 (9EH) ถกเกบไวท

memory ตาแหนง 2000H และ 2001H ตามลาดบ โดยคาสงเครองคาสงแรก (3EH) เปนคาสงทจะ load ขอมล

ขนาด 1 byte ไปไวท accumulator โดยคาสงเครองคาสงทสอง (9FH) จะเปนขอมลทจะถก load ไปท

accumulator จงหา bus timings เมอคาสงเครอง 2 คาสงนถก execute และจงหาระยะเวลาทใชในการ execute ใน

สวนของ Opcode fetch machine cycle. Memory read cycle และ ในการ execute ทง instruction เมอ clock frequency

มคาเทากบ 4 MHz.

Address Machine code Instruction Comment

2000H 0 0 1 1 1 1 1 0 → 3E LD A, 9FH ;Load 9FH in the accumulator

2001H 1 0 0 1 1 1 1 1 → 9F

คาตอบ

คาสงนประกอบดวย 2 bytes - byte แรก คอ opcode และ byte ทสอง คอ ขอมลขนาด 1 byte เรมตนดวย

การท Z80 จะตองทาการอานขอมลทง 2 bytes นจาก memory ซงจะตองใชอยางนอย 2 machine cycles:

opcode fetch และ memory read

รปท 5.4 แสดง timings ของ Memory read machine cycle โดยมรายละเอยดตางๆ ดงน

1. Machine cycle แรก (opcode fetch) จะเหมอนกนในเชง bus timings กบ machine cycle ใน ตวอยางท

5.1 ยกเวนคาทอยใน bus ตาง ๆ address bus เกบ 2000H data bus เกบคา opcode 3EH หลงจากท Z80 ได

decode คา opcode ในชวง T3 ไมโครโพรเซสเซอรจะรวาตองมการอาน byte ท 2 ดวย

2. หลงจากเสรจสน Opcode fetch cycle แลว Z80 จะวางคาตาแหนง 2001H ไวท address bus แลว ทาการ

เพมคาของ PC ไปเปนตาแหนงถดไป (2002H) สงททาให Machine cycle น (Memory read cycle) แตกตาง

จาก Opcode fetch cycle คอ 1

M ยงคงเปน high อย คอไม active

Page 54: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

54

รปท 5.4 Z80 Memory Read Machine Cycle และ Bus Timings

3. หลงจากขาลงของ T1 ใน Memory read cycle, สญญาณควบคม MREQ และ RD จะ active โดยสญญาณ

เหลานพรอมกบตาแหนงของ memory จะเปนการไป enable ตว memory chip

4. หลงจากขาขนของ T3 ใน Memory read cycle, Z80 จะ active สวนของ data bus ใหทาหนาทเปน input

bus เพอรองรบคา 9FH ท memory สงมาให หลงจากนน Z80 จะอานขอมลดงกลาวแลวเกบไวใน

accumulator ในชวง T3 น

5. หลงจากขาลงของ T3 ใน Memory read cycle, สญญาณควบคมทงสองจะกลบไปเปน high คอไม active

หลงจากนน Machine cycle ถดมา (ของ instruction ตอไป) กสามารถเรมทางานได

และเมอความถของ system clock (f) = 4MHz เวลาตาง ๆ สามารถคานวณไดดงน

T-state = clock period (1/f) = 0.25 µs

Execution time ของ Opcode fetch: (4T) x 0.25 = 1.0 µs

Execution time ของ Memory Read: (3T) x 0.25 = 0.75 µs

∴ Execution time ของ Instruction ทงหมด: (7T) x 0.25 = 1.75 µs

5.3 Memory Write Machine Cycle

Machine cycle ลาดบทสามทจะกลาวตอไป คอ Memory write machine cycle โดยท Machine cycle นจะทาการ

store ขอมลใน memory register ทกาหนดในคาสง ดงจะแสดงใหเหนจากตวอยางตอไปน

T1 T2 T3 T4 T1 T2 T3

M1 opcode fetch Memory Read

CLK

A15-A0

1M

MREQ

D15-D0

RD

WR

2001H2000HRefresh Address

3EH

high

Page 55: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

55

ตวอยางท 5.3 Register HL เกบตาแหนง 2350H และ accumulator เกบคา 9FH โดยท instruction code 0111 0111

(77H) ถกเกบไวท memory ตาแหนง 2003H เมอคาสงนถก execute ขอมลใน accumulator จะถกนาไปเกบทตาแหนง

ใน memory ทชโดย register HL จงหาคาทจะถกเกบไวใน bus และ timings เมอคาสงนกาลงถก execute

คาสง:

LD (HL),A ;Copy contents of the accumulator into memory

;location, the address of which is stored in HL

;register.

คาตอบ

คาสงในตวอยางนเปนคาสงขนาด 1 byte ทม 2 Machine cycles คอ Opcode fetch และ Memory write

โดยทใน Machine cycle แรก Z80 จะ fetch คา code 77H และใน Machine cycle ทสอง Z80 จะคดลอก byte 9FH จาก

accumulator ไปไวท memory ตาแหนง 77H

รปท 5.4 Z80 Memory Write Machine Cycle และ Bus Timings

รปท 5.4 แสดงถง timings ของ Machine cycles ทงสอง โดยทมรายละเอยดดงน

1. ในสวนของ Opcode fetch cycle นน Z80 จะวางตาแหนง 2003H ไวท address bus และอานคาขอมล

77H จาก data bus โดยใชสญญาณควบคม MREQ และ RD เหมอนในตวอยางกอน ๆ โดยทในตวอยางน

คา PC จะถกเพมขนเปน 2004H

CLK

A15-A0

1M

MREQ

D15-D0

M1 opcode fetch Memory Write

RD

WR

2350H2003H Refresh Address

77H9FH

Page 56: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

56

2. ในชวง T3 และ T4 Z80 จะ decode คาสงเครอง 77H และเตรยมตวเพอทาการเขยนขอมลลง memory

3. ในชวงแรกของ Machine cycle ตอมาซงกคอ Memory write cycle นน Z80 จะวางขอมล (2350H) จาก

register HL ไวท address bus สวนในตอนขาลงของ T1 ใน Memory write cycle นน MREQ จะเปน low และ

ขอมล 9FH จาก accumulator จะถกวางไวท data bus

4. หลงจากนน รอให 1 T-state ผานไป (หลง MREQ active) เพอใหตาแหนงทจะเขยนขอมล มความเสถยร

แลว Z80 จะทาใหสญญาณควบคมการเขยน WR active เพอแสดงวาจะเขยนขอมลไปยงตาแหนงทเกบอย

ใน address bus

5. หลงจากขาลงของ T3 ใน Memory write cycle สญญาณควบคมทงสองจะไม active และ data bus จะถก

เปลยนเปน high impedance

5.4 ทบทวนสาระสาคญ

1. คาสงทกคาสงตองมอยางนอย 1 Machine cycle นนคอ M1 หรอ Opcode fetch machine cycle เสมอ ซงจะม 4

T-states

2. Memory read cycle คลายกบ Opcode fetch cycle จะตางกนตรงท ใน Opcode fetch cycle จะม 1M active

ดวย

3. Memory write cycle ม MREQ และ WR active ในขณะท Memory read cycle ม MREQ และ RD active

4. WR และ RD จะไม active พรอมกน เนองจากไมโครโพรเซสเซอร Z80 ไมสามารถจะอานและ เขยนพรอม

กนได

ใน Memory read cycle ⇒ MREQ และ RD จะ active เพอ enable memory output buffer โดยทตาแหนง

ของ memory ทตองการอานขอมลควรทจะอยท address bus แลว เพอทจะอานคาขอมลใน memory ท ตาแหนงนน

ผานทาง data bus

ในขณะทใน Memory write cycle ⇒ MREQ จะ active และขอมลทจะเขยนจะตองอยบน data bus แลว

WR คอย active เพอทจะเขยนขอมลจาก data bus ลงไปยงตาแหนงทอานไดจาก address bus

5.5 การสรางสญญาณควบคม

Z80 มสญญาณควบคมอย 4 สญญาณ คอ MREQ IORQ RD และ WR

การทางาน MREQ IORQ RD WR

การอาน memory 0 1 0 1

การเขยน memory 0 1 1 0

การอานอปกรณ I/O 1 0 0 1

การเขยนบนอปกรณ I/O 1 0 1 0

Page 57: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

57

ในกรณทตองการสญญาณ MEMRD MEMWR IORD และ IOWR สามารถสรางสญญาณไดดงน

RD

MREQ

MEMWR

MEMRD

WR

RD

IORQ

IOWR

IORD

WR

Page 58: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

58

บทท 6 การตอประสานกบหนวยความจา

ในการทางานของ Z80 ไมโครโพรเซสเซอรเพอ execute โปรแกรมหนงๆ มความจาเปนทจะตอง

access หนวยความจาบอยครง วงเดตไดจากในชวงแรกของการทางานของทกคาสง จะเปน opcode fetch

machine cycle ซงจาเปนตอง fetch คาสงจากหนวยความจา

บทนจะวาดวยการตอประสาน Z80 ไมโครโพรเซสเซอรกบชบหนวยความจา โดยเรมจากศกษา

โครงสรางของชบหนวยความจา เพอใหไดมาซงรายละเอยดทจาเปนในการอานและเขยนขอมลใน

หนวยความจา รวมไปถงขนตอนทสาคญตางๆ สาหรบการตอประสานกบหนวยความจา

6.1 แนวคดพนฐานเกยวกบหนวยความจา

An-A0 = address signals ม n+1 เสน

D7-D0 = Data Bus

CE (Chip Enable) หรอ CS (Chip Select) เปนสญญาณเลอก chip

OE (Output Enable) เปนสญญาณสาหรบ enable output buffer ของ memory

ถาเปน static RWM จะมขา WR ดวย

Memory บางเบอรอาจมขา Chip Enable มากกวา 1 ขา เชน 1CS (active low) และ 2CS (active

high)

เบอรทใชอย

ในจานวนนมรนท flash memory ดวย

ขนาดของ memory จานวนสายสญญาณ

1K (0000-03FF) 10 (A9-A0)

2K (0000-07FF) 11 (A10-A0)

4K (0000-0FFF) 12 (A11-A0)

8K (0000-1FFF) 13 (A12-A0)

16K (0000-3FFF) 14 (A13-A0)

32K (0000-7FFF) 15 (A14-A0)

64K (0000-FFFF) 16 (A15-A0)

EPROM RWM

2716 6264

2732 62256

2764 …

27120

27256

An - Ao

CE

OE

D7 - D0

ROM

Page 59: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

59

การจดวางเรยงขาของ dynamic RAM จะตางจาก static RAM การตอ dynamic RAMโดยทวไป

ตองใช dynamic RAM controller ดวย

ขาของ memory ตางขนาดกนจะถกสรางใหมตาแหนงและหนาทของขาใกลเคยงกนใหมากทสด

ทาใหเราสามารถออกแบบวงจรใหใชกบ memory ไดหลายขนาดโดยการใช DIP switch เลอก

6.2 การถอดรหสตาแหนง

การเลอกตาแหนงจะประกอบไปดวยสญญาณ 2 สวน คอ สญญาณ high address

(A15 - An+1) และ low address (An - Ao)

สวนของ low address สามารถตอเขากบขา address ของ memory ไดโดยตรง แตสวนของ high

address ซงม 3 วธดวยกน คอ

1. ใช logic gates

2. ใช decoder เชน 2-line-to-4-line decoder 1-of-4 74LD139,155,156, 539

3-line-to-8-line decoder 1-of-8 74LD138, 538, 137 (ม latch)

4-line-to-16-line decoder 1-of-16 74LD154, 159

3. ใช magnitude comparator IC (เปลยน address ได)

ตวอยาง ตองการตอ

ขนาด ตาแหนง จานวนสญญาณ

ROM 4K 0000 – 0FFF 12 เสน (A11 – A0)

RWM 4K 1000 – 1FFF 12 เสน (A11 – A0)

ROM RWM

Begin address 0000 0000 0000 0000 0001 0000 0000 0000

End address 0000 1111 1111 1111 0001 1111 1111 1111

An - Ao

CE

OE

D7- D0

Memory

High

Address

Decoder

MEMRD

A15 - An+1

An – A0

Page 60: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

60

15 14 13 12 11 - 0

ROM 0 0 0 0 X – X

RWM 0 0 0 1 X – X

Address ท CPU ใช

3000 1000

3FFF 1FFF

4000 0000

4FFF 0FFF

Address ภายใน memory chip

การใช magnitude comparator เปนอกวธหนงทเราสามารถใชในการ decode high address ได

เชน 10k x 3 : comparator สามารถใชกบการเลอก address ของ I/O ไดดวย

6.3 Partial Address Decoding และ Fold back Memory

ในกรณทระบบใช memory chips นอย เราอาจไมตองใช decoder สาหรบ high address เลยกได

แตโปรแกรมจะตอง access code หรอ data ในขอบเขตของ memory ทมอยเทานนเชน

CE

A11 - Ao

RWM

OE

WR

Data Bus

MEMWR

A11 – A0

A15A14A13A12

Address Bus

MEMRD

CE

A11 - Ao

ROM

OE

D7 - Do

Data Bus

MEMRD

A11 – A0

A15 A14 A13 A12 Address Bus

Page 61: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

61

CE

OEWR

CE

OEMEMRDMEMWR

MEMRDWR

วงจรขางบนจะทาใหสามารถ access ROM & RWM ตวเดยวกน จากหลาย ๆ ตาแหนง

Page 62: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

62

บทท 7 การตอประสานกบอปกรณ I/O

ไมโครโพรเซสเซอร Z80 ตดตอกบอปกรณภายนอกดวยขาสญญาณตาง ๆ ดงในรปท 7.1 และม

รายละเอยดตามตารางท 7.1

รปท 7.1 ขาสญญาณของ Z80 ทใชตดตอกบอปกรณภายนอก

D0-D7 เปน data bus ขนาด 8 บต ใชรบสงขอมลระหวาง Z80 กบอปกรณภายนอก

A0-A7

เปน address bus ขนาด 8 บตใชกาหนดหมายเลขชองสญญาณ I/O ในการตดตอกบ

อปกรณภายนอก Z80 ใชเฉพาะ A0-A7 กาหนดตาแหนง ทาใหตดตออปกรณภายนอก

ไดดวย address 00H-FF H

IORQ

RD (ReaD)

WR (WRite)

ทงสามสญญาณน active ดวย logic "0"

เมอ Z80 ทาคาสง IN หรอ OUT ตามขนตอนดงทจะกลาวตอไป

ตารางท 7.1 รายละเอยดของขาสญญาณของ Z80 ทใชตดตอกบอปกรณภายนอก

ในการถอดรหสเพอเรยกหมายเลขพอรตผใชจะตองเลอกใชสญญาณ ( IORQ กบ RD ) หรอ

( IORQ กบ WR ) หรอ เฉพาะ IORQ แลวแตกรณ

การตอพอรต I/O ใหกบ Z80 อาจใชไอซดจตอล หรอใชชพสนบสนน เชน 8255 หรอ Z80 PIO ก

ได

Z80 Address bus

Data bus

Control

D7 D6 D5 D4 D3 D2 D1 D0

A7

A6 A5

A4 A3 A2 A1 A0

WR

RDIORQ

Page 63: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

63

7.1 การตอประสานกบอปกรณเอาทพต

คาสง OUT (8-bit), A 2050 : D307 OUT (07H), A

2052 :

รปท 7.2 แสดงถงการทางานของคาสง OUT

Z80 จะเพม Tw 1 state สาหรบ I/O โดยอตโนมต

D3H

T2 T3 T4T1 T2 T3T1 T2 T3TwT1

คาใน accumulator

20H 20H

50H 51H Port Address 07H

07H

M1 (Opcode Fetch) M2 (Memory Read) M3 (I/O Write)คาสง OUT

A15-A8

A7-A0

D7-D0

1M

IORQ

MREQ

WR

RD

IOWR

รปท 7.2 Timing diagram แสดงการทางานของคาสง OUT

สงทจะตองออกแบบมดงน

1. decode low address (A7- A0) เพอเลอกตาแหนง output device ทตองการ เพอสราง

IOADDR pulse

2. รวมสญญาณเลอกตาแหนงจากขอ 1 IORQ , และ WR เพอสรางสญญาณเลอกอปกรณ

เอาทพต ทตองการ

อปกรณเอาทพตจะเปนอปกรณประเภท latch หรอ D flip-flop (74LS373, 74LS374 หรอ 7475)

ดงในรปท 7.3

ถา LE = 1 จะไดวา Q มคาเทากบ D

LE = 0 จะไดวา Q จะคงสถานะไว

output address

ขนาด 8 bits

Page 64: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

64

IORQ

LE

IOWRWR

รปท 7.3 การตอประสานกบอปกรณเอาทพต

7.2 การตอประสานกบอปกรณอนพต

คาสง IN A, (8–bit) 2065 : DB84 IN A, (84H)

รปท 7.3 แสดงถงการทางานของคาสง IN

Z80 จะใส Tw 1 state โดยอตโนมต

T2 T3TwT1

Input

Data

Input Port Address 84H

M3 (I/O Read)

A7-A0

D7-D0

IORQ

RD

IOSEL

รปท 7.4 Timing diagram แสดงการทางานของคาสง IN

สงทจะตองออกแบบมดงน

1. decode low address เพอเลอกตาแหนงของ input device ทตองการ

2. รวมสญญาณเลอกตาแหนง IORQ และ RD เพอสรางสญญาณเลอกอปกรณอนพตทตองการ

อปกรณอนพตจะเปนอปกรณประเภท buffer (74LS244, 74LS245) ดงในรปท 7.5

ถา OE ไม active จะไดวา เอาทพตของ buffer จะเปน high impedance

IORQ

OE

IORDRD รปท 7.5 การตอประสานกบอปกรณอนพต

input address

ขนาด 8 bits

Page 65: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

65

เราอาจสรางอปกรณอนพตและเอาทพตไวทตาแหนงเดยวกนได โดยไมมปญหาในการทางาน

7.3 Memory – Mapped I/O

2050H: 32 00 80 LD (8000H), A

0000

8000

FFFF

Timing diagram ของการตอประสานกบอปกรณอาทพตดวย memory-mapped I/O เปนดงแสดง

รปท 7.6

32H

T2 T3 T4T1 T2 T3T1

2050H 2051HRefresh address

00H

M1 (Opcode Fetch) M2 (Memory Read)

A15-A0

D7-D0

1M

MEMRD

MREQ

WR

RD

MEMWR

T2 T3T1

2052H

80H

M3 (Memory Read)T2 T3T1

8000H

Accumulator contents

M4 (Memory Read)

รปท 7.6 Timing diagram แสดงการตอประสานอปกรณเอาทพตดวย memory-mapped I/O

ตาแหนงของอปกรณเอาทพต

Page 66: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

66

A10

A11

A12

A13

A14

A15

ABC

74LS138

1E 2E 3E

1O0O

A9A8

A15ABC

74LS138

1E 2E 3E

1O0O

MSB

A7A6A5A4A3A2A1A0

RDWR

MREQ

ตอเขากบขา output enable

(active Low) ของ buffer

ตอเขากบขา latch enable

(active High) ของ latch

รปท 7.7 ตวอยางการตอประสานดวย memory-mapped I/O

จากรปท 7.7 ซงแสดงตวอยางการตอประสานอปกรณอนพตและเอาทพตดวย memory-mapped

I/O ซงจะไดวาตาแหนงของอปกรณอนพตและเอาทพตเปนดงน

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ตาแหนงเอาทพต 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 = 82FF

ตาแหนงอนพต 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 = 86FF

คาสงทใชกบ memory-mapped I/O คอคาสง LD ไมใช IN หรอ OUT

LD A, (86FFH) → input

LD (82FFH), A → output

Page 67: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

67

บทท 8 Interrupt

การรบรสญญาณภายนอกสามารถทาได 2 วธ

1. เขยนโปรแกรมตรวจสอบ

รปท 8.1 การรบรสญญาณภายนอกโดยการเขยนโปรแกรมตรวจสอบ

ถามหลายสญญาณ สญญาณทถกตรวจสอบกอนจะมลาดบความสาคญสงกวาโดย

อตโนมต

2. ใช Interrupt

รปท 8.2 การรบรสญญาณภายนอกโดยการเขยนใช interrupt

ขอดของการใช interrupt

- ไมตองเขยนโปรแกรมใหคอยตรวจสอบสญญาณภายนอก

- การตอบสนองแนนอนกวาการใชโปรแกรมตรวจสอบ

ทาอะไรบางอยาง

Interrupt service

RETI

มสญญาณภายนอกเขามา

ขดจงหวะการทางาน

สญญาณภายนอก?

ทาอะไรบางอยาง

ไมม

เสยเวลาในการคอยตรวจเชค

Page 68: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

68

Interrupts ม 2 แบบ คอ

1. Maskable interrupt (INT) เปน interrupt ทจะถกละเลยหรอชะลอได หากไมโคร

โพรเซสเซอรกาลงทางานอนทสาคญ คอเลอกทจะ enable หรอ disable ได

2. Nonmaskable interrupt (NMI) เปน interrupt ทจะตองตอบสนองอยางทนถวงท

โดยทผใชไมสามารถหยดยงหรอ disable ไดดวซอฟตแวรควรใชในกรณฉกเฉน

8.1 ความรเบองตนสาหรบ Interrupt I/O ใน Z80

Z80 มขาอนพตสาหรบทใชเกยวกบการ interrupt อยดวยกน 2 ขา คอ INT สาหรบ Maskable

interrupt และ ขา NMI สาหรบ Nonmaskable interrupt

รปท 8.3 โครงสรางของ interrupts ของ Z80

ม 8 ตาแหนง (0000H, 0008 H , 0010 H, 0018 H,

0020 H, 0028 H, 0030 H และ 0038 H)

คาสงเหลานใช 1 byte 7 6 5 4 3 2 1 0

1 1 X X X 1 1 1

RST 00H → 0 0 0

RST 08H → 0 0 1

RST 10H → 0 1 0

RST 18H → 0 1 1

RST 20H → 1 0 0

RST 28H → 1 0 1

RST 30H → 1 1 0

Z80 interrupts

NMI INT

Mode 1Mode 0 Mode 2

0038 H 0000 H - FFFF H

ใช register I

รวมกบฮารดแวรใน

การเลอกตาแหนง

ใดๆ ใน memory

0066H

อปกรณทขอ

interrupt จะตอง

สงคาสงประเภท

นใหกบ Z80

CPU

Page 69: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

69

8.2 การ enable และ disable interrupt

คาสง EI (Enable Interrupt)

- มขนาด 1 byte

- ใชในการ reset คา interrupt flip-flops เพอใหสามารถรบสญญาณ INT จากภายนอก

ได โดยทรายละเอยดเกยวกบ interrupt flip-flops ทงสอง (IFF1 และ IFF2) จะกลาวใน

หวขอถดไป

โดยท INT จะถก disable เมอ

• ใชคาสง DI (Disable Interrupt) ซงจะกลาวในหวขอยอยถดไป

• System reset

• Z80 ตอบสนองตอสญญาณ interrupt (interrupt acknowledge) วธน Z80 จะใช

ปองกนการเกด interrupt ซอน

รปท 8.4 การใชคาสง EI เพอปองกนการเกด interrupt ซอน

Z80 จะตรวจเชคสญญาณการ interrupt ใน T-state สดทายของแตละ instruction cycle ถาพบ

สญญาณ INT active กจะเขาส interrupt process ตามรปท 8.4

M1 กบ IORQ จะ active เพอเปนการรบร interrupt (interrupt acknowledge)

INTA

Z80 จะใส Tw1 + Tw2 โดยอตโนมต

อปกรณทางฮารดแวรเมอไดรบ INTA จะตองสงคาสง RST XXH ไปไวบน data bus จากนน

Z80 จะเขาสการ refresh

คาสง RST XXH จะม operation ดงตอไปน

Interrupt service routine

EI

RETI

External

interrupt

request

Interrupted

routine

Enable interrupt ใหมอกครงหนง

EI จะมผลหลงจากทาคาสงอกคาสงหนงเสรจแลว ดงนน

จะมผลหลงจากทคาสง RETI ไดถก execute แลว

Page 70: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

70

รปท 8.5 การทางานของคาสง RST XXH

คาสง DI (Disable Interrupt)

- มขนาด 1 byte

- ใชในการ reset คา interrupt flip-flops ทงสอง (IFF1 และ IFF2) ซงจะกลาวในหวขอถดไป

- ใชเมอไมตองการให Z80 รบรสญญาณ INT

คาสง DI นไมมผลตอการ interrupt แบบ NMI

8.3 Interrupt flip-flops

CPU จะทาการตรวจสอบสถานะภาพตอการตอบสนองการ interrupt ท IFF หรอ interrupt

flip-flop ในกรณของ Z80 จะมทแสดงสถานะภาพ ในการ interrupt อย 2 บต คอ IFF1 และ IFF2

โดยทงสองบตนจะขนอยกบผลทไดดวยจากการกระทาของ CPU หรอการเขยนโปรแกรมโดยใช

คาสงในการ set หรอ reset flip-flops

หลกการทสาคญคอ IFF1 ทาหนาทเปนตวกาหนดการ enable หรอ disable ของการ interrupt

โดยท IFF2 จะมหนาทหลกในการเกบขอมลชวคราวของ IFF1 ในขณะทมการ reset CPU ทางขา

reset ทง IFF1 และ IFF2 จะไดรบการ reset ไปดวย การแสดงสถานะ "0" ของ IFF1 จะเปนการ

disable การ interrupt กลาวคอ IFF1 = "0" CPU จะไมรบรตอการ interrupt ทเขามาทาง INT การ set

IFF สามารถกระทาไดดวยคาสง EI โดยสถานะภาพของ IFF1 และ IFF2 ทจะเปลยนแปลงเนองจาก

การกระทาตาง ๆ สรปไดดงตารางในรปท 8.6

จากรปท 8.6 พอสรปไดวา การกาหนดการ enable จะตองทาการ set flip-flop IFF1 หรอ

กลาวอกนยหนง การยอมใหเกดการ interrupt ไดกตอเมอ CPU ตรวจสอบ IFF1 วาอยในสภาวะ

enable หรอไมการตรวจสอบสภาวะ enable วาไดรบการ enable หรอ disable ในบางกรณทาไดโดย

การตรวจสอบทาง parity bit นนคอ การกระทาคาสง LD A, I และ LD A, R จะมผลใหคาของ IFF2

ไปเกบยง parity flag

(SP – 1) ← PCH เกดในชวง M2 SP ← SP-1

(SP – 2) ← PCL (SP) ← PC H

SP ← SP-2 เกดในชวง M3 SP ← SP-1

PC ← 00xx H PC ← 00xx H

Page 71: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

71

การทางาน IFF1 IFF2 หมายเหต

CPU reset 0 0 INT ถก disable

คาสง DI 0 0 INT ถก disable

คาสง EI 1 1 INT ถก enable หลงคาสงถดไป

LD A, I • • parity flag → IFF2

LD A, R • • parity flag → IFF2

NMI operation 0 • INT ถก disable

INT operation 0 0 -

คาสง RETN IFF2 • IFF2→ IFF1

คาสง RETI • • -

หมายเหต: “•” หมายถง ไมเปลยนแปลง

รปท 8.6 สถานะของ interrupt flip-flops IFF1 และ IFF2

เมอมการ interrupt แบบ NMI ขนจะเกดสภาวะ disable ทนทท IFF1 กลาวคอมนจะได รบ

การ reset นนคอระหวางการinterrupt แบบ NMI น การ interrupt แบบอนจะเขามาอกไมได CPU จะ

ไมรบรทงสนสถานะเดมกอนการ interrupt แบบ NMI (สถานะการ disable หรอ enable) จะไดรบการ

เกบรกษาไวท IFF2 ซงระหวางนจะไดรบการตรวจสอบไดเชนกนวา กอนการเขาไปสโหมด NMI

สภาวะการเปนอยางไร และเมอกลบเขาโปรแกรมหลกดวยคาสง RETN จะทาใหสถานะเดมเกบ

รกษาไวใน IFF1 ใหมการตอบสนองตอ INT กจะทาให IFF1 และ IFF2 ไดรบการ reset เชนกน

ดงนนเมอมการ interrupt แบบ INT สญญาณ INT ครงตอไปจะไมสามารถไดรบการตอบสนอง

จนกวาจะมคาสง EI INT จงจะไดรบการตอบสนองนนเอง สวนการ execute คาสง RETI จะไมมผล

ทาให IFF1 และ IFF2 เกดการเปลยนแปลง

8.4 คาสง Returns ตางๆ

คาสง RET - return จาก subroutine

RETI - return จาก interrupt service routine

RETN - return จาก non-maskable interrupt

คาสง RET ใชแทนคาสง RETI ได แตในบางกรณ อปกรณ I/O จะถกสรางใหรจกกบคาสง

RETI ซงจะทาใหเราสามารถตอพวงอปกรณทตอง interrupt Z80 ไดหลายตว สวนคาสง RETN นน

นอกจากจะทาหนาทของ RET แลว จะทาหนาทตอไปน

ตอนเกด NMI IFF1 ← 0 สวนคาของ IFF2 จะคงเดม

RETN IFF1 ← IFF2 copy

Page 72: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

72

Interrupt จะไมเกดขนในขณะทมสญญาณ BUSRQหรอขณะทกาลงทางานใหกบ interrupt

ทม priority สงกวา (เราตองออกแบบใหทางานในลกษณะน)

มอกลกษณะหนงคอตามรปท 8.7 คอสญญาณ INT ทาใหออกจากคาสง HALT ได

รปท 8.7 การออกจากคาสง HALT เนองจากสญญาณ INT

8.5 Non-maskable Interrupt (NMI)

การ interrupt ชนดนจะปอนเขาทางขา NMI ของ CPU โดยทเมอ CPU รบสญญาณนแลว

CPU จะไมกระทาคาสงถด ไป แตจะตอบสนองตอการ interrupt โดยการเปลยนคาของ PC ใหเปน

0066H เพอใหภาวะการ fetch ครงตอไปเกดขนท address น การตอบสนองในกรณของ NMI น CPU

ถอวาเปนสวนสาคญมากทจะตองกระทาโดยทคาสงทางซอฟตแวรหรอขบวนการอนใดไมสามารถ

เขามาหยดยงการ interrupt ชนดนได โดยทจะม priority สงกวา INT แตตากวา BUSRQ การ

interrupt ดวยวธนจงมกใชในกรณวามเหตการณสาคญทสด จากหลกการทวไปของการ interrupt คา

เดมของ PC ท CPU จะกระทาตอไปในโปรแกรมหลกจะไดรบการเกบรกษาไวใน stack และการ

กลบคนสโปรแกรมหลกเดมนนกระทาไดดวยคาสง RETN (Return from non-maskable interrupt)

NMI เปนแบบ falling edge-sensitive เมอมสญญาณ NMI เขามาเมอใดสญญาณ NMI นจะ

ถก latch ไวกอนภายใน จนกระทงทาคาสงปจจบนเสรจ จงจะเกดการ interrupt

NMI มขนตอนดงตอไปน

1. เมอเกดขอบขาลง ทขาNMI Z80 จะคาง (latch) สญญาณ interrupt request ไวภายใน

2. ในชวง T-state สดทายของแตละคาสง Z80 จะตรวจสญญาณ Interrupt ทเขามาถาพบวา

มสญญาณของขาลงทถกคางไวกอนหนาน และ BUSRQ ไม active จะเกด interrupt

3. Z80 จะเกบคา PC ปจจบนไวบน stack

4. IFF1 จะถกเปลยนคาเปน 0

5. Z80 เรมตนทางานใน interrupt service routine ทตาแหนง 66 H โดยไมมสวนของ

ฮารดแวรเพมเตม (คลาย IM0 ทจะกลาวตอไป)

Interrupt service routineHALT INT

ออกจากคาสง HALT

กลบไปคาสงถดจากคาสง HALT

Page 73: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

73

6. เมอทางานจนกระทงเจอคาสง retn Z80 จะคดลอกคาของ IFF2 ไปยง IFF1 และ

กลบไปทางานตอในสวนของโปรแกรมทถกขดจงหวะ (interrupted routine) (pop คา

return address ใน stack มาใสใน PC)

8.6 Maskable Interrupt (INT)

ในการ interrupt ชนดน ผใชตอง interrupt ผานเขามาทาง ขา INT ของ CPU เมอ CPU ไดรบ

สญญาณนแลว CPU จะตรวจสอบสถานะของตวเองวาจะตอบสนองตอการ interrupt หรอไม การท

จะตอบสนองหรอไมสามารถโปรแกรมไดดวยซอฟตแวร ดงนนผโปรแกรมจงสามารถกาหนด

สภาวะการ interrupt ใหไดรบการตอบสนองตรงเฉพาะสวนใดสวนหนงของโปรแกรมได การ

interrupt ดวยวธนมอยดวยกน 3 โหมด ซงการแยกโหมดกทาไดดวยการกาหนดในคาสงทาง

ซอฟตแวร โดยแยกเปนโหมด 0 (IM0) โหมด 1 (IM1) และ โหมด 2 (IM2)

8.6.1 การ interrupt โหมด 0

ในโหมดนผออกแบบ CPU Z80 ไดออกแบบมาเพอให Z80 ทาการตอบสนองตอสญญาณ

interrupt เหมอน 8080 ทกประการ กลาวคอเมอมการ interrupt เกดขนและโปรแกรมทางซอฟตแวร

ได set mode การรบ interrupt เปน โหมด 0 (IM0) และenable การ interrupt ไวการทางานของ

CPU จะหยดการ fetch คาสง ถดไป แตจะตอบรบการ interrupt ดวยการสงสญญาณตอบรบดวย M1

กบ IORQ อานขอมล 1 byte เขามาทาง data bus ขอมล 1 byte นไดรบการสงมาจาก อปกรณ I/O

ท interrupt มา เมอ CPU อานขอมล byte นมา CPU จะถอวาเปน opcode ทนทและจะตความหมายใน

การทางาน คาสงขนาด 1 byte ทเหมาะในการใชในการinterruptกคอคาสง RST เมอ CPU execute

คาสง RST CPU จะเกบขอมลเดมใน PC ไวท stack แลวเปลยนคา PC ใหมตามลกษณะของการ RST

นนๆ ดงนน CPU จะกระโดดขามไปทางานตามทตองการของการ interrupt ได การตอบสนองตอการ

interrupt ดวยการสงสญญาณ 1M และ IORQ ทาการ fetch ขอมลจาก I/O มา execute นอาจทาได

โดยการให I/O สงคาสงอนทไมใชคาสง RST (คาสง byte เดยว) แตเปน คาสงหลาย byte เชนคาสง

CALL ซงเปนคาสงขนาด 3 byte โดย I/O สงขอมลขณะตอบรบการ interrupt ( 1M + IORQ ) ดวย

ขอความ CDH (CALL) เมอ CPU execute คาสงนกจะทราบวาเปนคาสง CALL ซงยงตองการขอมล

เพมอก 2 byte CPU จะสราง machine cycle ตอไปในการอานหนวยความจาเหมอนกระทาคาสง

CALL จรง ๆ ในการนเราจะตองใชวงจรทางฮารดแวรประกอบเพอให I/O สงขอมลอก 2 byte ตาม

ไปใหไดซงการ interrupt ดวยวธนอาจกาหนดไดดวยเทคนคทแตกตางกนตามการออกแบบของแต

ละบคคล

โดยปกตการ set ใหอยในโหมดนกระทาไดดวยการสงทางซอฟตแวรดวยคาสง IM1และการ

กาหนดใหรบการ interrupt ไดหรอไมกระทาไดดวยคาสง EI และ DI และเพอใหการทางานเหมอน

Page 74: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

74

อยในโหมดของ 8080 ทกประการ ดงนนหลงจากการ reset CPU CPU จะ set ตวเองใหอยในโหมด 0

นโดยอตโนมต

ขนตอนการเกด interrupt ในโหมด 0

โหมด 0 เปนวธการ interrupt ทเหมอนกบ 8080 และ 8085

1. ใชคาสง IM 0

EI

2. ในชวงขาขนของ T-state สดทายของแตละคาสง Z80 จะตรวจสอบสญญาณ INT

3. ถา INT active Z80 จะทาคาสงปจจบนจนเสรจ แลวทาการ disable IFF ทงสอง จากนน

จงสงสญญาณ INTA ( IORQ และ M1 ) โดยทไมโครโพรเซสเซอรจะไมรบ INT อก

จนกวา IFF จะถก enable ใหมอกครงหนง

4. ใชสญญาณ INTA เพอใสคาสง RST XXH ลงใน data bus ดงรปท 8.8

2 DI74 DI66 DI58 DI411 DI313 DI215 DI117 DI0

74LS244Octal Buffer18

1614129753

Z80

INT

INTA

1MIORQ

D7

D0

+5V

10k

+5V

10k

1 19

F7H

enable รปท 8.8 การใช Interruptโหมด 0 (ทมา: Gaonkar, 1992)

5. เมอ Z80 รบคาสง RST XXH น กจะเรมทาตามคาสง โดยเกบคา PC ปจจบนไวบน stack

กอนจะไปเรมทางานในตาแหนงทระบไวในคาสง RST ดงรปท 8.9

รปท 8.9 การเกบคา PC ใน interrupt service routine

Interrupt

service

routine

00XXH: PUSH …

PUSH …

POP …

POP …

EI

RETI

External

interrupt

request

INT

Interrupted routine

Page 75: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

75

6. ปญหาทอาจเกดขนได

• สญญาณ INT สนเกนไป หรอมาไมถกจงหวะ

• สญญาณ INTนานเกนไป จะเกด interrupt ซา เพราะวา INT เปนแบบ level sensitive

วธแกปญหา คอการใช D Flip-Flop ดงในรปท 8.10

INT

INTA M1IORQRESET

รปท 8.10 การแกปญหาโดยใช D Flip-Flop

8.6.2 การ interrupt โหมด 1

ในโหมดนผโปรแกรมสามารถกาหนดไดดวยคาสง IM1 การ interrupt ในโหมดนจะกระทา

เหมอนกนกบ interrupt ทกประการแตจะแตกตางกนกเพยงการเรมการทางาน (restart) มาทตาแหนง

0038H (กรณ non-maskable ไปกระทาท 0066H) และจานวนคาบเวลาทใชใน โหมด 1 นมมากกวาใน

non-maskable ทงน เพราะในโหมดน CPU ตองเพม Tw ขนอก 2 states การ interrupt ในโหมดน

สามารถ disable ไดดวยซอฟตแวร

8.6.3 การ interrupt โหมด 2

ในโหมดน interrupt routine จะอยทใดกไดในหนวยความจา 0000 H – FFFF H โดยใชคาท

เกบใน register I และฮารดแวรรวมกน เปน pointer ชไปยง interrupt vector table ซงเกบ address

ของ interrupt อกทหนง ดงตวอยางในรปท 8.11

รปท 8.11 ตวอยางของ interrupt โหมด 2

Page 76: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

76

ในโหมดนทาให Z80 มขดความสามารถเกยวกบการ interrupt สงขนมาก

การ interrupt ในโหมดนกาหนดไดดวยคาสง IM 2 และการจะให CPU ตอบสนองหรอไมกยงใช

คาสงโปรแกรมไดเชนกนโดยใชคาสง EI และ DI การกระโดดไปยงโปรแกรมอนในขณะเมอ CPU

ตอบสนองตอการ interrupt ในกรณนจะไปทใดกได โดยใช addressในการกระโดดนไดถง 16 บต

ซงทาใหการ interrupt ทาไดสะดวกและรวดเรวขนอกมาก

กรรมวธการตอบสนองตอการ interrupt ในกรณนคอ เมอมสญญาณ INT เขามาและ CPU

ตรวจสอบไดในตอนสดทายของคาสง CPU จะตอบสนองดวยการสง M1 กบ IORQ ออกไป

สญญาณ M1 กบ IORQ จะเปนตวบอกอปกรณทสง INT มาใหสงขอมลขนาด 1 byte เขาทาง data

bus สาหรบในโหมดนขอมลทสงจาก I/O ขนาด 1 byte ทเขาทาง data bus น CPU ถอวาเปน vector

ของ การ interrupt โดยขอมลในบต D0 จะตองเปน "0" สวนบตอนจะเปนอะไรกได CPU จะนา

vector นไปเปนขอมล address byte ทมนยสาคญตาและขอมลจาก register I ภายใน CPU เปนขอมล

byte ทมนยสาคญสง เรยกหาไปยงขอมลในหนวยความจาเพออานขอมลในหนวยความจา 2 bytes

ตดกนนนมา load ใส PC หรอเปนการอาง addressให PC แบบโดยทางออม (Indirect addressing

mode) นนเอง

สาหรบกรณนจะเหนวาเราสามารถ set คาใน register I ใหเปนอะไรกไดและ I/O จะสงขอมล

vector มาประกอบรวมเพอบอกถงคาตารางในหนวยความจาทตองการ ดวยวธการเชนนจะทาใหการ

กระโดดไปยงโปรแกรมยอยเกดขนทใดกได อปกรณ IC ททางานรวมโดยใช interrupt mode นม

หลายเบอรดวยกน เชน Z80PIO Z80CTC Z80SIO ฯลฯ ซงอปกรณ interface เหลานสามารถสง

vector ใหกบ CPU ไดอยางมประสทธภาพ การ interrupt ในโหมดน CPU ตองการเวลาถง 19 states

โดยใช 7 states ใน การ fetch คา vector ใช 6 states ถดไปในการเกบขอมล PC เดม และใชอก 6

states ในการอานขอมลจากหนวยความจามายง PC

ตวอยางการตอประสาน A/D converter ใน interrupt โหมด 1

เมอเกด interrupt ในโหมด 1 Z80 จะไปเรมตนทางานทตาแหนง 0038 H โดยไมตองม

ฮารดแวรเพม

การทางานของ ADC 0801

- รบอนพตทขา Vin (+) และ Vin (-)

- ม internal clock กาหนดความถโดยใช RC โดยท conversion time จะขนอยกบความถ

ของสญญาณนาฬกา

การแปลงเรมจากการใหสญญาณ CS และ WR (ใชเปน start signal)

เมอแปลงเสรจจะสงสญญาณ INTR ให Z80 Z80 จะมาเอาขอมลโดยใหสญญาณ CS และ RD แลว

อานขอมลจาก data bus การอานขอมลจะทาเปนการ reset การทางานของ A/D โดยอตโนมต (หยดสง

สญญาณ INTR ) โดยไมตองใชฮารดแวรเพม

Page 77: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

77

ตวอยางโปรแกรม ORG 0 JP START ORG 38H JP ADC START: ORG 2000H LD SP, 3000H LD HL, BUFFER

LD B, จานวน byte

IM 1 EI

OUT (0F8H), A ;เรมตนการแปลงสญญาณ

WAIT: HALT JP NZ, WAIT … ADC: IN A, (0F8H) LD (HL), A INC HL OUT (0F8H), A DEC B EI RETI

BUFFER: DFS จานวน byte

8.7 Timing diagram สาหรบการตอบสนองตอการ interrupt ของ CPU

การสนองตอการ interrupt ของ CPU มลกษณะสาคญทเราจะตองพจารณาในแงของ

ไดอะแกรมเวลา เพอการเชอมตอกบอปกรณ I/O ในแงทางฮารดแวรจะไดเปนไปอยางถกตอง โดย

การตอบสนองจะเกดตามลาดบดงน

1. อปกรณ I/O สงสญญาณ interrupt มา โดยการทาใหขา INT อยในลอจก "0"

2. CPU จะตอบสนองตอการ interrupt ดวยการสง M1 ลอจก "0" กอนเพอใหอปกรณ I/O เตรยม

จดการเกยวกบขบวนการจดลาดบกอน แลว IORQ จาก CPU จงสงตามมา การให IORQ มาทหลง

M1 กเนองจากใหชวงเวลา delay ระหวางนเปนตวกาหนด IEI และ IEO ของการกระทา daisy chain

เมอ IORQ ออกไปท I/O และถา IEI ของอปกรณนนเปนลอจก "1" ตว I/O นนกจะสง vector เขามา

ทาง data bus และ CPU จะใช IORQ และ M1 เปน pulse สงอานเขาทาง data bus และการทา daisy

chain อปกรณทสง interrupt ได จะให IEO เปนลอจก "0" เพอปอนเขา IEI ของตวอนเปนการบลอก

การสง vector จาก I/O ตวอน

3. การเคลยร interrupt โดยปกตอปกรณ I/O จะ active ในการสง interrupt ไดตองให IEI = 1 และ

IEO = 0 ดงนนเมอเสรจสนการกระทาการinterrupt แลวสถานะของการ I/O จะตอง เคลยรตวเองได

นนคอเมอมการกระทาคาสง RETI (ED 4D) กจะมการบอกใหอปกรณ I/O ทราบวาจบสนการ

interrupt แลว เพอทาให IEO เปน "1" เพอการenable ตวI/O ทมความสาคญนอยกวา ความสมพนธ

ของ INT NMI และ BUSRQ

Page 78: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

78

รปท 8.12 แสดงการจดลาดบการทางานภายในสาหรบการตรวจสอบการ interrupt ทงแบบ

INT และ NMI รวมทงขบวนการขอใชบส (BUSRQ) โดยมลกษณะการทางานทนาสนใจดงน

1. การตรวจสอบสญญาณ INT และ NMI CPU จะทาการตรวจสอบทกๆไซเคลสดทายของ

สญญาณนาฬกาของแตละคาสง

2. สญญาณBUSRQ จะไดรบการตรวจสอบทก ๆ ตอนสดทายของ machine cycle

3. เมอ CPU อยในสภาวะ DMA จะไมยอมรบรการขอ INT หรอ NMI

4. การจดการตอบสนองจะเปนไปตามลาดบดงน BUSRQ NMI และ INT

NMI

BUSRQ

INT

NMI

รปท 8.12 การจดลาดบการทางานภายในสาหรบการตรวจสอบการ interrupt ทงแบบ INT และ NMI

Page 79: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

79

Interrupt request and acknowledge cycle

รปท 8.13 Timing diagram ของการตอบสนองตอการ interrupt (ทมา: Gaonkar, 1992)

จากรปท 8.13 เปนการแสดง timing diagram ของการ interrupt โดยท CPU จะทา

การตรวจสอบสญญาณ INT ทก ๆ pulse สญญาณนาฬกาลกสดทายของทกคาสงทกระทา

แตอยางไรกตามการตรวจสอบ นจะไมเกดผลหากซอฟตแวรไดสง DI ซงจะทาให interrupt

flip-flop ภาย ในไมไดรบการเซท นอกจากน สญญาณ BUSRQ active การ interrupt กไมได

รบการตอบสนอง เชนกน เมอการตอบสนองตอ INT เกดขน CPU จะสรางสถานะพเศษใน

M1 ตอมา ใน สถานะพเศษของ M1 น IORQ จะ active แทน MREQ เพอเปนการ

ตอบสนองตอการ interrupt และตอนทายของ IORQ CPU จะทาการอานขอมล 8 บตเปน

เวคเตอรสาหรบการ interrupt จาก data bus สงเกตวาในกรณน CPU จะสรางสญญาณ Tw 2

states ขน อยาง อตโนมต การสราง Tw ขนมากเพอชะลอเวลาใหอปกรณภายนอกตรวจสอบ

ตวอปกรณทสราง interrupt และ จดลาดบความ สาคญ (priority) ของสญญาณท interrupt

WAIT

* Tw1 และ Tw2 คอ wait state ซง Z80 จะใสเพมใหโดย

T1 T2 Tw1* T w2* T3 T4 T5

Interrupt acknowledge M1

A15-A0

1M

MREQ

D15-D0

IORQ

INTA

PC Refresh Address

RST Inst.

INT

Interrupt request

last M cycle

current instruction

CLK

Page 80: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

80

เรายงสามารถเพม state การ WAIT ขนอกไดเพอให CPU รออปกรณทจะสง vector

ของการ interrupt ทาง data bus

Nonmaskable interrupt response

จากรปท 8.14 เปน diagram เวลาของการตอบสนองตอการ interrupt แบบ non-

maskable เมอถง pulse ของสญญาณนาฬกาลกสดทายกอนการกระทาการจบคาสง แตละ

คาสง CPUจะทาการตรวจสอบ ขา NMI และถา NMI มคา active (=0) CPU กจะ latch ไวแลว

ตอบสนองตอการ interrupt ทนท การ interrupt ดวยวธนถอวา CPU ใหความสาคญสงสด

และขบวนการทาง ซอฟตแวรกไมสามารถทจะปองกนไมให CPU ตอบสนองได การ

ตอบสนองจะเกดขนทนทดงนนการ interrupt ดวยวธนจงนามาใชในกรณท สาคญเปนพเศษ

การ interrupt วธน CPU จะสงขอมล เดมทอยใน program counter ไปเกบไวท stack แลวเซท

คา program counter เปนคา 0066H เพอ กระทาในสวนของโปรแกรมยอยทตาแหนง 0066H

รปท 8.14 Timing diagram ของการตอบสนอง Interrupt แบบ NMI (ทมา: Gaonkar, 1992)

8.8 Multiple Interrupts และ Priorities

เราสามารถออกแบบวงจรใหอปกรณ I/O หลายอปกรณขอขดจงหวะการทางานของ Z80 ได

วธการท Z80 จะแยกแยะวาอปกรณใดทขอ interrupt ทาได 2 วธ คอ

- polling method

- interrupt vector method

T1 T2 T3 T4 T5

Interrupt acknowledge M1

A15-A0

1M

MREQ

RD

RFSH

PC Refresh Address

NMI

last M cycle

CLK

Page 81: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

81

8.8.1 Polling Method

INTINT0

RDIORQ

INT1

INT2

INT0

INT1

INT2

รปท 8.16 Polling Method (ทมา: Gaonkar, 1992)

กาหนดใหมพอรตหนง รบอนพตทเปนสญญาณ INTX จากอปกรณ I/O เราสามารถเขยน

โปรแกรมให interrupt service routine ตรวจทตาแหนงของ input port นวา มสญญาณ INTX จาก

อปกรณใด สญญาณ INTX ใดทตรวจกอน จะม priority สงกวาโดยอตโนมต

INT

รปท 8.17 การเขยนโปรแกรมตรวจบตตางๆของ Polling Method

ตวอยางของการพฒนา Polling Method

IORDINT

M1GS E

รปท 8.18 ตวอยางPolling Method (ทมา: Gaonkar, 1992)

Page 82: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

82

สวนของโปรแกมเปนดงน ORG 0 JR START ORG 38H JP ADC_INTR START: LD SP, STACK LD HL, DATA1 LD DE, DATA2 IM 1 EI OUT (ADC1), A OUT (ADC2), A

MAINLOOP: : : : JP MAINLOOP ADC_INTR: PUSH AF IN A, (0FFH) AND 3 RRA CALL C, DEVICE1 RRA CALL C, DEVICE2 POP AF EI RETI DEVICE1: PUSH AF IN A, (ADC1) LD (HL), A OUT (ADC1), A POP AF RET DEVICE2: PUSH AF IN A, (ADC2) LD (DE), A OUT (ADC2), A POP AP RET DATA1: DFS 1 DATA2: DFS 1 END

8.8.2 Interrupt Vector Method

วธนใช interrupt โหมด 2 วงจรในรปท 8.19 ใช 74LS148 (8-to-3 Priority Encoder)

ถา input I7 เปน active low output A2 – A0 = 1 1 1 = 0 0 0

ถา input I4 เปน active low output A2 – A0 = 1 0 0 = 0 1 1

ถา I7 และ I4 เปน active พรอมกน A2 – A0 = 1 1 1 = 0 0 0

ในโหมด 2 น Z80 จะรบ interrupt vector address เปนเลขค ดงนนเราจงใหบตD0 เปน 0

เรมการแปลง ADC

ใช 74LS366 invert

กลบมาอกครง

Page 83: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

83

IORDINT

M1GS E

รปท 8.19 Interrupt Vector Method (ทมา: Gaonkar, 1992)

รปท 8.20 Interrupt Vector Method

Page 84: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

84

บทท 9 อปกรณตอประสานทสามารถโปรแกรมได

อปกรณตอประสานทสามารถโปรแกรมได (Programmable Interface Devices) เปนอปกรณทม

หนาทตอประสานอปกรณอนพตหรอเอาทพต โดยทหนาทของอปกรณตอประสานทสามารถ

โปรแกรมไดนเปลยนแปลงไดโดยการสงงานผาน Control register ทอยภายในอปกรณตอประสานท

สามารถโปรแกรมได

ในบทนจะกลาวถงอปกรณตอประสานทสามารถโปรแกรมได 2 ชนดคอ

• Z80PIO

• 8255A

9.1 แนวคดพนฐานของอปกรณตอประสานทสามารถโปรแกรมได

การตอประสานกบอปกรณอนพตหรอเอาทพตในบททผานมา เปนเพยงการตอประสานอยาง

งายโดยกระทาภายใตสมมตฐานทวา อปกรณ I/O เหลานนมความพรอมสาหรบการถายโอนขอมล

ตลอดเวลา ซงในความเปนจรงสมมตฐานนนไมไดเปนจรงเสมอไป

อปกรณ I/O บางตวจะทางานชากวา CPU มาก เชน เครองพมพแบบ dot matrix หรอ

แปนพมพ เพอปองกนการสญเสยขอมลหรออานขอมลเดมซา จาเปนตองมสญญาณ handshake

ระหวางอปกรณ I/O กบ Programmable I/O(PIO) chip

นอกจากน อปกรณ I/O บางตวไมสามารถสรางสญญาณ INT อปกรณ I/O บางตว อาจทา

หนาททงรบและสงขอมลได ดงนน programmable I/O device จะตองมสงตอไปน

1. Input และ Output registers (Latches สาหรบคงขอมลเอาไว)

2. Tri-state buffers ทมความสามารถใหขอมลผานได 2 ทศทาง

3. Handshake และ interrupt signals

4. Control logic

5. Chip select logic

6. Interrupt Control logic

9.2 การสรางตวรบสงทสามารถโปรแกรมไดอยางงาย (Programmable Transceiver)

เพอใหเขาใจถงการเขยนโปรแกรมควบคมอปกรณตอประสานทสามารถโปรแกรมได หวขอ

นอธบายถงการสรางอปกรณรบสงอยางงายซงทามาจาก buffer แบบ 2 ทศทางทสามารถโปรแกรมได

โดยใชชป 74LS245 (bidirectional tri-state octal buffer)

Page 85: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

85

ชป 74LS245 ประกอบดวย buffer 2 ทศทางแบบ 3 สถานะจานวน 8 ตว โดยการไหลของ

ขอมลภายใน buffer จะเกดขนเมอสญญาณ G active (มคาเปน 0) และ มสญญาณ DIR (direction)

ทาหนาทกาหนดทศทางการไหลของขอมล รปท 9.1 แสดงถงลอจกของ buffer ภายในชป 74LS245

เพยง 1 ตว ซงในความจรงแลวนน ชป 74LS245 ประกอบดวย buffer ในลกษณะนทงหมด 8 ตว

G รปท 9.1 แผนภาพทางลอจกของ buffer เพยง 1 ตวภายในชป 74LS245

(ทมา: Gaonkar, 1992)

การควบคมการไหลของขอมลภายในชป 74LS245 เปนดงตารางท 9.1

G DIR การไหลของขอมล

0 0 ขอมลไหลจาก B ไป A (buffer ทาหนาทเปน input)

0 1 ขอมลไหลจาก A ไป B (buffer ทาหนาทเปน output)

1 X ไมมการไหลของขอมล (A และ B เปน high impedance-Z)

ตารางท 9.1 รายละเอยดของคาควบคมตางๆของชป 74LS245

ในการนเนองจากเปนการมงเนนไปยงการพฒนาอปกรณทสามารถโปรแกรมไดโดยการ

เขยนคาสง ผานไมโครโพรเซสเซอร Z80 จงจาเปนตองเพม control register เพอรองรบคาสงจากไม

โครโพรเซสเซอรโดยกาหนดโครงสรางการพฒนาระบบเปนดงในรปท 9.2

Page 86: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

86

74LS2457A

DIR

D0

Controlregister

7B

1A 1B

CS

EN

G

DI7

DI0

A0

A7A6A5A4A3A2A1

CS

รปท 9.2 ระบบการสงรบขอมลอยางงายโดยใชชป 74LS245 (ทมา: Gaonkar, 1992)

จากรปท 9.2 ไดมการใช A7-A1 จาก address bus ผาน NAND gate เพอไปเลอกใช control

register และ ชป 74LS245 ผานทาง CS (chip select) และไดมการใช A0 เพอแยกระหวางตาแหนง

ของ control register และ ชป 74LS245 รายละเอยดเปนดงในตารางท 9.2

CS (เพอเลอกใช control register และ 74LS245) GEN/

A7 A6 A5 A4 A3 A2 A1 A0

เลขฐาน

16 ตาแหนงของ

1 1 1 1 1 1 1 0 FEH port

1 1 1 1 1 1 1 1 FFH control register

ตารางท 9.2 รายละเอยดของตาแหนงของ control register และชป 74LS245

Control word คอคาทอยใน control register สาหรบการกาหนดอปกรณรบสงนใหทาหนาท

เปนตวรบขอมลหรออนพตคอ 00H (D0 = 0 และ D7-D1 เปน “don’t care” หรอในทนใหเปน 0) สวน

control word สาหรบการกาหนดใหเปนตวสงขอมลหรอเอาทพตคอ 01H (D0 = 1)

ชดคาสงขางลางนเปนการเขยนโปรแกรมเพอสงงานระบบในรปท 9.2 เรมตนโดยกาหนด

buffer ใหเปน input port เพอทาหนาทรบขอมลขนาด 1 byte

LD A,00H ;set control word ⇒ input port

OUT (0FFH),A ;write the control word to control register

IN A, (0FEH) ;get data via input port

สวนชดคาสงตอไปนเปนการเขยนโปรแกรมเพอกาหนด buffer ใหเปน output port ผานการ

สง control word 01H ออกไปยง control register ทมตาแหนงอยท FFH เพอทาหนาทสงขอมล

OutData ทมขนาด 1 byte ออกไปยง output port ทมตาแหนงอยท FEH

Page 87: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

87

LD A,01H ;set control word ⇒ output port

OUT (0FFH),A ;write the control word to control register

LD A,OutData ;load output data

OUT (0FEH),A ;send output data via output port

9.3 อปกรณ I/O แบบขนานสาหรบ Z80

Z80 PIO (Z80 Parallel I/O Device) เปนอปกรณการตอประสาน I/O ทสามารถโปรแกรม

ได ซงออกแบบมาเพอใหใชรวมกบไมโครโพรเซสเซอร Z80 โดยเฉพาะ

Z80 PIO ม port I/O จานวน 2 พอรต (พอรต A และ B) แตละ port มขนาด 8 บต

9.3.1 โหมดการทางานของ Z80 PIO

โหมดการทางานของ Z80 PIO มดงน

รปท 9.3 โหมดการทางานของ Z80 PIO

Mode 0: โหมดเอาทพตโดยทมอยดวยกน 2 ลกษณะคอ

• แบบเอาทพตอยางงาย ไมมการใชสญญาณ handshaking

• แบบมการใชรวมกบ interrupt โดยมการใชสญญาณ handshaking (สญญาณ strobe และ ready)

Mode 1: โหมดอนพตโดยทมอยดวยกน 2 ลกษณะคอ

• แบบอนพตอยางงาย ไมมการใชสญญาณ handshaking

• แบบมการใชรวมกบ interrupt โดยมการใชสญญาณ handshaking (สญญาณ strobe และ ready)

Mode 2: โหมด 2 ทศทางคอสามารถกาหนดใหเปนอนพตหรอเอาทพตกได

Mode 3: โหมดบต คอสามารถกาหนดแตละบตของทงสอง port ใหทาหนาทเปนอนพตหรอเอาทพต

ได โหมดนใชสญญาณ handshaking ไมได

Page 88: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

88

9.3.2 กลมสญญาณของ Z80 PIO

AB/DC/

CEASTB

BSTB

ARDY

BRDY

1MIORQRD

INT

รปท 9.4 Z80 PIO Logic Signals (ทมา: Gaonkar, 1992)

จากรปท 9.4 แสดงถงกลมสญญาณทง 6 กลมของ Z80 PIO ซงมคาอธบายดงน

1. Data bus (D7 - D0): เปน data bus แบบ 2 ทศทาง 3 สถานะ ขนาด 8 บต ใชในการโอนยาย

ขอมลระหวาง Z80 MPU กบ PIO

2. สญญาณ I/O: เปนสายสญญาณ I/O แบบ 2 ทศทาง 3 สถานะ ใชในการโอนยายขอมลระหวาง

PIO กบอปกรณรอบขาง (peripheral) มอยดวยกน 2 ชดโดยแตละชดมขนาด 8 บตสาหรบพอรต

แตละพอรต

• Port A: A7 - A0

• Port B: B7 - B0

3. สญญาณ handshaking: ใน PIO มสญญาณ handshaking ทงหมด 4 สญญาณ โดยแตละพอรต

จะสญญาณ ใชไดแก

• ASTB (สญญาณ stroke ของ พอรต A) - เปนสญญาณอนพตของพอรต A โดยรบมา

จากอปกรณรอบขางเขาไปยง PIO โดยท

i. ถากาหนดใหพอรต A เปน output port อปกรณรอบขางจะสงสญญาณมายง

ASTB เพอแสดงวาไดรบขอมลเรยบรอยแลว

ii. แตถากาหนดใหพอรต A เปน input port อปกรณรอบขางจะสงสญญาณมายง

ASTB เพอแสดงวาไดสงขอมลมาเรยบรอยแลว

Page 89: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

89

• ARDY (สญญาณ ready ของ port A) - เปนสญญาณเอาทพตของ port A สงออกจาก

PIO ไปยงอปกรณรอบขาง

i. ถากาหนดให port A เปน output port PIO จะใชสญญาณ ARDY นเพอบอก

อปกรณรอบขางวาขอมลพรอมแลวมาเอาไปได

ii. แตถากาหนดให port A เปน input port PIO จะใช สญญาณ ARDY นในการ

บอกอปกรณรอบขางวาไดรบขอมลแลวสงมาใหมได

• BSTB และ BRDY (สญญาณ stroke และ ready ของ port B) - เปนสญญาณ

handshake ของ port B โดยทวไปทาหนาทคลายกบสญญาณ ASTB และ ARDY ของ

port A ยกเวนในกรณท port A ถกใชใน mode 2 ซงเปนโหมดท port A ทาหนาท

รองรบการโอนยายขอมลแบบ 2 ทศทาง ซงในโหมดนนสญญาณ BSTB และ BRDY

จะถกใชรวมกบ port A

4. ไฟเลยงและสญญาณนาฬกา

5. Interrupt control logic: สญญาณทใชในการควบคม interrupt มอยดวยกน 3 สญญาณ ไดแก

• INT (Interrupt) - เปนสญญาณสงออกจาก PIO ใชในการ interrupt Z80

• IEI (Interrupt Enable In) – เปนสญญาณอนพตใชเมอตอ Z80 PIO พวงเขาดวยกน

แบบ daisy chain โดยจะใชรวมกบสญญาณ IEO รายละเอยดจะอธบายในภายหลง

• IEO (Interrupt Enable Out) - เปนสญญาณเอาทพตใชรวมกบสญญาณ IEI ในการตอ

interrupt แบบ daisy chain

6. สญญาณควบคม: ประกอบดวย 6 สญญาณ แตเมอแบงตามหนาทการทางานแลวมอยดวยกน

เพยง 2 ประเภทคอ

• สญญาณควบคมทใชในการกาหนดตาแหนงของ data port และ control register ของทง

port A และ B (ตารางท 9.3) สญญาณประเภทนไดแก

CE DC/ AB/ พอรตทเลอก

0 0 0 Data Port A

0 0 1 Data Port B

0 1 0 Control Register A

0 1 1 Control Register B

1 X X PIO ไมไดถกเลอก

ตารางท 9.3 สรปการเลอก port ของ Z80 PIO

Page 90: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

90

CE (Chip enable) - ใชในการเลอกชป

DC/ - ใชในการเลอกวาเปน control register หรอ data port

AB/ - ใชในการเลอกวาเปนของ port B หรอ A

• สญญาณควบคมทใชในการกาหนดประเภทของการทางาน อนไดแกสญญาณ 1M ,

RD และ IORQ โดยสญญาณเหลานจะถกตอกบ Z80 โดยตรง (สงเกตวา Z80 PIO ไม

มสญญาณ WR ) โดยรายละเอยดในการกาหนดการทางานเปนดงน

o การอาน: Z80 จะอานขอมลจาก register ทเลอกไว เมอสญญาณ RD และ

IORQ active

o การเขยน: Z80 จะเขยนขอมลลงใน register ทเลอกไวเมอสญญาณ IORQ

active อยางเดยวโดยทสญญาณ RD ไม active (เปนเงอนไขทวาสญญาณ RD

และ WR ของ Z80 จะไม active พรอมกน นนหมายความวาในกรณทเปนการ

เขยนขอมล สญญาณ RD จะไม active)

o การตอบสนองการ interrupt (Interrupt Acknowledge): Z80 จะตอบสนองการ

interrupt จาก PIO เมอ สญญาณ 1M และ IORQ active

o การ reset: PIO จะไดรบการ reset เมอสญญาณ 1M active ในขณะทสญญาณ

RD และ IORQ ไม active

ตวอยางการ decode address ใหกบ Z80 PIO

RD

CS

WR

IORD

IOWR

รปท 9.5 วงจรการตอประสาน Z80 PIO กบไมโครโพรเซสเซอร Z80 (ทมา: Gaonkar, 1992)

จากรปท 9.5 จะไดวา

A7 A6 A5 A4 A3 A2 A1 A0

DC/ AB/

Data port A 1 0 0 0 0 0 0 0 =80H

Data port B 0 1 =81H

Control register A 1 0 =82H

Control register B 1 1 =83H

Page 91: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

91

ในการจดเตรยมการทางานตางๆ ของ Z80 PIO จะตองเขยนคาสงการควบคมตางๆ ไปท

control register ดงน

Control Word สาหรบควบคมโหมดการทางานของ Z80 PIO ซงผผลตกาหนดมาใหแลวนนม

รปแบบตามรปท 9.6

D7 D6 D5 D4 D3 D2 D1 D0

Mode X X 1 1 1 1

Don’t care ชใหเหนวาเปน control word

ใชในการเลอก

mode การทางาน

00: mode 0

01: mode 1

10: mode 2

11: mode 3

รปท 9.6 Control word ของ Z80 PIO

Interrupt Enable Word เปนการ enable flip-flop ของพอรทใช โดยมรปแบบตามรปท 9.7

D7 D6 D5 D4 D3 D2 D1 D0

1/0 X X X 0 0 1 1

ใชสาหรบโหมด 3 ชใหเหนวาเปน interrupt enable word 1: enable port interrupt

0: disable port interrupt

รปท 9.7 Interrupt enable word ของ Z80 PIO

Interrupt vector เปนการกาหนด byte ลางของ interrupt vector ซงแสดงถงตาแหนง service routine

โดยมรปแบบตามรปท 9.8

D7 D6 D5 D4 D3 D2 D1 D0

ใชสาหรบการกาหนด บต 0

D7 - D0 เปนการกาหนด byte ลางของ interrupt vector

โดยทม D0 = 0 ชใหเหนวาเปน interrupt vector

รปท 9.8 Interrupt vector ของ Z80 PIO

Page 92: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

92

9.3.3 โหมด 0 1 และ 2 พรอมดวยสญญาณ handshake และ Interrupt I/O

Z80 PIO สามารถ interrupt Z80 CPU ได กตอเมอเราไดเขยนคาสงให enable interrupt flip-

flop ภายใน Z80 PIO ดวย

9.3.3.1 Output Mode 0 พรอมดวยสญญาณ handshake

ลาดบเหตการณทจะเกดขนเปนดงน

1. เมอ Z80 ทาคาสง OUT ขอมลจะถกสงจาก Z80 CPU ไปปน data bus หลงจากนน Z80 PIO

สงขอมลตอไปยงอปกรณภายนอก

2. Z80 PIO สงสญญาณ RDY ไปยงอปกรณภายนอก (peipheral) วาขอมลมาแลว

3. อปกรณภายนอกรบขอมลไป

4. อปกรณภายนอกสงสญญาณไปยง STB เพอบอกวาไดรบขอมลเรยบรอยแลว

5. เมอ Z80 PIO ไดรบขอบขาขนของสญญาณ STB กจะหยดสงสญญาณ RDY ตอจากนน

Z80 PIO จะสงสญญาณ INT ไปยง Z80 CPU เพอใหสงขอมลถดไปมาให

INT

STB

RDYINT

9.3.3.2 Input Mode 1 พรอมดวยสญญาณ handshake

ลาดบเหตการณทจะเกดขนเปนดงน (RDY เรมจาก active)

1. อปกรณภายนอกสงขมลมายง Z80 PIO และใหสญญาณ STBออกมาดวย

2. ขอบขาขนของสญญาณ STBจะทาใหสญญาณ RDY ไม active เพอบอกอปกรณภายนอกวา

ไดรบขอมลแลวและสงสญญาณ INT ให CPU

3. ใน interrupt routine ตองอานขอมลนไป

4. เมอมสญญาณ RD มายง Z80 PIO เพออานขอมล สญญาณ RDY จะกลบมา ใหมหลงจาก

ขอบขาขนของสญญาณ RD

INT

STB

RDYINT

RD RD

Page 93: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

93

9.3.3.3 Mode 2: Bidirectional Data Transfer

INT

ASTBARDY

INT

RD RD

PA

BSTBBRDY

โดยท PA – เปน bidirectional

PB – ทางานในโหมด 3

ARDY, ASTB - เปนสญญาณ handshake สาหรบ output

BRDY, BSTB - เปนสญญาณ handshake สาหรบ input

9.3.3.4 Interrupt Piority

CINTCIEO CIEI INTBINTBIEO BIEIAINTAIEO AIEI

ลาดบความสาคญ (Priority): PIO A > PIO B > PIO C (ตอพวงกนไดไมเกน 4 ตว)

เมอ PIO ตวท interrupt ไดตรวจสอบวา Z80 CPU ทาคาสง RETI แลวจะหยด disable

interrupt PIO ทมลาดบความสาคญตากวา

IEI เปน high – ไมม PIO อนทมลาดบความสาคญสงกวากาลง service จาก Z80 CPU

เปน low – ม PIO อนทมลาดบความสาคญสงกวากาลง service จาก Z80 CPU และ PIO ตวน

จะขดจงหวะมได

IEO ธรรมดาจะเปน high หรอ low ตาม IEI แตถา IEI เปน high และ IEO เปน low แสดงวา PIO

น กาลง service อย

9.3.4 Mode 3: Bit Mode

ลกษณะพเศษของโหมดนคอ

1. แตละบตของ PA และ PB ถกกาหนดเปน input หรอเอาทพตกได โดยการเขยน

คาสงไปท control register

2. ไมมการใชสญญาณ handshake (RDY เปน low และ STB ถก disable)

3. เราสามารถกาหนด bit combination สาหรบ input เพอทาใหเกด interrupt ได โดย

เราสามารถเลอก logic combination (AND/OR) กบบางบตและเลอกวาจะเปน

active high หรอ active low ไดดวย

Page 94: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

94

โดยในโหมด 3 นอกจากจะตองเขยน control word ลง control register ของพอรตทใชแลว

นน ยงตองเขยน word อนๆทใชในการควบคมอก 3 words คอ

• I/O Register Control Word

• Interrupt Control Word

• Mask Control Word

ลง control register อกดวยตามรปแบบดงตอไปน

I/O Register Control Word เพอกาหนดวาแตละ bit ทาหนาทเปน input หรอเอาทพตโดยม

รปแบบตามรปท 9.9

D7 D6 D5 D4 D3 D2 D1 D0 0= output

1 = input

รปท 9.9 I/O register control word ของ Z80 PIO

Interrupt Control Word เพอกาหนดสภาวะตรรกะทใชในการสราง interrupt โดยมรปแบบตามรป

ท 9.10

D7 D6 D5 D4 D3 D2 D1 D0

D7 D6 D5 D4 0 1 1 1

ชใหเหนวาเปน interrupt control word

0= no mask word

1 = mask word follows

0 = active level low

1 = active level high

0 = OR function

1 = AND function

0 = interrupt disabled

1 = interrupt enabled

รปท 9.10 Interrupt control word ของ Z80 PIO

Mask Control Word เพอกาหนดวาบตใดบางทถกตรวจสอบ โดยมรปแบบตามรปท 9.11

D7 D6 D5 D4 D3 D2 D1 D0

=0 ⇒ บตนนจะถกตรวจสอบเวลารบคาเขามา

รปท 9.11 Mask control word ของ Z80 PIO

Page 95: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

95

9.4 ชป 8255A

ชป 8255A เปนอปกรณการตอประสาน I/O แบบขนานทสามารถโปรแกรมไดอกประเภท

หนงทใชงานทวไปกบไมโครโพรเซสเซอรไดหลากหลายรน รปท 9.12 แสดงการจดวางขาของชป

8255A

รปท 9.12 8255A Pin layout (ทมา: Gaonkar, 1992)

ชป 8255A ม I/O ports ดวยกนทงหมด 3 ports (port A, B และ C) แตละ port มขนาด 8 บต

โดยท port C มคณลกษณะพเศษคอ แบงเปน port ยอยขนาด 4 บต จานวน 2 ports คอ port CU และ

CL ดงแสดงในรปท 9.12 ทางขวามอ

Port A และ B ของชป 8255A จะคลายกบ port A และ B ของ Z80 PIO สวน port C ของชป

8255A จะคลายกบบตโหมดของ Z80 PIO

สวนคาอธบายของขาสญญาณตางๆของ 8255A นนแสดงในตารางท 9.4

ขาสญญาณ คาอธบาย

D7 - D0 Data bus แบบ 2 ทศทาง

RESET Reset input

CS Chip select

RD Read input

WR Write input

A1 และ A0 Port address

PA7 - PA0 Port A (bit)

PB7 - PB0 Port B (bit)

Page 96: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

96

PC7 - PC0 Port C (bit)

VCC + 5 Volts

GND 0 Volt

ตารางท 9.4 คาอธบายของขาสญญาณของ 8255A

ชป 8255A มโหมดการทางานอยดวยกน 2 โหมดคอ BSR mode และ I/O mode โดยท I/O

mode ยงแบงไดเปน 3 โหมดยอยไดแก โหมด 0 โหมด 1 และ โหมด 2 รายละเอยดของโหมดการ

ทางานทงหมดของ 8255A มดงน (รปท 9.13)

• BSR (Bit Set Reset) mode: ใชเพอกาหนดบต (set/reset) ใน port C

• I/O mode: แบงไดเปน 3 โหมดยอยไดแก

• Mode 0: ports ทงสาม (พอรต A B และ C) ทาหนาทเปน I/O port อยางงาย

• Mode 1: การโอนยายขอมลเปนแบบ handshake สาหรบพอรต A และ B โดยท

ใชบตจากพอรต C เปนสญญาณ handshake

• Mode 2: ใชพอรต A เพอการโอนยายขอมลแบบ 2 ทศทางโดยใชบตจากพอรต

C เปนสญญาณ handshake สวนพอรต B สามารถถกใชในโหมด 0 หรอ 1 กได

รปท 9.13 โหมดการทางานของ 8255A

รปท 9.14 แสดงแผนภาพโครงสรางภายในของ 8255A โดยประกอบดวย port ขนาด 8 บต 2

พอรต (พอรต A และ B) พอรตขนาด 4 บต 2 พอรต (พอรต CU และ CL), Data bus buffer และ control

logic ตางๆ สงเกตจดแบงกลมของพอรต ดวย วามการจดแบง 2 กลมคอ

• Group A ซงประกอบดวยพอรต A (PA7 - PA0) และ CU (PC7 – PC4)

• Group B ซงประกอบดวยพอรต B (PB7 - PB0) และ CL (PC3 – PC0)

Page 97: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

97

RD

WR

CS

Group APort A(8 bits)

Group APort CUpper (4 bits)

Group BPort C Lower(4 bits)

Group BPort B(8 bits)

Group AControl

Group BControl

Data Bus Buffer

Read Write

Control Logic

I/OPA7 - PA0

I/OPC7 - PC4

I/OPC3 - PC0

I/OPB7 - PB0

A1

A0

RESET

D7 - D0

Data bus แบบ 2 ทศทาง

รปท 9.14 โครงสรางภายในของ 8255A (ทมา: Gaonkar, 1992)

ขนตอนทสาคญในการตดตอระหวาง MPU กบอปกรณรอบขางผานอปกรณตอประสานท

โปรแกรมไดนน มอยดวยกน 3 ขนตอนดงน

1. กาหนด address ของแตละ I/O port รวมทงของ control register ของอปกรณตอประสาน

นนๆ

2. เขยน control word ทเหมาะสมลงใน control register

3. เขยนคาสง I/O ทเหมาะสม (ขนอยกบประเภทของการตดตอ – อาน/เขยน) เพอตดตอกบ

อปกรณรอบขาง

Control logic

8255A มสญญาณควบคมอยดวยกน 6 สญญาณ ดงน

• RD : ใชในการ enable การอานขอมล คอ เมอ active MPU จะอานขอมลจาก I/O port ท

เลอก

• WR : ใชในการ enable การเขยนขอมล คอ เมอ active MPU จะเขยนขอมลลงใน I/O

port ทเลอกหรอ control register

• CS A1 และ A0: ใชในการเลอกอปกรณ (ตารางท 9.5) โดยท CSจะเปนสญญาณเลอก

ชปหลก สวน A1 และ A0 จะกาหนด I/O port หรอ control register ทตองการ โดยทวไป

Page 98: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

98

จะตอ CS เขากบ address ทไดถอดรหสแลว สวน A1 และ A0 จะตอเขากบ 2 บตลาง (A1

และ A0) ของ address จาก MPU ตามลาดบ

CS A1 A0 พอรตทเลอก

0 0 0 พอรต A

0 0 1 พอรต B

0 1 0 พอรต C

0 1 1 Control Register

1 X X 8255A ไมไดถกเลอก

ตารางท 9.5 สรปการเลอก port ของ 8255A

ตวอยางการ decode address ใหกบ 8255

RD

CS

WR

IORD

IOWR

รปท 9.15 วงจรการตอประสาน 8255 กบไมโครโพรเซสเซอร Z80 (ทมา: Gaonkar, 1992)

จากรปท 9.15 จะไดวา

CS

A7 A6 A5 A4 A3 A2 A1 A0

Port A 1 0 0 0 0 0 0 0 =80H

Port B 0 1 =81H

Port C 1 0 =82H

Control register 1 1 =83H

Control Word

คอคาทอยใน control register ของ 8255A การควบคมการทางานของ 8255A ทาไดโดยเขยน

control word ทเหมาะสมตามโหมดการทางาน (รปท 9.16 และ 9.17) ลงใน control register (A1 และ

A0 มคาเปน 1)

Page 99: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

99

Mode 0: โหมด I/O อยางงาย

สาหรบในโหมดนแตละพอรตจะทาหนาทเปน I/O port อยางงายๆ โดยไมมการ interrupt

หรอสญญาณ handshake เขามาเกยวของ โดยททงพอรต A และ B จะเปน I/O port ขนาด 8 บต

ในขณะทพอรต CU และ CL จะเปน I/O port ขนาด 4 บต รปท 9.16 แสดงรปแบบของ control word

สาหรบ I/O mode ทงสามโหมด (โหมด 0 1 และ 2)

รปท 9.16 Control word สาหรบ I/O mode ของ 8255A (ทมา: Gaonkar, 1992)

โหมดนมลกษณะเฉพาะดงน

• Output จะคาง

• Input จะไมคาง

• ไมม handshake

ในกรณท Cu และ CL ทางานกนคนละหนาท เชน Cu เปนอนพตสวน CL เปนเอาทพตหรอ

กลบกน การเขยนขอมลไปยงพอรต C น จะทาใหขอมลไปปรากฏในสวนทเปนเอาทพตไมม

ผลกระทบตอสวนทเปนอนพตสวนการอานขอมลจากพอรต C น จะอานขอมลสวนทเปนทง input

และเอาทพตทถกเขยนออกมา

Page 100: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

100

BSR mode: โหมด bit set/reset

โหมดนสามารถ set หรอ reset แตละบตของพอรต C ไดดวยการเขยน control word ท

เหมาะสมลงใน control register โดยทรปแบบของ control word สาหรบ BSR mode นแสดงในรปท

9.17

รปท 9.17 Control word สาหรบ BSR mode ของ 8255A (ทมา: Gaonkar, 1992)

Mode 1: Input/Output mode และสญญาณ Handshake

ลกษณะของโหมด 1 เปนดงน พอรต A และ B ทาหนาทเปนไดทงพอรตอนพตหรอเอาทพต

ขนาด 8 บต โดยทแตละพอรตใชสายสญญาณของพอรต C จานวน 3 สายเปนสญญาณ handshake

ในขณะทสายสญญาณอก 2 สายทเหลออาจทาหนาทเปน I/O อยางงายได โดยกอนการถายโอนขอมล

จะมการแลกเปลยนสญญาณ handshake ระหวาง MPU กบอปกรณรอบขาง และขอมลทงทเปน

อนพตและเอาทพตจะคางไวได

ในชป 8255A สายของพอรต C ทใชเปนสญญาณซงกนและกนนน แปรผนสอดคลองกบ

ฟงกชน I/O ของพอรต ดงนน จงตองพจารณาฟงกชน (หนาท) อนพตและเอาทพตในโหมด 1

แยกกนดงน

Mode 1 : สญญาณควบคม input

รปท 9.18 แสดงสญญาณควบคมขณะจดพอรต A และพอรต B เปนพอรตอนพต

Page 101: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

101

ASTB

BSTB

RD

รปท 9.18 Mode 1 ของ 8255A (input) (ทมา: Gaonkar, 1992)

พอรต A จะใชสญญาณ 3 สญญาณดานบน คอ PC3 PC4 และ PC5 ในขณะทพอรต B จะใช

สญญาณ PC2 PC1 และ PC0 หนาทของสญญาณเหลาน คอ

(a) STB (Strobe) : สญญาณน (active low) เกดจากอปกรณรอบขางเพอแสดงวาไดสงไบต

ขอมลแลว โดยท ชป 8255A จะสรางสญญาณ IBF และ INTR ในการตอบสนองตอ

STB

(b) IBF (Input Buffer Full) : เปนสญญาณตอบรบโดยทชป 8255A ใชเพอแสดงวาแลตชท

อนพตไดรบไบตขอมล สญญาณนรเซตเมอ MPU อานขอมลนน

(c) INTR (Interrupt Request) : เปนสญญาณเอาทพตซงใชเพอขดจงหวะ MPU สญญาณน

เกดขนเมอ STB IBF และ INTE (flip-flop ภายใน) อยทลอจก 1 ทงหมด สญญาณนร

เซตโดยขอบขาลงของสญญาณ RD

(d) INTE (Interrupt Enable) : เปน flip-flop ภายในซงใชเพอ Enable หรอ Disable การสราง

สญญาณ INTR flip-flop 2 ตว คอ INTEA และ INTEB ไดรบการเซต/รเซตผานโหมด

BSR flip-flop INTEA ไดรบการ Enable/Disable ผาน PC4 สวน flip-flop INTEB ไดรบ

การ Enable/Disable ผาน PC2

Page 102: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

102

Mode 1: สญญาณควบคม input

รปท 9.18 แสดงสญญาณควบคมขณะจดพอรต A และพอรต B เปนพอรตเอาทพต

AOBF

BOBF

WR

รปท 9.19 Mode 1 ของ 8255A (output) (ทมา: Gaonkar, 1992)

(i) OBF (Output Buffer Full) : เปนสญญาณเอาทพตซงเปน low เมอ MPU เขยนขอมลลง

ในแลตชทเอาทพตของชป 8255A สญญาณนแสดงแกอปกรณรอบขางทเอาทพตวา

พรอมทจะอานขอมลใหม สญญาณนจะเปน high อกครงหลงจากชป 8255A รบ

สญญาณตอบรบ ACK จากอปกรณรอบขาง

(ii) ACK (Acknowledge) : เปนสญญาณอนพตของชป 8255A จากอปกรณรอบขาง ซงจะ

ไดเอาทพตออกมาเปนคา LOW เมออปกรณรบขอมลจากพอรตของชป 8255A

(iii) INTR (Interrupt Request) : เปนสญญาณเอาทพตซงรเซตโดยขอบขาขนของสญญาณ

ACK เราใชสญญาณนในการขดจงหวะ MPU เพอขอไบตขอมลถดไปสาหรบเอาทพต

INTR นไดรบการเซตเมอ OBF ACK และ INTE เปน 1 ทงหมด โดยขอบขาลงของ

WR จะรเซตสญญาณน

(iv) INTE (Interrupt Enable) : เปนฟลปฟลอปภายในทตอไปยงพอรตใดพอรตหนง เรา

ควบคม flip-flop 2 ตว คอ INTEA และ INTEB โดยใชบต PC6 และ PC2 (ตามลาดบ) ผาน

โหมด BSR

Page 103: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

103

(v) PC4 และ PC5 : จดเตรยมสายเหลานเปนอนพตหรอเอาทพตกได

Mode 2: การถายโอนขอมล 2 ทศทาง

โหมดนใชงานไดมากมาย เชน การถายโอนขอมลระหวางไมโครคอมพวเตอร 2 ตว หรอ

การเชอมประสานตวควบคมแผนบนทก โหมดนเปนการจดเตรยมพอรต A เพอถายโอนขอมล 2

ทศทาง และจดเตรยมพอรต B ในโหมด 0 หรอ โหมด 1 ได พอรต A จะใชสญญาณ ของพอรต C

จานวน 5 สญญาณเปนสญญาณควบคมเพอการถายโอนขอมล สญญาณของพอรต C ทเหลออก 3

สญญาณใชเปน I/O อยางงายหรอใชเปนสญญาณซงกนและกนสาหรบพอรต B กได สาหรบรปท

9.19 แสดงโครงสรางทงสองโครงสรางของโหมด 2

PC6

PC7

PC3

PA7-PA0

I/O

AOBF

INTRA

D7 D6 D5 D4 D3 D2 D1 D0

1 1 X X X 0 1 1/0

Control word

PC2-01=input

0=output

(a) 8255 Mode 2 และ Mode 0 (input)

8

AACK

PC4

PC5

RD

ASTB

IBFA

PC2-0

PB7-PB0 8

WR

PC6

PC7

PC3

PA7-PA0

AOBF

INTRA

D7 D6 D5 D4 D3 D2 D1 D0

1 1 X X X 1 0 X

8

AACK

PC4

PC5

RD

ASTB

IBFA

PB7-PB0 8

WR

PC2 BACK

PC0

PC1 BOBFINTRB

(b) 8255 Mode 2 และ Mode 0 (output)

รปท 9.19 Mode 2 ของ 8255A (bidirectional) (ทมา: Gaonkar, 1992)

Page 104: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

104

บทท 10 การแปลงสญญาณแอนะลอก-ดจตอลเบองตน

10.1 Digital-to-Analog Conversion (DAC)

อปกรณทางไฟฟา/อเลกทรอนกสโดยทวไปทเปนแอนะลอกสามารถควบคมการทางานโดยการให

อนพตเปนระดบแรงดนทแตกตางกน ตวอยางเชน มอเตอรกระแสตรงซงควบคมความเรวโดยเปลยนระดบ

แรงดน (หรอกระแส) ของขดลวดสนาม

เมอนาระบบดจตอล หรอไมโครคอนโทรลเลอรปมาใชควบคมอปกรณทางแอนะลอกเหลาน จงตอง

มวงจรซงสามารถแปลงสญญาณทางดจตอลเปนระดบแรงดนตอเนองแบบแอนะลอก ตงแต 0V จนถงระดบ

สงสดทกาหนดไว เรยกวาวงจร Digital-to-Analog Converter (DAC)

รปท 10.1 Transfer Curve ในอดมคตของ DAC 3 บต (ทมา: http://www.cpe.ku.ac.th/~yuen/204471/)

รปท 10.1 เปนกราฟแสดงถงความสมพนธระหวางเอาทพตทเปนแอนะลอกกบอนพตทเปนดจตอล

ขนาด 3 บตเรยกวา transfer curve สงเกตวาเมออนพตไบนารเพมขน เอาทพตแอนะลอกจะเพมในลกษณะ

ขนบนได โดยทขนาดของแตละขนจะหาไดจาก

เมอให VFS คอระดบแรงดนเอาทพตสงสด

n คอจานวนบตของอนพต

stepsize = VFS/2n

Page 105: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

105

เนองจากเอาทพตของ DAC จะเพมเปนขนๆ รปคลนสญญาณ ทไดจาก DAC จงมลกษณะไมเรยบ ดง

ตวอยาง ในรปท 10.2 ซงแสดงถงสญญาณไซน ทสรางจาก DAC

รปท 10.2 คลนไซนทสรางจาก DAC (ทมา: http://www.cpe.ku.ac.th/~yuen/204471/)

ถาเพมจานวนบต ความละเอยดของ DAC จะเพมขน เชน เมอ ใช DAC 12 บต และ VFS = 5.0 V ความ

ละเอยดคอ 5.0 V / 4096 = 1.22 mV ซงจะ ละเอยดกวา DAC 8 บตถง 16 เทา

ความถกตองของ DAC ขนอยกบหลายสวน

1. Quantization error DAC บต VFS = 5.0 V เอาทพตจะมความละเอยด 19.53 mV ถาตองการเอาทพต

4.00 V DAC จะใหเอาทพตไดใกลเคยง ทสดคอ 4.04 V (19.53 mV x 205) ผดพลาด 4 mV โดยทวไป

คาผดพลาดจะเทากบ +/- 0.5 LSB (least significant bit) ตวอยางเชน DAC 8 บต ความผดพลาดจะ

เปน 1 ใน 512 หรอ +/- 0.195 %

2. Offset and gain errors เมออนพตไบนารเทากบ 0 แตเอาทพตของ DAC ไมเปน 0 เรยก วา offset

error และอาจเกดรวมกบ gain error ความผดพลาดเหลา นจะทาให tranfer curve ในรปท 10.1 โคง

ขนหรอลงจะขนอยกบความไมสมดลยภายใน DAC อยางไรกตาม offset error และ gain error จะแก

ไดโดยใชความตาน ทานปรบคาไดตอไวภายนอก

3. Nonlinearity คอคาความคลาดเคลอนสงสดของ transfer curve เทยบกบเสนตรงจากจดศนยและ

จดสงสด ซงจะขนอยกบความผดพลาดของสวนประกอบภายใน DAC ใน data sheet ของ DAC จะ

ระบเปนเปอรเซนตเทยบกบคาสงสด หรอ ระบเปนเศษสวนของ LSB (โดยทวไปคอ +/- 0.5 LSB)

4. Settling time คอชวงเวลานบแตใหอนพตจนกระทง DAC ใหเอาทพต วดเมอเอาทพตทไดผดพลาด

จากคาจรง นอยกวา 0.5 LSB คาเวลานอาจนอยกวา 100 ns สาหรบ DAC ความเรวสง และอาจ

มากกวา 100 µs สาหรบ DAC ราคาถก

Page 106: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

106

Summed Source DAC

รปท10.3 Summed Source DAC (ทมา: http://www.cpe.ku.ac.th/~yuen/204471/)

รปท 10.3 แสดงถงวงจร Summed Source DAC ซงเปนวงจรอยางงายในการแปลงสญญาณดจตอล

เปนแอนะลอก โดยความตานทานมคาเปน 2R 4R และ 8R เพอทาใหกระแสทผานความตานทานแตละตวมคา

ลดลงเปน 2 เทา ความตานทานตวลางสด (2R) จะ เปน MSB สวนตวบนสดจะเปน LSB

ขอเสยของการใชวงจรลกษณะน ในทางปฏบต คาความตานทานทตางกนเปน 2 เทา คอ 2R 4R 8R …

จะ ไมสามารถหาไดงาย จงมการปรบปรงเปน วงจร R-2R

Switched Voltage R-2R DAC

รปท 10.4 Swiched Voltage R-2R DAC (ทมา: http://www.cpe.ku.ac.th/~yuen/204471/)

รปท 10.4 เปน DAC 3 บต ใชออปแอมปและความตานทาน เพยง 2 คาคอ R และ 2R สงเกตวาอนพต

ดจตอลจะมาจากสวตชทง 3 ซงอาจตอกบกราวด (ลอจก 0) หรอตอกบ VREF (ลอจก 1) ตวอยางนอนพตเปน

001

พจารณากระแส I เมอผานจด A จะถกแบงเปนสองสวนเทาๆ กน เหลอ I/2 เมอผานจด B และ C จะ

ถกแบงอกครง เหลอ I/4 และ I/8 ตามลาดบ ดงนนกระแสทปอนใหกบออปแอมปจะเหลอ I/8 เมอพจารณาท

สวตชตวอนๆ กจะมลกษณะคลายกน ดงนนกระแสทผานออปแอมปเมอปดสวตชอนนบจากซายไปขวา จะม

ขนาด I/8 I/4 และ I/2 ตามลาดบ สวตชซายสดจะเปน LSB สวนขวาสดจะเปน MSB

Page 107: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

107

Switched Current R-2R DAC

รปท 10.5 Swiched Current R-2R DAC (ทมา: http://www.cpe.ku.ac.th/~yuen/204471/)

วงจรนเปลยนจากการใชแรงดนอางอง (VREF) มาเปนกระแสอางอง (IR) กระแสท ผานสวตชแตละตว

จากขวาไปซายจะเปน IR/2, IR/4 และ IR/8 ตามลาดบ วงจรลกษณะนจะมความเรวสงกวาวงจร Switched

Voltage เนองจากคาปาซแตนซทรอยตอ (junction capacitance) ของความตานทานแตละตวจะไมถกชารจและ

ดสชารจเหมอนวงจร Switched Voltage

Switched Pole DAC

รปท 10.6 Swiched Pole DAC (ทมา: http://www.cpe.ku.ac.th/~yuen/204471/)

Page 108: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

108

จะมการใชความตานทานตออนกรมกนหลายตว เนองจากวงจรนตองการความตานทานคาเทาๆ กน

ดงนนจงเปนทนยมสาหรบผผลต Integrated Circuit สงเกตวาจะมความตานทานทปลายทงสองของอนกรม

เพอปรบ offset ของเอาทพต

10.2 Analog-to-Digital Conversion (ADC)

สญญาณทใชในอปกรณอเลกทรอนกส ฃม 2 ชนด คอ สญญาณแอนะลอกและสญญาณดจตอล โดยท

สญญาณแอนะลอกจะใชในอปกรณทวๆ ไปและใชในการควบคมแบบเกา

ในปจจบนมไมโครโพรเซสเซอรและไมโครคอนโทรลเลอรเขามาชวยในการควบคมอปกรณตางๆ

มากมาย ซงทาใหการควบคมนนทาไดงายและรวดเรวยงขน แตในการควบคมนนเราจาเปนตองใชสญญาณ

ดจตอลในการตดตอกบไมโครโพรเซสเซอรหรอไมโครคอนโทรลเลอร แตในความเปนจรงนนเราใช

สญญาณแอนะลอกในการควบคม ดงนนเราจงจาเปนตองมการเปลยนสญญาณแอนะลอกเปนสญญาณดจตอล

แลวจงนาสญญาณนนเขามาสไมโครโพรเซสเซอรหรอไมโครคอนโทรลเลอรเพอใชควบคมระบบตอไป

แมวาสญญาณแอนะลอกนนมความแนนอนและแมนยาสง แตสญญาณแอนะลอกนนกควบคมไดยาก

เนองจากในสภาพแวดลอมมสญญาณรบกวนอยมาก และการทจะทาใหการควบคมแบบแอนะลอก ม

ความสามารถควบคม เทากบการควบคมแบบดจตอลนนทาไดยาก เนองจากวงจรควบคมแบบแอนะลอก

จะตองมความซบซอนสง

อยางไรกตาม สญญาณดจตอลกไมสามารถทดแทนความละเอยดของสญญาณแอนะลอกไดอยาง

สมบรณ แตทาใหการควบคมนนทาใหงาย และสะดวกยงขน

อนพตจะถกแบงเปนหลายระดบ แตละระดบตางกน 1 quantum (Q) จดกงกลางของแตละระดบ

เรยกวา threshold ถาอนพตเปลยนอยในชวง ±½ LSB จาก threshold จะไมทาให digital output เปลยน ดงนน

ADC จะม inherent quantization uncertainty ขนาด ±½ LSB เสมอ (ไมวาจะเพมจานวน bit เปนเทาใดกตาม)

Digital Ramp ADC

รปท 10.7 แสดงถงลกษณะการทางานของ Digital Ramp ADC ซงเปนวธทงายทสดของการแปลง

สญญาณแอนะลอกใหเปนสญญาณดจตอล โดยใชอลกอรทม การนบคาเพมขนเรอยๆ แลวนาผลทไดจากการ

นบไปเปรยบเทยบกบคาทตองการทตงไว

จากวงจร Counter เปนอปกรณนบคาทเพมขนทละหนง แลวสงคาทไดให D/A มขา Reset รบสญญาณ

Reset เมอตองการใหเรมนบใหม

D/A เมอรบคาทนบเพมขนทละหนงจากตวนบ กแปลงคาใหเปนสญญาณ แอนะลอกทมคาความตาง

ศกยคาๆ หนง แลวสงตอเขาไปทอปกรณตวเปรยบเทยบ (Comparator)

Page 109: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

109

รปท 10.7 Digital Ramp ADC (ทมา: http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html )

Comparator จะเปนอปกรณตวเปรยบเทยบคาความตางศกย ของอนพต และคาจากทตวนบ ถาหากทง

สองสญญาณมคาเทากนสงคาความตางศกย 0 โวลตออกมา(ลอจก 0) ถาไมเทากนกจะสงความตางศกยทไมใช

0 โวลตออกมา(ลอจก 1) ซงคาความตางศกยทออกมา จะนามาเขาลอจกเกต "และ" กบสญญาณนาฬกา จะได

คาลอจกออกมา ถาผลลพธออกมาเปนสญญาณนาฬกาแสดงวายงไมไดผลลพธเทาทตองการสญญาณนาฬกาก

จะไปทาใหตวนบนบเพมขนตอไป และเมอไดคาผลลพธดจตอลทตองการแลวคาทไดจากตวเปรยบเทยบจะ

ใหคาความตางศกยเปน 0 (ลอจก 0) ซงเมอนามาเขาลอจกเกต "AND" กบสญญาณนาฬกาแลว กจะใหลอจก 0

ซงทาใหตวนบไมนบเพมอก กจะไดคาดจตอลจากตวนบทตองการ

ขอเสยของวธนคอ การนบตองเรมนบท 0 เสมอ และนบเพมขนเรอยๆ ทาใหชา เอาทพตทไดจะม delay

จงไมคอยนยมใชเทาทควร จงไดเปลยนตวนบเปนแบบนบลงไดดวย ซงจะอางองระดบจากระดบเกา ทาใหไม

จาเปนตองนบ 0 ใหมเมอมการเปลยนอนพตใหมแตใหอางองกบผลลพธเดม ทาใหไดผลลพธเรวขน

Successive Approximation ADC

รปท 10.8 4-bit Successive ADC (SAC) with 1 volt step size

(ทมา: http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html)

Page 110: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

110

วธ Successive approximation ADC (SAC) ใชหลกการของ "binary search" ในการหาคาตอบ โดยนา

คาผลลพธมาเปรยบเทยบกบคากงกลางของชวง เพอใหทราบวาคานนๆ มากกวาหรอนอยกวา โดยจะปรบชวง

ใหแคบลงมาเรอยๆ แลวเปรยบเทยบผลลพธกบคากงกลางของชวงไปเรอยๆ จนไดผลลพธทตองการ เชน

เลขทเปนคาตอบคอ 3 จากชวงของคาตอบท 0-7 ครงแรกเอาคา (0+7)/2 = 4 มาเปรยบเทยบ ไดผลวา คาตอบ

ทตองการอยในชวงทนอยกวา 4 ครงท 2 กเลอกคา (0+4)/2 = 2 มาเปรยบเทยบ ไดผลวาคาตอบทตองการอย

ในชวงทมากกวา 2 แตนอยกวา 4 ครงท 3 กเลอกคา (2+4)/2 = 3 มาเปรยบเทยบ ไดผลวาคาตอบทตองการ

ขนตอนของการเปรยบเทยบทใชในวธ SAC นแสดงในรปท 10.9

รปท 10.9 ขนตอนของการเปรยบเทยบของวธ SAC

(ทมา: http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html)

Converter Error

• Offset error

• Gain error

• Linearity error

• Differential linearity error

Page 111: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

111

Converter Resolution

• หมายถง การเปลยนแปลงทาง analog ททาให ADC output เปลยนไป 1 ระดบ

• บอกเปน %FS, mV ของ input range, จานวน bit ของ converter

Converter Accuracy

• หมายถงความแตกตางระหวาง input voltage กบเอาทพตทไดมาเมอเทยบกลบมาเปนคาทาง input ซง

จะรวมผลของ error ทกอยาง

• อาจบอกเปนจานวน voltage หรอ จานวน LSB

Conversion Time และ Converter Throughput Rate

• ADC ใชเวลาในการแปลงจากสญญาณแอนะลอกเปนสญญาณดจตอลซงเรยกวา conversion time (tc)

• ADC จะมวงจร S/H (sample and hold circuit) โดยทวไปจะไมตอ analog input เขากบ ADC โดยตรง

โยไมมวงจร S/H เนองจากถาทาเชนนน สญญาณ analog input จะเปลยนเรวเกนกวา ½ LSB ไมได ถา

เปลยนเรวเกนกวานจะทาใหการแปลงสญญาณเกดความผดพลาด ดงนนการตอ input เขากบ ADC

โดยตรงไดนน input จะตองเปน input ทชามากๆ เกนกวาจะนาไปใชประโยชนได

• สวน Converter Throughput Rate มคาเทากบ 1/tc

Converter Input และ Output

สญญาณ analog input: ADCโดยทวไปจะรบแรงดนแบบ unipolar จงจาเปนทจะตองแปลงสญญาณ analog

input ทมคาเปนทง + และ – ใหเปน + อยางเดยว โดยอาจใชวงจร op-amp ชวย

Interfacing ADC to ระบบไมโครโพรเซสเซอร

มอยดวยกนหลายแบบ เชน

1. Most-recent-data scheme

• ADC ทางานไมหยด และ update ขอมลใน buffer

• ไมโครโพรเซสเซอรอาน buffer เมอตองการ

2. Start-and-wait scheme

• เมอตองการขอมลไมโครโพรเซสเซอรจะสง ADC

3. Using microprocessor interrupt

• ADC จะเรมทางานโดยคาสงจากไมโครโพรเซสเซอรหรอ clock

• เมอ ADC ทางานเสรจ จะเกด interrupt ใหไมโครโพรเซสเซอรนาขอมลไป

• วธนไมโครโพรเซสเซอรจะไมตองเสยเวลาคอย

• การจดการ interrupt มทงแบบ polling และแบบ vectored

Interface Software

วธการสงผานขอมลจาก ADC มายงไมโครโพรเซสเซอรม 3 วธ คอ

Page 112: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

112

1. Memory-mapped transfer – ม address lines ทจะตอง decode มาก

2. I/O-mapped transfer – ม address lines ทจะตอง decode นอยกวา

3. DMA (Direct Memory Access) – ADC สงขอมลเขาเกบใน memory โดยตรง โดยม DMA controller

เปนตวควบคม ในชวงนไมโครโพรเซสเซอรจะหยดการ access ไปยง memory ในสวนท DMA ใชอย

Page 113: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

113

บทท 11 การสงขอมลผาน Parallel Printer Port ของ PC

พอรตขนาน (Parallel Port) หรอทมกเรยกวา LPT Port สามารถรบ/สงขอมลในลกษณะ

Parallel ได ซงทาใหสงขอมลไดทละมากๆ สวนใหญแลวจะพบวาเครองพรนเตอรเกอบทกรนจะมใช

พอรตดงกลาวน นอกจากเครองพรนเตอรแลวกยงมอปกรณอกหลายประเภทดวยกนทใชพอรตขนาน

อยางเชน สแกนเนอร ฮารดดสกแบบตดตงภายนอก Zip ไดรฟ และ Tapeไดรฟ เปนตน

เมอเครองพซมการสงขอมลไปยงเครองพรนเตอร หรออปกรณชนดอน ทใชพอรตขนาน

จะสงไดครงละ 8 บต (1ไบต) โดยขอมลทง 8 บตน จะถกสงไปแบบขนานกนไป เหมอนการเดนเรยง

แถวแบบหนากระดานตรงขามกบการทางานของพอรตอนกรม (Serial Port) ทจะสงขอมล 8 บต โดย

นาแตละบตมาเรยงตอกนเปนแถวตอน แลวสงไปเปนชด มาตรฐานของพอรตขนานสามารถสงขอมล

ได 50-100 กโลไบตตอวนาท

Parallel Ports ของ PC มจดประสงคหลกในการออกแบบคอ เพอเชอมตอ printer เขากบ PC

ได ไมไดใชในการรบสงขอมลธรรมดาทวไป ดงนน ในการดดแปลงให parallel port สามารถรบสง

ขอมลธรรมดา จาเปนตองศกษารายละเอยดใหเขาใจ เพอจะไมไดเกดความเสยหายกบ parallel ports

ใน PC โดยทวไป จะม parallel ports อยแลวอยางนอย 1 พอรต คอ LPT1 ซงประกอบไปดวย

I/O ports 3 พอรต ซงจะมหนาทเปนอนพตหรอเอาทพตตางกนออกไป นอกจากน ระดบแรงดนของ

logic 1 ของพอรตหนงอาจจะมระดบแรงดนตรงกนขามกบอกพอรตหนง ซงทางานรวมใน LPT1

เดยวกนน ตารางท 11.1 แสดงตาแหนงและหนาทของพอรตใน LPT1

ตาแหนงของพอรต หนาทการทางานของพอรต

0x378 8-bit data port (output port ทเขยนขอมลออกไปได และอานขอมลทเขยนออกไปกลบมาได

แตตอวงจรใหรบอนพตอนไมได เพราะอาจทาใหพอรตเสยหาย)

0x379 5-bit status port (input port ทอานขอมลไดอยางเดยว)

0x37a 4-bit control port (เปนเอาทพตหรออนพตกได วงจรทางดานเอาทพตเปนแบบ open-

collector ดงนนถาจะใหพอรตทางานเปนอนพตจะตองเขยนขอมล เพอให output transistor

อยในสภาวะ off เสยกอน จงตอกบอนพตได อยาตอกบสญญาณอนพตถาไมแนใจวา output

transistor อยในสภาวะ off หรอไม ยกเวนถาแนใจวา สญญาณอนพตไดมาจากวงจรทม

เอาทพตเปนแบบ open collector)

ตารางท 11.1 ตาแหนงและหนาทของ ports ของ LPT1

ความยาวของสายไฟทตอออกจาก connector แบบ 25 ขา ไมควรเกน 75 ซม. เนองจากเปน

การสงสญญาณ TTL ทมความเรวคอนขางสง ถาความยาวของสายมากเกนไป อาจมปญหาการ

รบกวนในการสงสญญาณผานสายได

Page 114: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

114

หวขอท 11.1 ถง 11.3 จะกลาวถงพอรตยอยทงสามของ LPT1 ตลอดจนแสดงถง

ความสมพนธของตาแหนงบตของขอมลสมพนธกบตาแหนงของขาของ connector แบบ 25 ขา

รวมทงคา logic สาหรบการเขยนและอาน

11.1 8-bit Data Port (0x378)

• ใชเปนเอาทพตไดอยางเดยว

• ไมไดสรางใหรบอนพต แตถกสรางใหอานขอมลทเขยนออกไปกลบมาได

• 5V = logic 1 และ 0V = logic 0

Bit ระดบแรงดนเมอเขยน logic 1 ระดบแรงดนเมออาน logic 1 ตาแหนงขา

0 High High 2

1 High High 3

2 High High 4

3 High High 5

4 High High 6

5 High High 7

6 High High 8

7 High High 9

ตารางท 11.2 ขอมลรายละเอยดของพอรต 0x378 (8-bit output)

11.2 5-bit Status Port (0x379)

• ใชเปนอนพตไดอยางเดยว

Bit ระดบแรงดนเมออาน logic 1 ตาแหนงขา

0 NOT USED

1 NOT USED

2 NOT USED

3 High 15

4 High 13

5 High 12

6 High 10

7 Low 11

ตารางท 11.3 ขอมลรายละเอยดของพอรต 0x379 (5-bit input)

Page 115: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

115

11.3 4-bit Control Port (0x37A)

• ใชเปนอนพตหรอเอาทพตได

• ถาใชเปนอนพตตองเขยน logic ออกมาให output transistor ของ 7406 OFF เสยกอน จงจะ

รบอนพตได

Bit ระดบแรงดนเมอเขยน logic 1 ระดบแรงดนเมออาน logic 1 ตาแหนงขา

0 Low Low 1

1 Low Low 14

2 High High 16

3 Low Low 17

4 ENABLE IRQ 7 ENABLED IRQ 7 BIT

5 NOT USED

6 NOT USED

7 NOT USED

ตารางท 11.4 ขอมลรายละเอยดของพอรต 0x37a (4-bit input/output)

11.4 Ground Signals

• สาย ground มตาแหนงอยทขา 18-25

• Protective ground ไมควรตอเขากบ ground signals

11.5 การเขยนโปรแกรมภาษา C รบสงขอมลกบ I/O Ports

การรบสงขอมลกบ I/O ports ในภาษา C ทาไดหลายวธ มทงแบบ 8-bit และ 16-bit และเปน

function calls หรอ macro กได ในการทดลองนเราจะเลอกใช macro รบสงขอมลขนาด 8-bit ตาราง

ท 11.5 แสดงชอ macro ทสามารถใชในการรบสงขอมลผาน parallel port ในภาษา C (สาหรบ

โปรแกรมในภาษาอน กสามารถเขยนใหรบสงขอมลกบ ports ไดเชนกน)

การเรยกใช macro หนาท

unsigned char inportb(int portid); อานขอมลแบบ byte จากพอรตในตาแหนง portid void outportb(int portid, unsigned

char value); เขยนขอมล value ไปทพอรตในตาแหนง portid

ตารางท 11.5 Macro ทใชในการรบสงขอมลกบพอรต (ตองม #include <dos.h> ดวย)

ตวอยางเชน outportb (int port_id, unsigned char udata);

udata = inportb (int port_id);

Page 116: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

116

ถาเราใช inportb หรอ outportb โดยไมม #include <dos.h> จะทาให Turbo C Compiler ใช

function calls แทนทจะเปน macro

Bitwise operation Operator ตวอยางการใช

OR | เชน data | 0x80

AND & เชน data &0xFE

XOR ^ เชน data^11

NOT ~ เชน ~data

11.6 ความเรวของการรบ/สงขอมลผาน Parallel Printer Port

• ไมแนนอน ขนอยกบความเรวของ CPU

• การทางานของ PC จะม timer interrupt ประมาณ 18.28 ครงใน 1 วนาท สามารถรบกวนการ

รบ/สงขอมลได

• ระยะสายไมควรเกน 70 ซม. โดยประมาณ

• ถาคอมพวเตอรเปนแบบ plugNplay ตอง set ให parallel port ทางานแบบธรรมชาต

Page 117: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

117

บทท 12 การสงขอมลผาน Serial Port ของ PC

12.1 Serial Interfacing

การเชอมตอระบบไมโครคอมพวเตอรกบอปกรณภายนอกสวนใหญจะใชการตอประสานแบบ

ขนาน (parallel tranmisson) กบแบบอนกรม (serial transmission) สาหรบการตอประสานแบบอนกรมนยม

ใชกนมาก เชน การเคลอนยายกนระหวางไมโครคอมพวเตอร หรอ อปกรณเสรมตางๆ เชน mouse เปนตน

การตอประสานแบบอนกรมใชในการสงและรบขอมลระยะไกล โดยสงผานสายสญญาณ 1 เสน

แทนทจะเปน 8 เสนเหมอนการสงผาน parallel port

รปท 12.1 parallel vs serial interfacing

วธการถายโอนขอมล

ในการถายโอนขอมลแบบอนกรมนน ขอมลจะไดรบการสงออกมาครงละ 1 บตระหวางจดรบและ

จดสง จะเหนวามการสงขอมลแบบอนกรมนจะชากวาการสงขอมลแบบขนาน แตยงคงใชอยกเพราะ ตวก

ลางการสอสารตองการชองเดยวหรอมสายเพยงคเดยวซงจะประหยดคาใชจาย ในการใชตวกลางมากกวา

แบบขนานซงถาเปนระยะทางไกลจะดเพราะเรามระบบการสอสารทางโทรศพท อยแลว จงสามารถนามาใช

ในการสงขอมลแบบอนกรมนได

รปท 12.2 การสงขอมลแบบอนกรม

Page 118: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

118

การสงขอมลแบบอนกรม ขอมลจะถกเปลยนใหเปนแบบอนกรมเสยกอนแลวคอยทยอยสงครงละ

1 บต ไปยงทจะรบ ณ จดรบจะตองมกลไกในการเปลยนขอมลทสงมาครงละบตใหเปนสญญาณแบบขนาน

ซงลงตวพอด นนคอ บตท 1 ลงทบสขอมลเสนท1พอดการทจะทาใหการแปลงสญญาณจากแบบอนกรม

ครงละบตใหลงพอดนน จาเปนตองมกลไกทเหมาะสมเพอปองกนการผดพลาดจากการรบกลไกทวาแบง

ออกเปน 2 แบบ คอ แบบซงโครนส (synchronous) และแบบอะซงโครนส (asynchronous)

รปแบบของการตดตอสอสารแบบอนกรม

การตดตอแบบอนกรมอาจจะแบงตามรปลกษณะการสงขอมลได 3 แบบคอ

1. แบบซมเพลก (simplex) เปนการสงขอมลไดทางเดยวเทานน บางครงเรยกวา การสงทศทางเดยว

2. แบบฮาลฟดเพลกซ (half duplex) ทง 2 สถานสามารถรบและสงไดแต ณ เวลาตางกน

3. แบบฟลดเพลกซ (full duplex) ทง 2 สถานสามารถรบและสงไดในเวลาเดยวกน

รปท 12.3 รปแบบของการตดตอสอสารแบบอนกรม

ความเรวในการสงถายโอนขอมลแบบอนกรม

ความเรวของการถายโอนขอมลแบบอนกรมมหนวยวดเปน บตตอวนาท (bit per second: bps) แต

เรายงมหนวยทนยมใชกนมากคอ อตราโบด (baud rate) ซงหมายถง การเปลยนแปลงของสญญาณใน 1

วนาท หลายคนยงเขาใจสบสนระหวางหนวยบพเอส กบอตราโบด กลาวคอ การเปลยนแปลงของสญญาณ

ของสญญาณ 1 ครงอาจจะแสดงถง การสงขอมลแบบอนกรมมากกวา 1 บต อตราการสงขอมลเปนจานวน

บตจงเทากบ อตราโบดคณกบจานวนบตใน 1 โบด

Page 119: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

119

การสอสารแบบอะซงโครนส

การสอสารแบบนประกอบดวยบตเรมตน (start bit) และบตสนสด (stop bit)

รปท 12.4 stop และ stop bits ของการสอสารแบบอะซงโครนส

ขณะทสถานะของการสงเปนแบบวาง (idle) คอยงไมมสญญาณทสงออกมาแตจะมสญญาณ หรอม

แรงดนตลอดเวลาเพอความแนใจวาฝายรบยงตดตออยกบฝายสงฝายสงจะเรมสงขอมลบอกจดเรมตน

สญญาณของอะซงโครนสจะเปน "0" หนงชวงสญญาณนาฬกา บตนเรยกวาบตสตารต ขอมล 1 ตวอกษรท

ตามหลงบตสตารตจะมขนาดตงแต 5 บต จนถง 8 บต โดยอกขระนสวนมากจะนยมใชรหสแอสก

แรกเรมทเดยวของการสงขอมล จะสงขอมลจะสงรหสโบดอด (Baudot code) ซงใช 5 บตในการ

แทนอกขระ 1 ตว สวนทตามหลงขอมลกจะเปนบตพารต ซงจะอาจจะใชหรอไมใชกไดบตพารตจะทา

หนาทเปนตวตรวจสอบ ความถกตองของสญญาณทไดรบ บตพารตอาจจะเปนแบบค (even) หรอแบบค

(odd) กได หมายความวา ถาหากเปนพารตค จานวนบตทเปน "1" ในชวงบตขอมลกบบตพารตรวมกนแลว

ตองเปนเลขคผสงขอมล จะทาหนาทตรวจสอบขอมลแลวใสบตพารตเอง

ฝายรบเมอรบสญญาณแลวกจะตองตรวจสอบดวาเปนจรงดงสถานการณทตงไวหรอไม หาก

ผดพลาดกหมายความวาสญญาณทรบนนผดพลาดไปจากสถานทสงออกมาทงนทงนนจะตองผดเปน

จานวนคเทานนคอ ผดไป 1 บต 3 บต หรอ 5 บตพรอมกน จงจะตรวจสอบไดวาผดเปนจานวนคผลรวมของ

จานวนบตทเปน "1" กยงเปนคอยด

ทงนทงนนไมไดหมายความวาพารตจะตรวจสอบการผดพลาดเปนจานวนคไดความจรงแลว

สามารถตรวจสอบความผดพลาด ไดเหมอนพารตคแตแทนทจะตรวจสอบดวาสญญาณ ทรบเขามามจานวน

ค กตรวจสอบดวามจานวนคหรอเปลา อยางไรกตาม โอกาสทจะผดพลาดเปน 2 4 6 หรอ 8 บตพรอมกนม

นอยมาก

ยอนกลบมาดสญญาณอะซงโครนสใหม หลงจากบตพารตแลวจะตองมบตสตอปซงเปน "1" ความ

กวาง ของบตสตอปอาจจะเปน 1 1.5 หรอ 2 พลสของสญญาณนาฬกา ซงแลวแตผรบและผสงจะตกลงใช

กนเอง

การเรมใชพอรตอนกรมจงจาเปนตองตงคาตางๆสาหรบการสอสาร ซงมดงตอไปน คอ

1. ความเรวของการสง

2. ความยาวของรหส 1 อกขระ

Page 120: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

120

3. บตตรวจสอบ

4. จานวนบตสตอป

การสอสารแบบซงโครนส

ขอแตกตางระหวางวงจรการสงขอมลอนกรมแบบซงโครนสและแบบอะซงโครนสกคอ ความ

ตอเนองของขอมลทสงในแบบซงโครนส ขอมลทสงออกมาเปนแบบตอเนอง ไมมบตสตารตหรอบตสตอป

หรอแมกระทงบตพารตรปแบบทใชในการสงขอมลแบบซงโครนสจงแตกตางไปจากการสงขอมล แบบอะ

ซงโครนส เชน รปแบบของบรษทไอบเอม ใชรปแบบไบซงก (binary synchronous transmission)

การซงโครไนซจะทาในระดบอกขระซงหมายความวาอกขระแตละตวมขอบเขตทแนนอนแตละ

อกขระ ไมมบตสตารต หรอบตสตอปเหมอนอะซงโครนส การซงโครนสจะกระทาทจดเรมตนของการสง

ขอมล สถานสงจะสงสญญาณทเรยกวา ตวอกษรนา (leading pad character)ไปยงสถานรบกอนทจะเรมสง

ขอมล ตวอกษรนาจะประกอบดวย "0" และ "1" สลบกน เพอใหสถานรบจดสญญาณนาฬกาใหตรงกนกอน

สง ขอมลกจะมการสงอกขระทเรยกวา syn ตามหลงตวอกษรนาออกมาสถานสงจาเปนจะบอกความยาว

ของขอมลมาในกลมน และตองบอกเครองหมายทเปนตวบอกจดเรมตนของขอมลดวย

ระยะเวลาและอตราการสงขอมล

รปท 12.5 การสงขอมลทมขนาด 8บตจากระบบไมโครโพรเซสเซอรสงออกทชองสอสาร แบบอนกรม

ในการสงขอมลแบบอนกรมมสงทสาคญทจะตองพจารณาคอ ความเรวของขอมลในการสงซงเรา

เรยกวา อตราบต (bit rate) ตามทกลาวมา และกรณทใหอตราการเปลยนแปลงของสญญาณ 1 ครงตอขอมล

1 บต จะไดอตราบตเทากบอตราโบด

บตสตารตและบตสตอป

การรบสงขอมลแบบอะซงโครนสจะตองมการบอกจดเรมตนและจดสนสดของเฟรม (frame)

ขอมลเสมอ โดยปกตจะใหสภาวะไอเดลเหมอนเชนบตสตอป ดงนนสวนของบตสตารตจะตรงขามกบไอ

Page 121: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

121

เดล โดยทวไปของการสงขอมลจะใช 1 บตทเปนลอจก "0" เปนตวบอกบตสตารต สวนบตสตอปจะยาวกวา

ทกาหนดกไดกอนทจะเรมตนเฟรมใหม

รปท 12.6 การบอกบตสตารต

มาตรฐาน ระยะทางทสงได ความเรวท

สงได

แรงดนสาหรบ

logic “1”

แรงดนสาหรบ

logic “0”

RS-232 50 ฟต หรอ 17 เมตร 20 Kbps +5V ถง +15V -5V ถง -15V

RS-422 4,000 ฟต หรอ 1.3 กโลเมตร 10 Mbps +2V ถง +6V -2V ถง -6V

RS-423 40 ฟต หรอ 13 เมตร 100 Kbps +4V ถง +6V -4V ถง -6V

ตารางท 12.1 มาตรฐานของการสอสารแบบอนกรม

ระยะทางไกลขน ความเรวทสงตองชาลงเพอไมใหเกดความผดพลาดในขอมลทรบสงกน เชนถาจะ

สงขอมลผาน RS-422 เปนระยะทางถงระยะทางสงสดทสงได (1.3 กโลเมตร) จะทาใหความเรวทสงไดไม

ถงความเรวสงสดทสงไดคอ สามารถสงดวยความเรวไมถง 10 Mbps

รปท 12.7 ตวอยางการตอ remote terminal กบ computer โดยผาน modem

DTE = Data Terminal Equipment (คอ terminal หรอ computer)

DCE = Data Communication Equipment (คอ modem)

รปท 12.7 การตอระหวาง DTE และ DCE

Page 122: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

122

12.2 Handshaking

ทาใหการตดตอสอสารทาไดอยางถกตองและมประสทธภาพ หลกเลยงปญหาขอมลสญหายได

(เนองจากอปกรณรบและอปกรณสงไมรกน)

RTS = Request To Send

CTS = Clear To Send

TxD = Transmitted Data

SG = Signal Ground

DSD = Data Set Ready

DTR = Data Terminal Ready

DCD = Received line signal detector

RI = Ring Indicator

เครองหมาย – หมายถง active low (-5V ถง -15 V ทางดานสง)

+ หมายถง active high (+5V ถง +15 V ทางดานสง)

12.3 Asynchronous Techniques

Asynchronous serial communication หมายถง การสงขอมลทละ 1 character (1 byte)

Synchronous serial communication หมายถง การสงขอมลทละ 1 block (หลายๆ 1 byte)

รปท 12.8 การสงขอมลขนาด 8 บตโดยใชเทคนคอะซงโครนส

รปท 12.8 แสดงถงการสงขอมลขนาด 8 บตโดยใชเทคนคอะซงโครนส โดยท

• T0 – start

• T1 – start bit double check

• T2 - T9 – ขอมลขนาด 8 บต

• T10 – parity bit (ในรปของ odd parity: จานวนบตของขอมลทเปน 1 รวมทง parity bit

รวมกนแลวตองเปนเลขค)

• T11 – stop bit

Page 123: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

123

Clock เปนปจจยหลกของ serial communication เงอนไขขอเดยวของ clock ใน asynchronous

technique คอ clock ของตวรบตวสงจะตองใกลเคยงกนมาก โดยทวไปจะใช clock ทมความถเปน integer

multiple ของ transmitter bit rate (16 เทา - ใชกนมากทสด)

IC ทใชใน serial communication เรยกวา universal asynchronous receiver transmitter (UART)

เชน เบอร 8250UART

12.4 Decoding Serial Bit Streams and Error Detection

UART มความสามารถในการ detect error ได 3 แบบคอ

1. Parity error: MSB เกบคาททาใหจานวนเลข “1” นนมจานวนค (even) หรอค (odd)

2. Overrun error: ไปเซต overrun error flag ใน statua register เมอไมโครโพรเซสเซอรไปแนคา

ขอมลทไดรบจาก data bus buffer ไมทนกอนทคาใหมจะเขามา ซงการทางานทถกตองนนไม

โครโพรเซสเซอรตองไปอานคาใน status register กอนอานคาขอมลทไดรบ

3. Framing error: ถกเซตเมอ receiver ไดรบ 0 แทนทจะเปน 1 สาหรบ stop bit(s)

ในทางปฏบตเราอาจจะไมสนใจ error เหลานกได แตใชซอฟตแวรในการตรวจ error จากขอมลท

รบมาแทน วธการทนยมคอ

• Checksum

• Longtitudinal Redundancy Check (LRC)

• Cyclic Redundancy Check (CRC)

การตอระหวาง PC (DTE) เขากบ modem (DCE) โดยมการใชสญญาณ handshaking

(ทมา: Tompkins, 1988)

Page 124: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

124

การตอระหวาง PC (DTE) เขากบ modem (DCE) โดยไมมการใชสญญาณ handshaking

(ทมา: Tompkins, 1988)

การตอระหวาง DTE เขากบ DTE โดยตรงโดยไมมการใชสญญาณ handshaking

(ทมา: Tompkins, 1988)

Page 125: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

125

การตอระหวาง DTE เขากบ DTE โดยตรงโดยมการใชสญญาณ handshaking

(ทมา: Tompkins, 1988)

การตรวจสอบ UART มกจะตอสาย connector เพอใหเกด loop back ดงน

TxD (2)

DTR (20)

DCD (8)

DSR (6)

CTS (5)

RTS (4)

RxD (3)

(ทมา: Tompkins, 1988)

Page 126: คํานําying/188320 Microprocessor/LectureNote.pdf · 11.5 การเขียนโปรแกรมภาษา c รับส งข อมูลกับ i/o ports.....3

126

เอกสารอางอง

• The Z80 Microprocessor: Architecture, Interfacing, Programming and Design,

Ramesh Gaonkar, Merrill Publishing Company, 1992.

• Interfacing Sensors to the IBM PC, Willis J. Tompkins และ John G. Webster, Prentice

Hall, 1988.

• Digital Systems, Ronald J. Tocci, 5th Edition, Prentice-Hall, 1991.

• ไมโครโพรเซสเซอร (Z80) I, มงคล ทองสงคราม, พมพครงท 6, หางหนสวนจากด ว.

เจ.พรนตง, 2545

• ไมโครโพรเซสเซอร (Z80) II, มงคล ทองสงคราม, พมพครงท 4, หางหนสวนจากด ว.

เจ.พรนตง, 2542

• บทความทางดานไมโครโพรเซสเซอร (Z80), อาชวะศกษาจงหวดนครราชสมา

http://203.172.183.132/chatree/ett_articles.htm

• NECTEC’s Web Based Learning,

http://www.nectec.or.th/courseware/computer/index.html

• Electronics Tips, มหาวทยาลยราชภฏจนทรเกษม,

http://elec.chandra.ac.th/tipntrick/z80/default.htm

• เอกสารประกอบการสอนรายวชา Microprocessor Interfacing and Control Design, รศ.ยน

ภวรวรรณ, มหาวทยาลยเกษตรศาสตร, http://www.cpe.ku.ac.th/~yuen/204471/

• เอกสารประกอบการสอนรายวชา สถาปตยกรรมไมโครโพรเซสเซอร, รศ.ยน ภวรวรรณ,

มหาวทยาลยเกษตรศาสตร, http://www.cpe.ku.ac.th/~yuen/204323/

• http://hyperphysics.phy-astr.gsu.edu/hbase/electronic/opampvar5.html

• เอกสารประกอบการสอนรายวชา Microprocessor Interfacing Techniques, J.R.

Drummond, University of Toronto http://faraday.physics.utoronto.ca/PHY406F/ln_intro.htm

• HyperPhysics, Department of Physics and Astronomy, Geogial State University,

http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html

• Official Support-Page: Hardware - Software - Utilities - FAQ – Docs for Z80-Family

http://www.z80.info/