Hà Thanh ghi lệnhSo sánh

Một phần của tài liệu Thiết kế và thi công Kit vi xử lý 8086 (Trang 69 - 85)

I. Cấu trúc phần cứng của 8251: 1.Sơ đồ khối:

40hà Thanh ghi lệnhSo sánh

CL=03h Begin 00h àAL

AL à Thanh ghi điều khiển

Delay

03h à CL

Ret Delay Nạp lời điều khiển

Delay

40h à Thanh ghi lệnh So sánh So sánh

Lưu đồ chương trình con hiển thị:

Begin

Cất các thanh ghi BX, AX, CX FE38h ® vào thanh ghi BX A000h ® vào thanh ghi CX

Lấy data cất vào AL Cất thanh ghi DS

Lấy data gửi ra hiển thị Lấy lại DS

Tăng địa chỉ lên 1

So sánh = 40

Lấy lại thanh ghi CX, AX, BX, DS

Lưu đồ phím chức năng:

Lưu đồ phím key – up:

Lưu đồ phím key – down:

Begin

Lấy địa chỉ 4 Led trái

Cất một byte vào ô nhớ Tăng nội dung ô nhớ lên 1

[FE33] ¬ thanh ghi AL [FE31] ¬ thanh ghi BH [FE30] ¬ thanh ghi BL Gọi chương trình CON4-8

Xóa 2 vùng nhớ data [FE32] và [FE33] Có phải phím Jmp X4 Jmp X6 Jmp X7

Lấy địa chỉ 4 Led trái

Giảm nội dung ô nhớ đi 1

Có phải phím Down không

Jmp x4 Begin

Lưu đồ phím key – set:

Lưu đồ phím key – go:

Lưu đồ chương trình delay:

Ret Begin Cất CX 72E3 ® CX Lặp lại 72E3 Lấy CX lại Jmp X9 Begin Có phải phím set không (adsbygoogle = window.adsbygoogle || []).push({});

Lấy địa chỉ 4 Led trái

Jmp X8 Lấy data Begin Jmp X4 Thoát khỏi chương trình Có phải phím go

Lưu đồ chương trình con xử lý phím chức năng Lưu đồ phím key 16 Lưu đồ phím key 23 Begin Call key 23 AL ® AH [FE41] ® AL AL and [FE41] Kết quả = 0 Lấy lại mã phím Ret Begin Call key 47

Trao mã phím sau đó tăng phím lên 1 Kết quả = 0 [FE41] ® AL [FE41] and AL Kết quả có= 0 không?

Giảm kết quả đi 1 Trao lại mã phím

Lưu đồ phím key 47

Begin

Ret Cất thanh ghi DS

Gửi từ điều khiển và đọc trạng thái

AL and 0Fh

Sau khi xóa kết quả = 0 chưa

Đọc mã phím

Lấy mã phím gởi ra để hiển thị Call Delay

Lấy DS lại

Lưu đồ chương trình chuyển 4 ô nhớ thành 8 ô nhớ

Begin

Copy dữ liệu từ ô nhớ [FE30] – [FE33] sang [FE34] –[FE37]

Cho hiển thị 4 Led trái Chuyển 4 bit cao sang 4 bit thấp

Call 4 - X Cất AX

Call 4 - X

Kiểm tra BL = 40h

Chuyển dữ liệu vào ô nhớ

Call delay Ret

Lưu đồ chương trình con 4-x

Begin Xóa 4 bit cao Cất thanh ghi DS Cất thanh ghi BX Cất thanh ghi AX Nạp địa chỉ quản lý mã Trao mã phím vào ô nhớ Lấy lại BX Lấy lại DS Lấy dữ liệu và hiển thị

Lập cờ nhớ, quay AL sang trái 1 vòng

Kiểm tra cờ nhớ=0

Cất mã phím vào ô nhớ

Tăng nội dung ô nhớ l Ret (adsbygoogle = window.adsbygoogle || []).push({});

2). Chương trình hệ thống:

Chương trình chính (chương trình monitor):

CODE SEGMENT ASSUME CS:CODE

ORG 0000H ;KHOI TAO 8279H

MOV AX,0A000H ;

MOV DS,AX ;DIA CHI 8279 CHO DS MOV AX,8000H ;KHOI TAO NGAN XEP MOV SS,AX ;

MOV SP,0000H

MOV AL,10H ;DIEU KHIEN

MOV DI,0002H MOV [DI],AL

MOV AL,37H ;CHIA XUNG CLOCK CUA 8279

MOV [DI],AL

MOV AL,0C2H ;XOA FIFO MOV [DI],AL

MOV AL,90H ;LOI VAO PHAI

MOV [DI],AL

MOV AL,40H ;DOC FIFO

