Tải bản đầy đủ (.pdf) (10 trang)

Quá trình hình thành giáo trình phương pháp giao tiếp giữa khối phối ghép bus với bộ vi xử lý AMD trong mainboard p7 ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (121.37 KB, 10 trang )

* Lưu đồ chương trình truyền dữ liệu.







































BEGIN

KHỞI PHÁT: GHI
TỪ CHẾ ĐỘ
GHI LỆNH :
DTR, TxEN
ĐỌC TRẠNG THÁI:
DSR, TxRDy
Kiểm tra sẵn
sàng :DSR=
TxRDY=1

GHI SỐ
LIỆU RA
GHI LỆNH PHÁT: RTS

END

* Lưu đồ chương trình nhận dữ liệu.







































BEGIN

KHỞI PHÁT: GHI
TỪ CHẾ ĐỘ
GHI L
ỆNH :

DTR, RxEN,RTS
ĐỌC TRẠNG THÁI:

DSR, RxRDy
Kiểm tra sẵn
sàng :DSR=
RxRDY=1

ĐỌC SỐ LIỆU TỪ
THANH GHI ĐỆM
SỐ LIỆU
END

3. CHệễNG TRèNH.
a. Chửụng trỡnh khụỷi taùo 8251A.
MOV DX, 0FFF2h
MOV AL,00h
OUT DX,AL
MOV CX 2h

D0 : LOOP D0
OUT DX, AL
D1: MOV CX,2h
LOOP D1
OUT DX, AL
MOV CX,2h
D2: LOOP D2
MOV AL, 40h
OUT DX, AL
MOV CX, 2h
D3: LOOP D3
MOV AL, 11001110B
OUT DX, AL
MOV CX, 2h
D4: LOOP D4
MOV CX, 6500h
MOV AL,03h
OUT 01h


Chửụng trỡnh truyen dửừ lieọu.
;chuong trinh truyen du lieu
org 70000h
mov dx 02h ;dia chi thanh ghi dieu khien
mov al,00h
out dx,al ;xoa thanh ghi dieu khien
call delay

out dx,al
call delay


out dx,al
call delay

mov al,40h ; goi 40h vao al, gia tri cua bit RI
out dx,al ;de xoa thanh ghi noi
call delay
mov al,0cdh ; ghi loi dieu khien che do vao
out dx,al ;thanh ghi dieu khien che do
call delay
mov cx,6500h ; dia chi dieu khien
mov al,03h ; ghi tu che do DTR(D1=1),TxEN(D0=1)
out dx,al
call delay
x1: in al,dx
and al,81h ; kiem tra trang thai
cmp al,81h
jnz x1
mov dx,cx
mov al,m
mov bl,al ; nap byte dia chi tap vao bl
mov dx,00h
out dx,al ;gui byte dia chi thap
call delay

mov al,21h ; ghi tu lenh DTS(D5),TxEN(D0) de truyen
mov dx,01h
out dx,21h
call delay
inc cx ;tang dia chi de lay byte ke tiep

mov al,03h
out dx,al
call delay
mov dx,01h
x2: in al,dx
and al,81h
cmp al,81h
jnz x2
mov dx,00h
in al,dx
mov dx,cx
mov al,m
mov bh,al ;nap dia chi cao vao bh
out dx,al ;truyen byte dia chi cao
call delay
mov al,21h
mov dx,01h
out dx,al ;ra lenh truyen
call delay
mov dx,01h
x3: in al,dx
and al,81h
cmp al,81h
jnz x3
mov dx,cx
mov al,m
mov dx ooh
out dx,al ;gui so byte can truyen
mov ah,al
x5: mov al,21h

out dx,al
call delay
mov dx,01h
x4: in al,dx
and al,81h
cmp al,81h
jnz x4
mov dx,bx ;tuyen du lieu can truyen
mov al,m
mov dx,00h
out dx,al
inc bx
dec ah
mov al,21h
mov dx,o1h
out dx,al
jnz x5
end

Chöông trình nhaän döõ lieäu.
;chuong trinh con delay
delay: push cx
mov cx,03h
y0: loop y0
pop cx
ret

;chuong trinh nhan du lieu
org 70000h
mov dx 01h ;dia chi thanh ghi dieu khien

mov al,00h
out dx,al ;xoa thanh ghi dieu khien
call delay

out dx,al
call delay

out dx,al
call delay

mov al,40h ; goi 40h vao al, gia tri cua bit RI de xoa thanh ghi noi
out dx,al
call delay
mov al,0cdh; ghi loi dieu khien che do vao thanh ghi dieu khien
out dx,al
call delay
mov al,26h ; ghi tu che do RTR(D1=1),RxEN(D0=1)
out dx,al
call delay
y1: in al,dx
and al,82h; kiem tra trang thai
cmp al,82h
jnz y1
mov dx,00h
in al,dx
mov bl,al; nap byte dia chi tap vao bl
mov dx,01h
y2: in al,dx
and al,82h
cmp al,82h

