I. Cấu trúc phần cứng của 8251: 1.Sơ đồ khối:
40 hà 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
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
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
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
;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]
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
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.