[ บทความ : เรียนรู้ z80 ] ตอนที่ 13 เรื่อง คำสั่งติดต่อกับ I/O (เพิ่มเติม)

เรียนรู้ Z80 ตอนที่ 13

คำสั่งติดต่อกับ I/O (เพิ่มเติม)

จากบทความก่อนหน้านี้ [GO] ผมมีตัวอย่างสำหรับบอร์ด ET-BOARD V4 และ ET-BOARD V6 ไปแล้ว ... แต่เจ้า ET-BOARD V3.5 ดันเสีย แต่ตอนนี้ผมซ่อมแซมมันเรียบร้อยแล้ว ผมเลยนำตัวอย่างสำหรับ ET-BOARD V3.5 มาแสดงเป็นตัวอย่างพร้อมทั้ง Flowchart ... เอาล่ะ มาดู source code กันก่อนครับ


	;
	; Filename : IO1v3.asz
	; Author   : Supachai Budsaratij   (raek@se-ed.net)
	; Date     : 04/10/2001
	; Hardware : ET-Board V3.5
	;
	            INCL    "etv35.inz"         ; Include header for ET-V3.5


	P_SEGM      EQU     S8255_PB
	P_DIGIT     EQU     S8255_PC
	P_LEDFLAG   EQU     06h

	            ORG     UMEM_ORG        ; Start at UMEM_ORG

	main        LD      SP,XMEM_END     ; Set Stack Pointer

	;---- Program start here
	            LD      D,0
	            LD      BC,1

	; --- Move light
	loop        LD      A,P_LEDFLAG     ; Select LED FLAG device
	            OUT     (P_DIGIT),A     ;
	            LD      A,D             ; Send the data to LED
	            OUT     (P_SEGM),A      ;
	;--- Delay
	            LD      HL,8000h
	delay       SBC     HL,BC
	            JP      NZ,delay

	;--- Swap the pattern of the LED.
	            LD      A,0FFh
	            SUB     D
	            LD      D,A
	;--- Do again
	            JP      loop

	            END

ผลของการทำงานเป็นดังนี้ครับ (ถ่ายด้วย USB Camera ของ Intel ภาพก็ OK มากกว่าเจ้า CCD Color ที่ผมใช้ในบทความก่อนๆ เพราะมันสามารถปรับ Focus พร้อมทั้ง ปรับค่าความสว่างได้ด้วย ... แต่ราคาแพงกว่าตั้ง 2 เท่าแน่ะ ... )

,

จากโปรแกรมด้านบน ผมเพิ่มบรรทัด พิเศษจากตัวอย่างก่อนหน้านี้อีก 1 บรรทัด นั่นคือ

LD SP, XMEM_END

จำได้ไหมครับว่า ใช้ทำอะไร ... คำตอบคือ เอาไว้กำหนดค่าเริ่มต้นของ Stack ที่ผมกำหนดค่าของ SP ใหม่ ก็เพื่อ ให้มีพื้นที่สำหรับ stack เพิ่มขึ้น (ถ้าไม่กำหนด มันจะใช้ค่าตามที่กำหนดโดย monitor program) ส่วนการทำงานก็เหมือนเดิม ... มาดู Flowchart กันดีกว่าครับ ...

ตอนนี้คำสั่งเกี่ยวกับ I/O ก็จบสมบูรณ์แล้วครับ ... ต่อไปก็จะเป็นเรื่องของ คำสั่งเกี่ยวกับบิต , คำสั่งทางด้าน Logic (ตรรกศาสตร์), และพวกตกค้าง (อีกเยอะเหมือนกันครับ :D) ... ตอนนี้เท่านี้ก่อนครับ



เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : ๑๓ เม.ย. ๒๕๔๔