Page 96 - 22-0722 EBOOK
P. 96
wta4hi endp
;save Parity bit and assign Stopbit
;**********************************************
mov byte ptr[di],bh ;odd parity
;wait for P1A4 (DAT) line to go lo
inc di
mov byte ptr[di],1 ;Stopbit = 1
wta4lo proc
push ax
;release DAT line by making P1B3 hi
pop di
mov al,08h
pop cx
out ppi_port1_b,al
pop bx
pop ax
jmp $+2 ;I/O delay
sti ;allow INTs
a4hi: in al,ppi_port1_a
ret
jmp $+2 ;I/O delay
Byt2bit endp
and al,10h ;check bit 4 of P1A
cmp al,10h ;bit a4=hi ?
;**********************************************
je a4hi
;serially send data in al to PIC16F627A
pop ax
SndHdat proc
ret
;use this proc after Req2Snd
wta4lo endp
;**********************************************
cli ;prevent INTs
push ax
;wait for P1A7 (CLK) line to go hi
push bx
push cx
wta7hi proc
push ax
push di
;release CLK line by making P1C3 hi
push si
;send 8 work data bits + Parity bit + Stopbit
mov al,08h
mov si,dat0 ;addr of 1st bit
out ppi_port1_c,al
jmp $+2 ;I/O delay
mov cx,10
a7lo: in al,ppi_port1_a
call wta7lo ;wait until CLK=lo
loop10:
jmp $+2 ;I/O delay
call wta7hi ;wait until CLK=hi
and al,80h ;check bit 7 of P1A
cmp al,00h ;bit a7=lo ?
jmp $+2 ;delay for about 10 us
je a7lo
jmp $+2
pop ax
jmp $+2
mov al,byte ptr[si] ;current bit
ret
shl al,1 ;shift bit0 to bit1
wta7hi endp
shl al,1 ;to bit2
;**********************************************
shl al,1 ;to bit3
out ppi_port1_b,al ;put bit on P1B3
jmp $+2 ;I/O delay
ภาพที่ ๘ ซอฟต์แวร์การรับ-ส่งข้อมูลแบบอนุกรมของแผงวงจรไมโครคอนโทรลเลอร์ 8088 (ต่อ)
;Page 8/8 of Fig.8
;Page 7/8 of Fig.8
loop loop8 ret
;wait for P1A7 (CLK) line to go lo dly63us proc ;time delay about 63 us
wta7lo proc push cx
push ax mov cx,0010h ;delay value
;release CLK line by making P1C3 hi reptw: loop reptw ;count down CX
mov al,08h pop cx
out ppi_port1_c,al ret
dly63us endp
jmp $+2 ;I/O delay วารสารราชบััณฑิิตยสภา
a7hi: in al,ppi_port1_a ;**********************************************
jmp $+2 ;I/O delay ปีีที่่� ๔๖ ฉบัับัที่่� ๓ กัันยายน-ธัันวาคม ๒๕๖๔
and al,80h ;check bit 7 of P1A dly1ms proc ;time delay about 1 ms
86 cmp al,80h ;bit a7=hi ? การแลกเปล่�ยนข้้อมููลแบบอนุกรมูระหว่่างไมูโครคอนโทรลเลอร์โดยใช้้เกณฑ์์ว่ิธี่ข้องแผงแป้นอักข้ระ
push cx
je a7hi mov cx,0100h ;delay value
pop ax reptx: loop reptx ;count down CX
ret pop cx
wta7lo endp ret
;********************************************** dly1ms endp
;**********************************************
;set bit 3 of P1B (release DAT line)
stb3hi proc dly64 proc ;time delay about 64 ms
push ax push cx
mov al,08h ;make P1B3 line hi mov cx,4000h ;delay value
out ppi_port1_b,al repty: loop repty ;count down CX
jmp $+2 ;I/O delay pop cx
pop ax ret
ret dly64 endp
stb3hi endp ;**********************************************
;**********************************************
dly250 proc ;time delay about 250 ms
;clear bit 3 of P1B (put DAT=lo) push cx
clb3lo proc mov cx,0FFFFh ;delay value
push ax reptz: loop reptz ;count down CX
mov al,00h ;make P1B3 line lo pop cx
out ppi_port1_b,al ret
jmp $+2 ;I/O delay dly250 endp
pop ax ;**********************************************
ret
clb3lo endp
;********************************************** ;far jump to start at 0000:8000h
org 0FFF0h
;set bit 3 of P1C (release CLK line) db 0EAh, 0,80h, 0,0
stc3hi proc end main
push ax ;**********************************************
mov al,08h ;make P1C3 line hi
out ppi_port1_c,al
jmp $+2 ;I/O delay
pop ax
ret
stc3hi endp
;**********************************************
;clear bit 3 of P1C (put CLK=lo)
clc3lo proc
push ax
mov al,00h ;make P1C3 line lo
out ppi_port1_c,al
jmp $+2 ;I/O delay
pop ax
ret
clc3lo endp
;**********************************************
dly20us proc ;time delay about 20 us
push cx
mov cx,0005h ;delay value
reptv: loop reptv ;count down CX
pop cx ret
dly20us endp
;**********************************************
ภาพท่� ๘ ซอฟตั์แวร์การรับ-ส่งข้้อมูลแบบอนีุ้กรมข้องแผงวงจรไมโครคอนี้โทรลเลอร์ 8088 (ตั่อ)
ภาพที่ ๘ ซอฟต์แวร์การรับ-ส่งข้อมูลแบบอนุกรมของแผงวงจรไมโครคอนโทรลเลอร์ 8088 (ต่อ)
ซอฟตั์แวร์ภาษาแอสเซมบล้สำาหรับไมโครโพิรเซสเซอร์ 8088 ตัามภาพิท้� ๘ ม้รายละเอ้ยด
มากกว่าท้�แสดงไว้ในี้ผังงานี้ตัามภาพิท้� ๖ ยกตััวอย่างว่า ก่อนี้ท้�แผงวงจรไมโครคอนี้โทรลเลอร์ 8088
(แผงวงจรตััวหลัก) จะเริ�มรับข้้อมูลจากแผงวงจรไมโครคอนี้โทรลเลอร์ PIC16F627A (แผงวงจรตััวรอง) นี้ั�นี้
แผงวงจร 8088 จะแสดงแสงกะพิริบ ๕ ครั�งจากไดโอดเปล่งแสงจำานี้วนี้ ๘ หนี้่วยท้�ตั่ออยู่กับวงจรรวม