đường dẫn ( LSR ) sẽ kiểm tra xem có đúng là thanh ghi giữ truyền ( THR, bộ đệm truyền ) đang trống rỗng. Nếu như một ký tự được nạp vào thanh ghi THR
và ký tự khác được di chuyển vào trong thanh ghi thì ký tự đầu tiên sẽ bị ghi đè
lên. Đoạn chương 2 thực hiện việc kiểm tra thanh THR. Khi THR ở trạng thái
rỗng thì việc xuất ra được thực hiện.
- "Thanh ghi trạng thái đường truyễn cũng có thể được sử dụng để kiểm tra xem có dữ liệu nhận được đang chờ để đọc. Đoạn chương trình tiếp theo ( chương
trình 3) minh hoạ cho việc kiểm tra bít 0 của LSR để xác định xem liệu một ký
tự đã được nhận nhưng chưa được lấy ra.
- Nếu như ở đó một ký tự đang đợi chờ trong thủ tục thì ký tự đó sẽ được nhận và đẩy lên màn hình. Cách đặt các thông số ban đầu cho cổng, việc truyền và
nhận dữ liệu đều đã được trình bày. Việc điểu khiển tín hiệu bắt tay tuỳ thuộc
vào logic của việc thiết kế chương trình và phần mềm. Cơ chế kích hoạt ( làm hoạt động ) từng lối ra riêng biệt tương đối đơn giản. Để kích hoạt một bit cụ hoạt động ) từng lối ra riêng biệt tương đối đơn giản. Để kích hoạt một bit cụ
thể, ta đặt bịt vào trạng thái logic ! ở thanh ghi điều khiển MODEM thích hợp.
——`ˆ—————
Luận Văn Tốt Nghiệp GVHD: ThS NGUYỄN THANH PHƯƠNG
==——
Để kiểm tra trạng thái của đường dẫn bắt tay, có thể sử dụng kỹ thuật che để có thể tiến hành xử lý theo bit.
Sau đây là một số chương trình viết bằng C và BASIC được dùng trong lập trình truyền thông qua cổng nối tiếp :
Chương trình 1 : Đặt các thông số cho cổng nối tiếp
/# First set the BAUDRATTE to 1200 */
baud_rate = 18”3200/(1200*16); /* baud.rate=divisor */ outp (0x3FB, 0x80); /* đặt Ï vào DLAB */ outp (0x3F8, (baud_rate & 0xfÐ);
/# Load LSB into latch */ outp (0x3F9, ((baud_ rate & 0xFF00)>>4));
/# Load MSB into latch */
/# Now set the format */
outp (Ox1, FB, 3); /# 8, 1, and NO Parity */ * Eirst set the BAUDRATE to 1299 baud. rate = 1843200/(1200*16) ° baud. rate = divISOT
Viết bằng BASIC
Out &h3FB, &h8O * đặt 1 vào DLAB
Out &h3F8, (baud. rate AND 255 ) ° Load LSB into latch
Out &h3F9, ((baud. rate AND &hFF00)/ 256 ) * Load MSB into latch
“Now set the format
Out &h3FB, 3 “8, 1, and NO Parity
Chương trình 2 : Kiểm tra thanh ghỉ THR ( bộ đệm truyền ) ## Loop unul THRE */
while (!((status = inp(Ox3fd)) & 32 ));
/* while bịt 5 1s low.... outp (0x3E8, var);
“ Loop until THRE /* Vòng lặp chừng nào THR trống
CĐ nh “ — __ _ ÔÔÔÔÐ
Luận Văn Tốt Nghiệp GVHD: ThS NGUYỄN THANH PHƯƠNG
======ễ——==
Viết bằng BASIC
Do
STATUS = INP (&H3FD)
LOOP UNTIL ((STATUS AND 32)= 32) * Now the Transmitter is ready
OUT &H3F8§, VAR
Chương trình 3 : Kiểm tra thanh ghi trạng thái đường truyền LSR
/* Check for flag
1F ((status = Inp (0x3fđ)) &I)) /* if bit Ö ís hi...
var =inp`(0x3f8); /* get the character */
Viết bằng BASIC
STATUS = INP (&h3fd) * Check for flag
IF (STATUS AND 1) = 1) THEN var = inp (0x3f8) “ get the character