jnz y2
mov dx,00h
in al,dx
mov bh,al
mov dx,01h

y3: in al,dx
and al,82h
cmp al,82h
jnz y3
mov dx ooh
in dx,al ;nhan so byte truyen
mov ah,al

mov dx,01h ;nhan du lieu
y4: in al,dx
and al,82h
cmp al,82h
jnz y4

mov dx,00h
in al,dx
mov dx,bx
mov m,al
inc bx
jnz x4
end
II. CHÖÔNG TRÌNH TRUYEÀN DÖÕ LIEÄU TREÂN MAÙY TÍNH
; TERMINAL.ASM
; STACK

stack segment stack
db 300 dup('?')
stack ends
; DATA
data segment
prompt db 'File name:$'
filename db 30 dup(0)
buffer db 512 dup(0)
buffrr db 512 dup(0)
handle dw ?
openerr db 0dh,0ah,'OPEN ERROR - COPDE'
errcode db 30h,'$'

;messages
MENU_MS db ' **TERMINAL PROGRAM**',0dh,0ah
db '<F1> to redisplay this MENU',0dh,0ah
db '<F2> to set communications protocol',0dh,0ah
db '<F3> to display protocol installed',0dh,0ah
db '<F4> to open file.hex and trasnmit',0dh,0ah
db '<F9> to exit the TERMINAL program',0dh,0ah
db 'All character typed are transmitter',0dh,0ah
db 'All character receiver are display',0dh,0ah
db 0dh,0ah,'$'

PROT_MS db '* Installed communications protocol',0dh,0ah
db 'Baud rate:'
Baud% db '2400',0dh,0ah
db 'Parity:'
Par% db 'Even',0dh,0ah
db 'Stop bit:'

Stop% db '1',0dh,0ah
db 'Word length:'
Word% db '8',0dh,0ah,0ah,'$'

Baud$$ db '110 150 300 600 1200 2400 4800 9600'
Par$$ db 'odd noneven'

baud_menu db 0dh,0ah,'**New communication parameter'
db 'rs input **',0dh,0ah
db 'baud rate:',0dh,0ah
db '1 = 110',0dh,0ah
db '2 = 150',0dh,0ah
db '3 = 300',0dh,0ah
db '4 = 600',0dh,0ah
db '5 = 1200',0dh,0ah
db '6 = 2400',0dh,0ah
db '7 = 4800',0dh,0ah
db '8 = 9600',0dh,0ah
db 'Select: $'

par_menu db 0dh,0ah,'Pariry:',0dh,0ah
db '1 = odd',0dh,0ah
db '2 = none',0dh,0ah
db '3 = even',0dh,0ah
db 'Select: $'

Stop_menu db 0dh,0ah,'Stop bit:',0dh,0ah
db '1 = 1 stop bit',0dh,0ah
db '2 = 2 stop bit',0dh,0ah
db 'Select: $'


Word_menu db 0dh,0ah,'Word length:',0dh,0ah
db '1 = 7 bit',0dh,0ah
db '2 = 8 bit',0dh,0ah
db 'Select: $'

err1_ms db 0dh,0ah,'*** cannot transmit ***',0dh,0ah
card_base dw 02f8h ;address of RS 232 card
inT_num db 0ch
setup_byte db 0bbh ;
;Origin
O_int_seg dw 0000h ;segment
O_int_off dw 0000h ;offset

;circular buffer and pointer:
circ_buf db 20 dup(00h)
dw 0
data_in dw 0 ;input pointer
data_out dw 0 ;output pointer

data ends
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CODE xxxxxxxxxxxxxxxxxx
code segment
assume CS:code
start:
mov ax,data
mov ds,ax
assume ds:data
mov es,ax
assume es:data

;display MENU at cursor
mov dx,offset menu_ms ;messages
call show_message
;hardware type
push ds
mov dx,0f000h
mov ds,dx
mov al,ds:[0fffeh] ;code to AL
;get addr of the RS232 card from BIOS data area
mov dx,0
mov ds,dx
mov cx,ds:0400h
pop ds
mov card_base,cx
;determine interrupt number:
; 0bh IRQ4 all other
cmp al,0fdh
jne set_address
mov int_num,0bh
;save/install interrupt
set_address:
mov ah,53
mov al,int_num
int 21h
mov o_int_seg,es
mov o_int_off,bx
mov ah,37
mov al,int_num
mov dx,offset cs:rs232_int
push ds

×