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