103 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm.. • Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.. 1.2 Vẽ lưu đồ giải thuật và
Trang 1Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3) Giáo trình thực hành vi xử lý 103 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#0F9H ;HIEN THI SO 1
Trang 2Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1)
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM
;***************************************************
;NAME: DISP7SEGMUL2EXT
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI)
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD)
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
Trang 3DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2EXT ;GOI CTC QUET HIEN THI
Trang 4;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#80H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#0F8H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#02H ;CHO PHEP LED 5 SANG
MOV P0,#82H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#03H ;CHO PHEP LED 4 SANG
MOV P0,#92H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#04H ;CHO PHEP LED 3 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#05H ;CHO PHEP LED 2 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#06H ;CHO PHEP LED 1 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07H ;CHO PHEP LED 0 SANG
MOV P0,#0F9H ;HIEN THI SO 1
Trang 5Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2)
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 7
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00000000 -> 99999999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 3 TO 8, CA, ACTIVE = 0
LCALL BCD8TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R4 ;TANG GIA TRI (CHUC - DON VI)
ADD A,#1
DA A
MOV R4,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI)
MOV A,R5 ;TANG GIA TRI (NGAN - TRAM)
ADD A,#1
DA A
MOV R5,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM)
MOV A,R6 ;TANG GIA TRI (TR NGAN - CH NGAN)
ADD A,#1
DA A
MOV R6,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (TR NGAN - CH NGAN)
MOV A,R7 ;TANG GIA TRI (CH TRIEU - TRIEU)
Trang 6;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN)
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM
;***************************************************
;NAME: DISP7SEGMUL8EXT
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU)
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN)
; 63H,62H = MA 7 DOAN (NGAN - TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI)
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD)
;***************************************************
DISP7SEGMUL8EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#07H ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
Trang 7;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD6TO7SEG
;INPUT: R7 = SO BCD NEN (CH TRIEU - TRIEU)
; R6 = SO BCD NEN (TR NGAN - CH NGAN)
; R5 = SO BCD NEN (NGAN - TRAM)
; R4 = SO BCD NEN (CHUC - DON VI)
;OUTPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU)
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN)
; 63H,62H = MA 7 DOAN (NGAN - TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI)
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
Trang 8ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 66H,A ;CAT BCD HANG TRIEU VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 67H,A ;CAT BCD HANG CHUC TRIEU VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL
POP DPH
RET
;*************************************************** CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
Trang 9Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ
LCALL BCD6TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R5 ;TANG GIAY
ADD A,#1
DA A
MOV R5,A
CJNE A,#60H,MP1 ;KIEM TRA GIAY > 59
MOV R5,#0 ;XOA GIAY
MOV A,R6 ;TANG PHUT
ADD A,#1
DA A
MOV R6,A
CJNE A,#60H,MP1 ;KIEM TRA PHUT > 59
MOV R6,#0 ;XOA PHUT
MOV A,R7 ;TANG GIO
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD6TO7SEG
;INPUT: R7 = SO BCD NEN (TR NGAN - CH NGAN)
; R6 = SO BCD NEN (NGAN - TRAM)
; R5 = SO BCD NEN (CHUC - DON VI)
;OUTPUT: 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN)
; 63H,62H = MA 7 DOAN (NGAN - TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI)
;***************************************************
BCD6TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
Trang 10PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL
Trang 11;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM
;***************************************************
;NAME: DISP7SEGMUL6
;INPUT: 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN)
; 63H,62H = MA 7 DOAN (NGAN - TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI)
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD)
;***************************************************
DISP7SEGMUL6:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0DFH ;MA QUET
MOV R0,#65H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
Trang 12;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN)
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD)
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
Trang 13MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
Trang 14Bài 4: Chương trình điều khiển hiển thị lần lượt các chuỗi ký tự HA-NOI“, DA-LAT-“, SAIGON-“ trên
“-tám LED Mỗi chuỗi hiển thị cách nhau 1 giây
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI-","-DA-LAT-","-SAIGON-" TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
DJNZ R0,STATICDISP ;GIAM BIEN LAP
MOV A,DPL ;DICH DEN DIA CHI CUA CHUOI KE TIEP
ADD A,#8 ;ADDNEXT = ADDPREV + 8 (DO DAI CHUOI = 8)
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD)
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
Trang 15MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH ;MA CHUOI "-HA-NOI-"
DB 0BFH,0A1H,88H,0BFH,0C7H,88H,0F8H,0BFH ;MA CHUOI "-DA-LAT-"
DB 0BFH,92H,88H,0F9H,90H,0C0H,0C8H,0BFH ;MA CHUOI "-SAIGON-" END
Trang 16Bài 5: Chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-HA-NOI-SAI GON-“ trên tám LED từ phải sang trái.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI-SAIGON-" DICH CHUYEN TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
DJNZ R0,STATICDISP ;GIAM BIEN LAP
INC DPTR ;DICH CHUOI DI MOT MA KY TU
MOV A,DPL
CJNE A,#LOW(CODEDISP+16),MP1 ;KIEM TRA HIEN THI XONG CHUOI
SJMP MAIN ;SO KY TU CUA CHUOI = 24 MA KY TU
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN)
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD)
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
Trang 17LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;MA CHUOI XOA MAN HINH
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH ;MA CHUOI "-HA-NOI-"
DB 92H,88H,0F9H,0BFH,90H,0C0H,0C8H,0BFH ;MA CHUOI "SAI-GON-"
END
Trang 18Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2)
Cách 1:
;***************************************************
;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV P2,#07H ;XUAT MA HIEN THI RA HANG
MOV P1,#01H ;XUAT MA QUET RA COT 1
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
MOV P2,#0DBH ;XUAT MA HIEN THI RA HANG
MOV P1,#02H ;XUAT MA QUET RA COT 2
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
MOV P2,#0DDH ;XUAT MA HIEN THI RA HANG
MOV P1,#04H ;XUAT MA QUET RA COT 3
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
MOV P2,#0DBH ;XUAT MA HIEN THI RA HANG
MOV P1,#08H ;XUAT MA QUET RA COT 4
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
MOV P2,#07H ;XUAT MA HIEN THI RA HANG
MOV P1,#10H ;XUAT MA QUET RA COT 5
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
MOV P2,#0FFH ;XUAT MA HIEN THI RA HANG
MOV P1,#20H ;XUAT MA QUET RA COT 6
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
MOV P2,#0FFH ;XUAT MA HIEN THI RA HANG
MOV P1,#40H ;XUAT MA QUET RA COT 7
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
Trang 19
MOV P2,#0FFH ;XUAT MA HIEN THI RA HANG
MOV P1,#80H ;XUAT MA QUET RA COT 8
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
$MOD51
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0)
Trang 20MOV R0,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A,R0
MOVC A,@A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
MOV P2,A ;XUAT MA HIEN THI RA HANG
MOV P1,R1 ;XUAT MA QUET RA COT
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
INC R0 ;LAY DU LIEU KE TIEP
MOV A,R1 ;DICH MA QUET - MA QUET CHO COT KE TIEP
RL A
MOV R1,A
CJNE R0,#8H,SCAN ;KIEM TRA QUET CAC COT (MA TRAN GOM 8 COT)
POP 01H ;PHUC HOI GIA TRI CHO CAC THANH GHI
(COL-Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2)
;CHUONG TRINH HIEN THI KY TU A CHOP TAT TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
Trang 21MOV R0,#50 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH LED MP1:
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0)
MOV P1,#00H ;CHONG LEM
INC R0 ;LAY DU LIEU KE TIEP
MOV A,R1 ;DICH MA QUET - MA QUET CHO COT KE TIEP
Trang 22được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
;CHUONG TRINH HIEN THI CHUOI KY TU A,B,C,a,b,c LAN LUOT TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
MOV A,DPL ;DICH DEN DIA CHI CUA KY TU KE TIEP
ADD A,#8 ;ADDNEXT = ADDPREV + 8 (DO DAI KY TU = 8)
MOV DPL,A
CJNE A,#LOW(CODEDISP+48),MP1 ;KIEM TRA HIEN THI XONG TAT CA CAC CHUOI LJMP MAIN
;***************************************************
Trang 23;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0)
MOV R0,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A,R0
MOVC A,@A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
MOV P2,A ;XUAT MA HIEN THI RA HANG
MOV P1,R1 ;XUAT MA QUET RA COT
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
INC R0 ;LAY DU LIEU KE TIEP
MOV A,R1 ;DICH MA QUET - MA QUET CHO COT KE TIEP
Trang 24phải sang trái (COL-RED được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
;CHUONG TRINH HIEN THI CHUOI KY TU WELLCOME LAN LUOT TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
CJNE A,#LOW(CODEDISP+48),MP1 ;KIEM TRA HIEN THI XONG CHUOI
SJMP MAIN ;SO KY TU CUA CHUOI = 24 MA KY TU
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0)
MOV R0,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A,R0
Trang 25MOVC A,@A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
MOV P2,A ;XUAT MA HIEN THI RA HANG
MOV P1,R1 ;XUAT MA QUET RA COT
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
INC R0 ;LAY DU LIEU KE TIEP
MOV A,R1 ;DICH MA QUET - MA QUET CHO COT KE TIEP
Trang 26D HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM
Bài 1: Chương trình điều khiển bàn phím và hiển thị mã của phím nhấn trên 8 LED dưới dạng số BIN (LED sáng = mức 1, LED tắt = mức 0), không phím nào được nhấn thì mã phím là FFH (KEYPAD được nối với Port0, LED được nối với Port1)
;CHUONG TRINH DIEU KHIEN BAN PHIM MA TRAN 4 X 4
LCALL SCANKEYPAD ;QUET KEYPAD
JC MP1 ;KIEM TRA CO NHAN PHIM (C = 1)
MOV A,#0FFH ;KHONG NHAN PHIM A = FFH
MP1: ;CO NHAN PHIM A = MA PHIM
MOV P1,A ;XUAT MA PHIM RA LED HIEN THI DANG SO BIN
LJMP MAIN ;QUAY LAI KIEM TRA KEYPAD TIEP
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI NOPRESSED:
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
Trang 27MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
;CHUONG TRINH DIEU KHIEN LED HIEN THI CAC KIEU KHAC NHAU KHI
;TA NHAN CAC PHIM TREN BAN PHIM MA TRAN 4 X 4
MOV P1,#00H ;LED TAT
LCALL SCANKEYPAD ;QUET KEYPAD
CJNE A,#0CH,NEXT1 ;KHONG PHAI PHIM F1 -> KIEM TIEP
LCALL CHOPTAT ;PHIM F1 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
Trang 28NEXT1:
CJNE A,#08H,NEXT2 ;KHONG PHAI PHIM F2 -> KIEM TIEP
LCALL SANGDAN ;PHIM F2 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT2:
CJNE A,#04H,NEXT3 ;KHONG PHAI PHIM F3 -> KIEM TIEP
LCALL DEMLEN ;PHIM F3 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT3:
CJNE A,#00H,NEXT4 ;KHONG PHAI PHIM F4 -> KIEM TIEP
LCALL SANGDON ;PHIM F4 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI NOPRESSED:
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
Trang 29MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
MOV P1,#0FFH ;LED SANG
Trang 30CJNE A,#00H,DL ;KIEM TRA DEM LEN HOAN TAT
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC SD1 ;CHUA SANG HET THI LAM TIEP
SD2:
CLR C ;C=1
MOV P1,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, TAT DAN
JC SD2 ;CHUA TAT HET THI LAM TIEP
POP ACC
RET
SANGDON:
PUSH ACC
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO MOV A,R1
Trang 31DELAY500MS: ;CTC TAO THOI GIAN TRE 500MS
;INPUT: PORT 0 (ROW1 ROW4 -> P0.0 P0.3 & COL1 COL4 -> P0.4 P0.7)
;OUTPUT: C = 1: CO PHIM NHAN - ACC = CHUA MA PHIM (00H -> FFH)
; C = 0: KHONG CO PHIM NHAN
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI NOPRESSED:
Trang 32MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A