Nghĩa: Đọc trạng thái cổng COM

Một phần của tài liệu Bài tập về asm pdf (Trang 28)

trình về cổng COM Lập trình cho UART 8250A/16450 Địa chỉ các cổng COM và ngắt 14h-dịch vụ BIOS cho cổng COM Hàm 1h: Ghi một kí tự ra cổng COM

Đầu vào: AH=1

DX=số hiệu cổng COM (0-3) AL= Mã ASCII của kí tự AL= Mã ASCII của kí tự Int 14h

Đầu ra: AH = trạng thái lỗi của cổng. Bít 7=1: có lỗi, bít của cổng. Bít 7=1: có lỗi, bít 7=0 không có lỗi.

Hàm 2h: Nhận một kí tự ra cổng COM cổng COM

Đầu vào: AH=2

DX=số hiệu cổng COM (0-3) Đầu ra: AL= Mã ASCII của Đầu ra: AL= Mã ASCII của kí tự nhận được. AH = trạng thái lỗi của cổng. Bít 7=1: có lỗi, bít 7=0 không có lỗi. Hàm 3h:

Ý nghĩa: Đọc trạng thái cổng COM COM

Đầu vào: AH=3

DX=số hiệu cổng COM (0-3) Đầu ra:AH = trạng thái cổng

DX=số hiệu cổng COM (0-3) Đầu ra:AH = trạng thái cổng modem.

b. Lập trình cho UART 8250A 8250A

Ví dụ 1: Khởi tạo chế độ làm việc cho cổng COM3 làm việc cho cổng COM3 với các thông số: 6 bít mã kí tự truyền , tốc độ truyền 2400 bits/ giây, parity chẵn, một bít stop.

Dạng thức của AL

AL=1011 1001=B9h

Đoạn mã chương trình sẽ được viết như sau: được viết như sau:

Mov AH,0 ; khởi tạo

Mov DX,2 ; cổng COM3 có số hiệu 2 số hiệu 2

Mov AL,B9h Int 14h Int 14h

Ví dụ 2: Khởi tạo chế độ làm việc cho cổng COM1 làm việc cho cổng COM1 với các thông số: 7 bít mã kí tự truyền, tốc độ truyền 4800 bits/ giây, parity chẵn, một bít stop không điều khiển gán đoạn ở Sout.

Địa chỉ cổng của thanh ghi điều khiển đường truyền là điều khiển đường truyền là 3FB (tính từ địa chỉ cơ sỏ 3F8)

Giá trị của của thanh ghi điều khiển đường truyền là: khiển đường truyền là:

Giá trị này bằng 1AH

Địa chỉ cổng của thanh ghi số chia LSB là 3F8 với chia LSB là 3F8 với DLAB=1

Địa chỉ cổng của thanh ghi số chia MSB là 3F9 với chia MSB là 3F9 với DLAB=1

Giả thiết dùng xung đồng hồ tần số 1,8432 Mhz ở đầu vào tần số 1,8432 Mhz ở đầu vào của UART và ta muốn có tốc độ

truyền 4.800 bits/giây, ta cần tính số chia để ghi giá trị số tính số chia để ghi giá trị số chia vào thanh ghi số chia Số chia = 1.843200/ (4.800x16)=24

Đoạn mã chương trình sẽ được viết như sau: được viết như sau:

Mov AL,80 ; đưa vào LCR để tạo ra DLAB=1 để tạo ra DLAB=1

Một phần của tài liệu Bài tập về asm pdf (Trang 28)