Lập trình cho vi xử lý xuất dữ liệu qua cổng song song

Một phần của tài liệu Giáo trình Thực hành vi xử lý - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 46 - 54)

Bài 2: Giao tiếp vi xử lý với các bộ chỉ thị

2. Lập trình cho vi xử lý xuất dữ liệu qua cổng song song

VÝ dô 1:

Lập trình điều khiển 8 Led đơn nối với cổng máy in (LPT) của máy tính để bàn với yêu cầu 8 led đơn chớp tắt lặp lại liên tục. Biết rằng địa chỉ của thanh ghi dữ

liệu là 378H, đầu ra tích cực ở mức cao.

+ Sơ đồ nguyên lý.

S4 D0 D1 D2 D3 D4 D5 D6 D7 C0\C1\

C2 C3\

C4 S3

S5 S6 S7\

D0D1 D2D3 D4D5 D6D7 114

215 316 417 518 619 720 821 922 1023 1124 1225 13

J1

CONN-D 25M

SO DO DIEU KHIEN 8 LED DO N Q UA THANH G HI DATA

2 A0 B0 18

3 A1 B1 17

4 A2 B2 16

5 A3 B3 15

6 A4 B4 14

7 A5 B5 13

8 A6 B6 12

9 A7 B7 11

19 CE AB/BA 1

U1

74HC245

R1

1k

D1

LE D-RED

R2

1k

D2

LE D-RED

R3

1k

D3

LE D-RED

R4

1k

D4

LE D-RED

R5

1k

D5

LE D-RED

R6

1k

D6

LE D-RED

R7

1k

D7

LE D-RED

R8

1k

D8

LE D-RED

Bước 1: Vẽ lưu đồ giải thuật

- Lưu đồ giải thuật có thể tham khảo như sau:

Xác lập các khai báo Nạp địa chỉ cổng LPT

Nạp AL =0 Xuất ra cổng LPT

Tạo trễ Nạp AL =0FFH Xuất ra cổng LPT

Bắt đầu

Bước 2: Viết chương trình

;Chuong trinh viet dang EXE

.MODEL small ;khai báo quy mô sử dụng chương trình là nhỏ .DATA ;khai bao doan du lieu

du_lieu db "chop tat 8 led don $"

.STACK 100 ;khai bao doan

;***********************

.CODE ;khai bao doan ma

Main Proc ;bắt đầu chương trình chính

;dat cac thanh ghi doan

mov ax,data ;muon AX de nap dia chi du lieu vao thanh ghi doan du lieu mov ds,ax

lea dx,du_lieu ;nap du lieu vao dx

mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat ;buoc ;ket thuc=$)

int 21h

; ngat cho doi nhan phim lap:

mov dx,378h mov al,0 out dx,al call delay mov al,0ffh out dx,al

call delay jmp lap ends

mov ax, 4ch ; thoat khoi he mo int 21h

delay:

mov cx,1000 loop $

ret

ends main ;ket thuc viec hop dich chuong trinh

VÝ dô 2:

Lập trình điều khiển 8 Led đơn nối với cổng máy in ( LPT) của máy tính để bàn với yêu cầu 8 led đơn chớp tắt lặp lại liên tục. Biết rằng địa chỉ của thanh ghi dữ

liệu là 378H, đầu ra tích cực ở mức cao.

Bước 1: Vẽ lưu đồ giải thuật

- Lưu đồ giải thuật có thể tham khảo như sau:

Xác lập các khai báo Nạp địa chỉ cổng LPT

Bắt đầu

- Tắt các led đầu ra - Xuất ra cổng LPT - Đặt cờ C lên 1

KiÓm tra

- Xoay thanh ghi AL qua cê C

- Xuất ra cổng LPT - Gọi trễ

C=0

Bước 2: Viết chương trình

;Chuong trinh viet dang EXE

.MODEL small ;khai báo quy mô sử dụng chương trình là nhỏ .DATA ;khai bao doan du lieu

du_lieu db " 8 led don sang dan $"

.STACK 100 ;khai bao doan

;***********************

.CODE ;khai bao doan ma

Main Proc ;bắt đầu chương trình chính

;dat cac thanh ghi doan

mov ax,data ;muon AX de nap dia chi du lieu vao thanh ghi doan du lieu mov ds,ax

lea dx,du_lieu ;nap du lieu vao dx

mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat ;buoc ;ket thuc=$)

int 21h

; ngat cho doi nhan phim lap:

mov dx,378h mov al,0 out dx,al call delay nhan:

Stc

Rcl al,1 out dx,al call delay Jnc nhan jmp lap ends

mov ax, 4ch ; thoat khoi he mo int 21h

delay:

mov cx,0fffh lap2: push cx mov cx, 0ffffh loop $

pop cx loop lap2 ret

ends main ;ket thuc viec hop dich chuong trinh

VÝ dô 3:

Lập trình điều khiển Led 7 đoạn nối với cổng máy in ( LPT) của máy tính để bàn với yêu cầu đếm lên từ 0-9. Biết rằng địa chỉ của thanh ghi dữ liệu là 378H, thanh ghi trạng thái là 37Ah đầu ra tích cực ở mức cao.

Viết chương trình

.MODEL small ;khai báo quy mô sử dụng chương trình là nhỏ .DATA ;khai bao doan du lieu

du_lieu db " Dem lent tu 0 - 9 $"

.STACK 100 ;khai bao doan

;***********************

.CODE ;khai bao doan ma

Main Proc ;bắt đầu chương trình chính

;dat cac thanh ghi doan

mov ax,data ;muon AX de nap dia chi du lieu vao thanh ghi doan du lieu mov ds,ax

lea dx,du_lieu ;nap du lieu vao dx

mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat ;buoc ;ket thuc=$)

int 21h

; ngat cho doi nhan phim

mov dx,37Ah ; thanh ghi ®iÒu khiÓn mov al,00010101b ; chọn led đơn vị out dx,al

lap:

mov dx,378h

mov al,0C0h ; mã số 0 out dx,al

call delay

mov al,0F9h ; mã số 1 out dx,al

call delay

mov al,0A4h ; mã số 2 out dx,al

call delay

mov al,0B0h ; mã số 3 out dx,al

call delay

mov al,99h ; mã số 4 out dx,al

call delay

mov al,92h ; mã số 5

out dx,al call delay

mov al,82h ; mã số 6 out dx,al

call delay

mov al,0F8h ; mã số 7 out dx,al

call delay

mov al,80h ; mã số 8 out dx,al

call delay

mov al,90h ; mã số 9 out dx,al

call delay jmp lap ends

mov ax, 4ch ; thoat khoi he mo int 21h

delay:

mov cx,50000 nhan:push cx mov cx,50000 loop $

pop cx loop nhan ret

ends main ;ket thuc viec hop dich chuong trinh Một số lỗi thường gặp

Thanh ghi điều khiển 37Ah có 3 bit đầu tiên có mức tích cực như sau:

/C0: strobe (đảo mức)

/C1: Auto Linefeed (đảo mức)

C2: Initialize Printer(Reset) (không đảo mức)

Do đó, trong quá trình lập trình xuất dữ liệu cần phải lưu ý đến đặc điểm này để ghi dữ liệu phù hợp.

Bài tập:

Bài tập 1: Viết chương trình cho vi xử lý điều khiển các led đơn thực hiện theo yêu cầu sau:

- Tắt dần

- Một điểm sáng chạy - Một điểm tối chạy

- Một điểm sáng một điểm tối xen kẽ nhâu - Sáng từ giữa ta, tắt từ giữa ra

- Sáng từ 2 bên vào, tắt từ 2 bên vào - Sáng dồn, tối dồn

Bài tập 2: Viết chương trình cho vi xử lý điều khiển các led đơn sáng dần 2 lần tắt dần 3 lần, chớp tắt 4 lần rồilặp lại.

Bài tập 3: Viết chương trình cho vi xử lý điều khiển các led đơn thực hiện theo yêu cầu sau:

- Bấm phím A thì các led đơn chớp tắt - Bấm phím B thì các led đơn sáng dần

Bài tập 4: Viết chương trình cho vi xử lý điều khiển led 7 đoạn thực hiện theo yêu cầu đếm lên từ 0 – 9 rồi đếm xuống từ 9 - 0

Bài tập 5: Viết chương trình cho vi xử lý điều khiển 2 led 7 đoạn đếm lên từ 00 - 99

Một phần của tài liệu Giáo trình Thực hành vi xử lý - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 46 - 54)

Tải bản đầy đủ (PDF)

(207 trang)