Trước khi chuyển giao một ký tự tới bộ truyền để gửi, thanh ghi trạng thá

Một phần của tài liệu Thiết kế và thi công trạm cân xe ôtô (Trang 74 - 76)

đườ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

Một phần của tài liệu Thiết kế và thi công trạm cân xe ôtô (Trang 74 - 76)