MOV [DI],AL ;KHỞI TẠO 8251 MOV DX,B0002H MOV AL,00H OUT DX,AL D0: MOV CX,02H LOOP D0 OUT DX,AL D1: MOV CX,02H LOOP D1 OUT DX,AL D2: MOV CX,02H LOOP D2 MOV AL,40H OUT DX,AL D3: MOV CX,02H LOOP D3 MOV AL,C9H OUT DX,AL D4: MOV CX,02H LOOP D4

;KHOI TAO DS TRO DEN VUNG DATA CUA RAM MOV AX,8000H

MOV AL,0EAH MOV [DI],AL INC DI MOV AL,00H MOV [DI],AL INC DI MOV [DI],AL ;CS MOI = 8000H INC DI MOV AL,00H MOV [DI],AL INC DI MOV AL,80H MOV [DI],AL

;NAP 00 VAO VUNG NHO FE30H DEN FE33H MOV AL,00 MOV CX,0004H MOV BX,0FE33H X1: MOV [BX],AL DEC BX LOOP X1 MOV DI,0FE40H MOV AL,0F0H

MOV [DI],AL ;XOA 4 LED DATA KHI KTAO

CALL CON4_8 ; GOI CTR CHUYEN MA TU 4 SANG 8 VA HIEN THI

X4: CALL KEY_16

MOV AH,AL ;CAT TAM MA PHIM SANG AH

AND AL,10H ;XOA 4 BIT THAP

JNZ X3 ;NHAY NEU LA PHIM CHUC NANG LON HON 0FH

CALL CONVERT ;LA PHIM NHAP DATA ;TANG BIEN DEM LED LEN 1

MOV DI,0FE40H MOV AL,[DI] ROL AL,1 OR AL,0F1H MOV [DI],AL

;CAT MA PHIM VUA AN TRONG AH MOV BX,0FE33H

MOV AL,[BX]

OR AL,AH ;OR VOI MA PHIM MOV [BX],AL (adsbygoogle = window.adsbygoogle || []).push({});

CALL CON4_8 ;GOI CTR CHUYEN MA VA HIEN THI JMP X4

X3: MOV AL,AH ;X3 VA X5 LA 1 CMP AL,17H

;CHUONG TRINH PHIM CHUC NANG KEY_UP MOV DI,0FE30H

MOV BH,[DI] ;LAY DIA 4 LED TRAI INC DI

MOV BL,[DI] MOV SI,0FE37H

MOV AL,[SI] ;LAY BYTE DATA

MOV [BX],AL ;CAT 1 BYTE VAO O NHO

INC BX ;TANG DIA CHI LEN 1

X9: MOV SI,0FE33H

MOV AL,[BX] ;LAY NOI DUNG CUA NO MOV [SI],AL ;GOI VAO AL

MOV [DI],BL ;CAP NHAT LAI DIA CHI DEC DI

MOV [DI],BH MOV AL,0F3H MOV DI,0FE40H MOV [DI],AL

CALL CON4_8 ;GOI CT CHUYEN MA VA HIEN THI ;RESET LAI BIEN DEM

MOV AL,0F0H MOV DI,0FE40H MOV [DI],AL

;XOA 2 OO NHO CHUA DATA 0032H VA 0033H MOV AL,00H

MOV BX,0FE32H MOV [BX],AL INC BX

MOV [BX],AL

JMP X4 ;NHAY VE CT CHINH GOI PHIM

;CHUONG TRINH PHIM CHUC NANG XUONG KEY_DOWN

X6: CMP AL,16H ;

JNZ X7 ;NHAY NEU KHONG PHAI LA KEY_DOWN

MOV DI,0FE30H MOV BH,[DI] INC DI MOV BL,[DI] DEC BX JMP X9

;CHUONG TRINH PHIM CHUC NANG S (LOAD DIA CHI) X7: CMP AL,15H

JNZ X8

MOV DI,0FE32H MOV BH, [DI] INC DI

JMP X9

;CHUONG TRINH PHIM CHUC NANG G

X8: CMP AL,10H ;SO SANH MA PHIM G

JNZ X11 ;NEU KHONG PHAI LA PHIM G

JMP X10 (adsbygoogle = window.adsbygoogle || []).push({});

;CHUONG TRINH PHIM CHUC NANG P

X11: CMP AL,12H ;SO SANH MA PHIM P

JNZ X13 ;NEU KHONG PHAI PHIM P

;CHUONG TRINH XU LY MA PHIM P

JMP X14 ;NHAY X13: JMP X4 ORG 0200H X10: ;========================================= ;CHUONG TRINH CON CHUYEN O NHO SANG O NHO TAM

ORG 0300H

CONVERT PROC NEAR PUSH CX

PUSH AX

MOV DI,0FE32H MOV AL,[DI]

AND AL,0FH ;XOA 4BIT CAO

MOV CL,04H

ROL AL,CL ;XOAY 4BIT THAP SANG 4 BIT CAO MOV AH,AL

INC DI ;DI = 0033H

MOV AL,[DI] MOV CL,04H ROL AL,CL

MOV [DI],AL ;4 BIT THU 2

DEC DI ;DI = 0032

AND AL,0FH ;SU LY DIGIT THU 2

OR AL,AH MOV [DI],AL

INC DI ;

MOV AL,[DI] ;

AND AL,0F0H ;XOA LSD MOV [DI],AL

POP AX ;LAY MA PHIM

POP CX RET

;========================================== ;CHUONG TRINH CON CHUYEN 4 O NGO THANH 8 O NHO

CON4_8 PROC NEAR MOV DI,0FE34H MOV SI,0FE30H MOV CX,0004H

CON_1: MOV AL,[SI]

MOV [DI],AL INC DI

INC SI LOOP CON_1 MOV DI,0FE40H

MOV AH,[DI] ;LAY BIEN DEM SO LED HIEN THI MOV SI,0FE34H ;TUONG DUONG VOI R0

MOV BX,0FE38H ;TUONG DUONG VOI R1 C_1: MOV AL,[SI] (adsbygoogle = window.adsbygoogle || []).push({});

INC SI PUSH AX MOV CL,04H

ROL AL,CL ;XU LY 4 BIT CAO LED 8 CALL CON4_X ;GOI CHTR CHUYEN MA

POP AX ;XU LY 4 BIT THAP LED 7

CALL CON4_X

CMP BL,40H ;KIEM TRA XEM HET DATA CHUA

JNZ C_1 ;QUAY LAI NEU CHUA HET

MOV [DI],AH CALL DISPLAY RET

CON4_8 ENDP

;==================================================

CON4_X PROC NEAR

AND AL,0FH PUSH DS PUSH BX PUSH AX

MOV AX,0F000H ;NAP DIA CHI QUAN LY MA MOV DS,AX

MOV BX,0FF00H POP AX

MOV BL,AL ;TRAO DIA CHI TUONG UNG MA MOV AL,[BX] ;LAY MA

POP BX POP DS MOV DL,AL

MOV [DI],AL ;CAT LAI MOV AL,DL ;LAY LAI MA

JC CO_1 ;NEU BANG 1 THI HT

MOV AL,00H ;NEU = 0 THI XOA

CO_1: MOV [BX],AL ;CAT MA VAO VUNG NHO HT

INC BX ;CHUAN BI BYTE KE

RET ;TRO VE

CON4_X ENDP

;=============================== ;CHUONG TRINH CON HIEN THI

DISPLAY PROC NEAR PUSH BX PUSH AX PUSH CX PUSH DI MOV DI,0000H MOV BX,0FE38H

MOV CX,2000H ;DIA CHI 8279 A0000H

DIS_1: MOV AL,[BX]

PUSH DS MOV DS,CX MOV [DI],AL POP DS INC BX CMP BL,40H JNZ DIS_1 POP DI POP CX POP AX POP BX ; RET DISPLAY ENDP ;====================================== KEY_16 PROC NEAR

KEY_61: CALL KEY_23

MOV AH,AL ;R2 THAY CHO AH MOV DI,0FE41H MOV AL,[DI] AND AL,AL JZ KEY_61 MOV AL,AH RET KEY_16 ENDP ;====================================== KEY_23 PROC NEAR

KEY_32: CALL KEY_47 (adsbygoogle = window.adsbygoogle || []).push({});

MOV DI,0FE41H INC AL

JZ M1

MOV AL,[DI] ;NEU CO PHIM AN AND AL,AL

JNZ KEY_32 DEC AL

KE_1: MOV [DI],AL

MOV AL,AH RET M1: MOV AH,0FFH JMP KE_1 KEY_23 ENDP ;====================================== KEY_47 PROC NEAR

PUSH DS MOV AX,0A000H MOV DS,AX MOV DI,0002H MOV AL,[DI] AND AL,0FH JZ M2 MOV DI,0000H MOV AL,[DI] MOV DI,0002H MOV CL,0C2H MOV [DI],CL CALL DELAY POP DS RET M2: MOV AL,0FFH POP DS RET KEY_47 ENDP ;============================== ;CHUONG TRINH CON DELAY

DELAY PROC NEAR PUSH CX

MOV CX,0FFFH

COUNT: LOOP COUNT

POP CX RET

DELAY ENDP

;============================== CODE ENDS

Phần 4

THI CÔNG

šl›

Được sự hướng dẫn của thầy Nguyễn Đình Phú, trong suốt thời gian thi

công tôi thực hiện được một số phần và trải qua các bước sau:

- Thiết kế và vẽ mạch in bằng phần mềm vẽ mạch Eagle. - Kiễm tra mạch in.

- Ráp và hàn linh kiện. - Kiễm tra mạch.

- Nạp trình điều khiển vào Kit.

Qua quá trình thi công mạch tôi cảm nhận được sự lý thú và từ đó cũng rút ra được nhiều kinh nghiệm cho sau này.

Một phần của tài liệu Thiết kế và thi công Kit vi xử lý 8086 (Trang 69 - 85)