Vi điều khiển giao tiếp với phím nhấn- bàn phím
Trang 1VI ĐIỀU KHIỂN GIAO TIẾP VỚI PHÍM NHẤN – BÀN PHÍM
PHÍM NHẤN, NÚT NHẤN, BÀN PHÍM DÙNG ĐỂ GIAO TIẾP GIỮA CON NGƯỜI VÀ THIẾT
BỊ ĐIỀU KHIỂN
VÍ DỤ: BÀN PHÍM MÁY TÍNH, BÀN PHÍM ĐIỆN THOẠI, BÀN PHÍM MÁY BÁN XĂNG DẦU DÙNG NHẬP SỐ TIỀN CẦN BÁN, SỐ LÍT CẦN BÁN, … MÁY GIẶT TỰ ĐỘNG CĨ BÀN PHÍM ĐỂ CHỈNH CHẾ ĐỘ GIẶT, CHỌN MỰC NƯỚC, …
CĨ 2 DẠNG GIAO TIẾP:
HỆ THỐNG ÍT PHÍM: VÍ DỤ ĐK ĐỘNG CƠ BẰNG 3 PHÍM: START, STOP, INV, ĐỒNG HỒ
CĨ 3 ĐẾN 4 PHÍM ĐỂ CHỈNH THỜI GIAN
HỆ THỐNG NHIỀU PHÍM: HỆ THỐNG BÁN XĂNG DẦU, …, MÁY TÍNH, ĐIỆN THOẠI,
MẠCH ĐIỆN GIAO TIẾP – HỆ THỐNG ÍT PHÍM
HOẠT ĐỘNG CỦA PHÍM NHẤN:
SỬ DỤNG PHÍM THƯỜNG HỞ, NÊN CÁC NGÕ VÀO THƯỜNG Ở MỨC 1
KHI NHẤN THÌ KÍN MẠCH HAY NGẮN MẠCH NỐI MASS LÀM NGÕ VÀO XUỐNG MỨC 0 VÀ BUÔNG TAY – KHÔNG NHẤN NỮA THÌ TRỞ LẠI MỨC 1
CHƯƠNG TRÌNH KIỂM TRA XEM CHÚNG TA CÓ NHẤN PHÍM HAY KHÔNG BẰNG CÁCH KIỂM TRA MỨC LOGIC: NẾU MỨC LOGIC LÀ 1 THÌ KHÔNG NHẤN, LÀ 0 THÌ CÓ NHẤN PHÍM THÌ TIẾN HÀNH XỬ LÝ THEO YÊU CẦU
Trang 2BÀI SỐ 5-1: CHƯƠNG TRÌNH ĐK ĐỘNG CƠ ĐC CHẠY THUẬN – NGỪNG CÓ 2 PHÍM
NHẤN: START, STOP
NẾU ĐCƠ NGỪNG THÌ NHẤN START – ĐCƠ SẼ QUAY THUẬN
NẾU ĐCƠ ĐANG QUAY MÀ NHẤN STOP THÌ ĐCƠ NGỪNG
DÙNG 1 NGÕ RA ĐIỀU KHIỂN ĐC:
;CHUONG TRINH DIEU KHIEN DONG CO QUAY THUAN NGHICH
START BIT P3.0 ;PHIM START NOI VOI P3.0 STOP BIT P3.1
DC1 BIT P1.0 ;XANH – DK DONG CO
ORG 0H LB: CLR DC1 ;NGUNG DONG CO
JB START,$ ;CHO NHAN PHIM START SETB DC1 ;DCO CHAY THUAN - XANH SANG
JB STOP,$ ;CHO NHAN STOP JMP LB
$INCLUDE(TV_DELAY.ASM)
END
BÀI SỐ 5-2: CHƯƠNG TRÌNH ĐK ĐỘNG CƠ DC QUAY THUẬN NGHỊCH CÓ 3 PHÍM
NHẤN: START, STOP, INV
NẾU ĐCƠ NGỪNG THÌ NHẤN START – ĐCƠ SẼ QUAY THUẬN
NẾU ĐCƠ ĐANG QUAY MÀ NHẤN STOP THÌ ĐCƠ NGỪNG
NẾU ĐCƠ ĐANG QUAY MÀ NHẤN INV THÌ ĐCƠ ĐẢO CHIỀU
DÙNG 2 NGÕ RA ĐIỀU KHIỂN ĐÈN XANH ĐỎ:
2 ĐÈN TẮT – ĐCƠ NGỪNG
XANH SÁNG THÌ ĐCƠ QUAY THUẬN
ĐỎ SÁNG THÌ ĐCƠ QUAY NGHỊCH
DC1 DC2 TRẠNG THÁI
0 0 ĐC NGỪNG - 2 ĐÈN TẮT CLR DC1, CLR DC2
Trang 31 0 ĐC QUAY THUẬN – XANH SÁNG, ĐỎ TẮT SETB DC1
ĐẢO CHIỀU ĐỘNG CƠ
1 Lệnh nhảy khi bit = 1 :
Cú pháp : JB BIT, REL
Chức năng: nếu nội dung của bit có địa chỉ bit [được xác định bởi byte thứ 2] bằng 1 thì vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ rel
2 Lệnh nhảy khi bit = 0 :
Cú pháp : JNB BIT, REL
Chức năng: nếu nội dung của bit có địa chỉ bit [được xác định bởi byte thứ 2] bằng 0 thì vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ bằng rel
Trang 4CHÚ Ý: KHI BẮT ĐẦU THÌ ĐỘNG CƠ NGỪNG – CHỈ CẦN KIỂM TRA XEM CÓ NHẤN START KHÔNG? NẾU KHÔNG NHẤN THÌ CHỜ – KHÔNG CẦN KIỂM TRA STOP VÀ INV VÌ CHÚNG KHÔNG CÓ TÁC DỤNG KHI ĐỘNG CƠ ĐÃ QUAY THÌ KIỂM TRA LẦN LƯỢT CÁC PHÍM STOP VÀ INV
CHUONG TRINH DIEU KHIEN DONG CO QUAY THUAN NGHICH
Trang 5STOP BIT P3.1 INV BIT P3.2 DC1 BIT P1.0 ;XANH – DK DONG CO DC2 BIT P1.2 ;DO – DK DONG CO ORG 0H
LB: CLR DC1 ;NGUNG DONG CO
CLR DC2
JB START,$ ;CHO NHAN PHIM START SETB DC1 ;DCO CHAY THUAN - XANH SANG
LB2: JNB STOP,LB ;NEU NHAN THI NHAY VE NGUNG 2 DC
JB INV,LB2 ;NHAY VE LB2 KHI KHONG NHAN INV CPL DC1 ;NGHICH DAO COMPLEMENT
CPL DC2 JMP LB2
$INCLUDE(TV_DELAY.ASM)
END
KHUYẾT ĐIỂM LÀ NHẤN PHÍM BỊ DỘI PHÍM VÀ TỐC ĐỘ XỬ LÝ
NGUYÊN NHÂN THỨ 1 – DỘI PHÍM: DO PHÍM LÀM BẰNG CƠ CẤU CƠ KHÍ NÊN KHI NHẤN THÌ LÒ XO ĐẨY PHÍM NGƯỢC LẠI LỰC TÁC ĐỘNG LÀM PHÍM TIẾP XÚC NHIỀU LẦN TRƯỚC KHI ỔN ĐỊNH VÀ
NGUYÊN NHÂN THỨ 2: DO TỐC ĐỘ CỦA VXL HOẶC VĐK NHANH NÊN XEM NHƯ TA NHẤN NHIỀU LẦN
Trang 6PHẢI CHỐNG DỘI PHÍM:
CHỐNG DỘI PHÍM: CÓ 2 CÁCH:
1 KIỂM TRA TRẠNG THÁI CỦA PHÍM NẾU CHUYỂN TRẠNG THÁI VÀ TỒN TẠI
ÍT NHẤT KHOẢNG 20 MS THÌ XEM NHƯ CÓ PHÍM NHẤN
2 SAU KHI PHÁT HIỆN PHÍM NHẤN, THÌ KIỂM TRA BUÔNG PHÍM HOẶC CÓ THỂ DELAY 20MS RỒI KIỂM TRA VÀ CHỜ CHO ĐẾN KHI BUÔNG PHÍM
LƯU ĐỒ CHỐNG DỘI
Trang 7Đ
S PHÍM ?
MOV P1,#00 LB: CLR DC1 ;NGUNG 2 DONG CO
CLR DC2
JB START,$ ;CHO NHAN PHIM START SETB DC1 ;DCO CHAY THUAN - XANH SANG LB2: JNB STOP,LB
LB1: CALL PHIM_INV ;GOI CHTR KIEM TRA VA CHONG DOI
JMP LB2
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFFFFFF PHIM_INV:JB INV,LBD1 ;KTRA LAN 1, NHAY NEU KHONG AN
CALL DELAY10MS
JB INV,LBD1 ;KTRA LAN 2, NHAY NEU KHONG AN CALL DELAY10MS
Trang 8JB INV,LBD1 ;KTRA LAN 3, NHAY NEU KHONG AN CPL DC1 ;DAO CHIEU DONG CO
CPL DC2 JNB INV,$ ;CHO NHA PHIM
$INCLUDE(TV_DELAY.ASM)
END CHỐNG DỘI CÁCH 2 LÀ NHẤN PHÍM THỰC THI XONG CHỜ BUÔNG PHÍM
;CHUONG TRINH ĐIỀU KHIỂN DCO TRONG THỰC TẾ CÓ DELAY CHỜ ĐỘNG CƠ DỪNG
START BIT P3.4 STOP BIT P3.5 INV BIT P3.6 DC1 BIT P1.0 ;XANH DC2 BIT P1.2 ;DO DCT1 BIT 00H ;BIT TAM DCT2 BIT 01H
ORG 0000H LB: SETB DCT1 ;NGUNG 2 DONG CO
SETB DCT2 CALL OUTDCO
JB START,$ ;CHO NHAN PHIM START CLR DCT1 ;DCO CHAY THUAN - XANH SANG CALL OUTDCO
LB2: JB STOP,LB1
JMP LB ;NEU NHAN THI NHAY VE NGUNG 2 DC LB1: JB INV,LB2
CALL DELAY10MS
Trang 9JNB INV,$
SETB DC1 SETB DC2 CALL DELAY1S CALL DELAY1S CALL DELAY1S CPL DCT1 CPL DCT2 CALL OUTDCO JMP LB2
OUTDCO: MOV C,DCT1
MOV DC1,C MOV C,DCT2 MOV DC2,C RET
$INCLUDE(TV_DELAY.ASM)
END
HỆ THỐNG NHIỀU PHÍM - MA TRẬN PHÍM
VỚI CÁCH 1 THÌ MỖI PHÍM SỬ DỤNG 1 NGÕ VÀO ĐỂ KẾT NỐI
16 PHÍM SẼ DÙNG 16 NGÕ VÀO – TỐN NHIỀU ĐƯỜNG TÍN HIỆU
VỚI CÁCH KẾT NỐI DẠNG MA TRẬN THÌ 16 PHÍM CHỈ DÙNG 8 TÍN HIỆU: 4 CHO HÀNG VÀ 4 CHO CỘT – GỌI LÀ MA TRẬN 4×4 = 16 PHÍM
VÍ DỤ MA TRẬN 8×8 = 64 PHÍM
ƯU ĐIỂM TIẾT KIỆM ĐƯỜNG ĐIỀU KHIỂN
KHUYẾT ĐIỂM: CHƯƠNG TRÌNH PHỨC TẠP
Trang 10H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
H1=P3.5 H2=P3.6 H3=P3.7
TRONG MA TRẬN 4×4 THÌ CÓ 4 HÀNG VÀ 4 CỘT
HÀNG ĐƯỢC CHỌN LÀ TÍN HIỆU VÀO – CỘT ĐƯỢC CHỌN LÀ TÍN HIỆU RA
H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
H1=P3.5 H2=P3.6 H3=P3.7
HÀNG THÌ TREO ĐIỆN TRỞ LÊN NGUỒN VCC – NÊN MỨC LOGIC LÀ 1
CÁC PHÍM NHẤN THƯỜNG HỞ NÊN HÀNG LUÔN Ở MỨC 1 H3H2H1H0 =1111
CỘT LÀ TÍN HIỆU RA CHÚNG TA ĐIỀU KHIỂN CHO 1 CỘT Ở MỨC 0, 3 CỘT CÒN LẠI
Ở MỨC 1
VÍ DỤ CỘT C0 = 0, C1C2C3=111
Trang 11H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
H1=P3.5 H2=P3.6 H3=P3.7
NẾU NHẤN PHÍM SỐ ‘0’ THÌ NỐI HÀNG H0=1(5V) VỚI C0=0 (0V): KHÁC ÁP – NGẮN MẠCH LÀM CHO H0 = 0 – DO CÓ ĐIỆN TRỞ NÊN KHÔNG SAO, VẬY:
NHẤN PHÍM SỐ ‘0’ THÌ LÀM H0=0 HAY H3H2H1H0 = 1110
NHẤN PHÍM SỐ ‘1’ THÌ LÀM H1=0 HAY H3H2H1H0 = 1101
NHẤN PHÍM SỐ ‘2’ THÌ LÀM H2=0 HAY H3H2H1H0 = 1011
NHẤN PHÍM SỐ ‘3’ THÌ LÀM H3=0 HAY H3H2H1H0 = 0111
NẾU NHẤN PHÍM SỐ ‘4’ THÌ NỐI HÀNG H0=1(5V) VỚI C1=1 (5V): CÙNG ÁP 5V: KHÔNG CÓ GÌ THAY ĐỔI
CỘT C0=0 CHỈ PHÁT HIỆN 4 PHÍM ‘0’, ‘1’, ‘2’, ‘3’
NẾU KHÔNG NHẤN 4 PHÍM ‘0’, ‘1’, ‘2’, ‘3’ MÀ NHẤN CÁC PHÍM KHÁC THÌ TA PHẢI LÀM C1 = 0, C0C2C3=111
H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
0
H1=P3.5 H2=P3.6 H3=P3.7
NHẤN PHÍM SỐ ‘4’ THÌ LÀM H0=0 HAY H3H2H1H0 = 1110
NHẤN PHÍM SỐ ‘5’ THÌ LÀM H1=0 HAY H3H2H1H0 = 1101
NHẤN PHÍM SỐ ‘6’ THÌ LÀM H2=0 HAY H3H2H1H0 = 1011
NHẤN PHÍM SỐ ‘7’ THÌ LÀM H3=0 HAY H3H2H1H0 = 0111
LÀM C2 = 0, C0C1C3=111
Trang 12H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
1
H1=P3.5 H2=P3.6 H3=P3.7
NHẤN PHÍM SỐ ‘8’ THÌ LÀM H0=0 HAY H3H2H1H0 = 1110
NHẤN PHÍM SỐ ‘9’ THÌ LÀM H1=0 HAY H3H2H1H0 = 1101
NHẤN PHÍM SỐ ‘A’ THÌ LÀM H2=0 HAY H3H2H1H0 = 1011
NHẤN PHÍM SỐ ‘B’ THÌ LÀM H3=0 HAY H3H2H1H0 = 0111
LÀM C3 = 0, C0C1C2=111
H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
1
H1=P3.5 H2=P3.6 H3=P3.7
NHẤN PHÍM SỐ ‘C’ THÌ LÀM H0=0 HAY H3H2H1H0 = 1110
NHẤN PHÍM SỐ ‘D’ THÌ LÀM H1=0 HAY H3H2H1H0 = 1101
NHẤN PHÍM SỐ ‘E’ THÌ LÀM H2=0 HAY H3H2H1H0 = 1011
NHẤN PHÍM SỐ ‘F’ THÌ LÀM H3=0 HAY H3H2H1H0 = 0111
CÂU HỎI LÀM SAO ĐỂ PHÂN BIỆT CÁC PHÍM ?
CÂU TRẢ LỜI LÀ MỖI PHÍM CÓ MỘT MÃ SỐ HAY MÃ PHÍM (MP) KHÁC NHAU VÀ CÓ 1 TÊN CÁC CHƯƠNG TRÌNH DÙNG MÃ PHÍM ĐỂ ĐIỀU KHIỂN, CÒN TÊN TRÊN PHÍM LÀ PHỤC VỤ CHO CON NGƯỜI.
CHÚNG TA XÂY DỰNG: PHÍM 0 CÓ MÃ LÀ 00H, PHÍM 1 CÓ MÃ LÀ 01, TƯƠNG TỰ CHO CÁC PHÍM CÒN LẠI
CÓ THỂ TÊN PHÍM VÀ MÃ KHÔNG TRÙNG NHAU
Trang 13VẬY KHI QUÉT PHÍM THÌ PHẢI TẠO RA MÃ PHÍM NHẤN
H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
V CC =1
H1=P3.5 H2=P3.6 H3=P3.7
QUÉT PHÍM XUẤT MỨC 0 LẦN LƯỢT RA CÁC CỘT BẮT ĐẦU TỪ CỘT C0, SAU ĐÓ KIỂM TRA CÁC HÀNG H3H2H1H0=1111
NẾU H3H2H1H0=1111(ĐÚNG) THÌ KHÔNG NHẤN PHÍM – HOẶC NHẤN PHÍM KHÁC, PHẢI QUÉT CỘT TIẾP THEO CHO ĐẾN KHI HẾT TẤT CẢ CÁC CỘT
NẾU H3H2H1H0 ≠ 1111(SAI) THÌ CÓ NHẤN PHÍM – PHẢI XEM HÀNG NÀO BẰNG
0
Trang 14‘0’, ‘1’, ‘2’, ‘3’
MP:=00 C3C2C1 C0 =111 0
TRƯỚC KHI THỰC HIỆN
SAU KHI THỰC HIỆN
Trang 15NẾU NHẤN PHÍM SỐ 7 THÌ THỐT VỚI MP = 07H
LƯU ĐỒ GỌN HƠN
Trang 16KEYPAD
DEM:=4 MP:=0 C3C2C1C0 = 111 0
H3H2H1H0 = 1111 Đ
MP:=MP+4 XOAY TRÁI C3C2C1C0 DEM:= DEM -1
Đ S
BÀI SỐ 6-1: CTR QUÉT PHÍM MA TRẬN VÀ HIỂN THỊ TRÊN 1 LED 7 ĐOẠN
H0=P3.4
C3=P3.3 C2=P3.2 C1=P3.1 C0=P3.0
1 2 3
5 6 7
V CC =1
H1=P3.5 H2=P3.6 H3=P3.7
;CHUONG TRINH CON QUET MA TRAN PHIM 4×4
;PORT 3 NOI VOI MA TRAN 4x4
DEM EQU 40H ;SO LAN QUET COT
Trang 17MP EQU 41H ;MAPHIM C3C0 EQU 42H ;C3C2C1C0
KEYPRESS16: MOV MP,#00
MOV DEM,#4 MOV C3C0,#11111110B ;C0=0, H3H2H1H0=1111
KEYP2: MOV P3,C3C0 ;P3.0= 0=C0 (OUT)
MOV A,P3 ;P3= H3H2H1H0 C3C2C1C0 (IN) ANL A,#11110000B ;(A)= H3H2H1H0 -0000
CJNE A,#0000 1111 B,KEYP1 ;NHAY NEU CO NHAN PHIM
ADD A,#4 MOV MP,A
RL A MOV C3C0,A DJNZ DEM,KEYP2 MOV MP,#0FFH ;THOAT KHONG NHAN PHIM RET
RET
BÀI SỐ 6-2: CTR TEST QUÉT PHÍM MA TRẬN VÀ HIỂN THỊ TRÊN 1 LED 7 ĐOẠN
CHƯƠNG TRÌNH TEST QUÉT MA TRẬN PHÍM XEM ĐÚNG HAY SAI BẰNG CÁCH GỌI CHƯƠNG TRÌNH QUÉT PHÍM VÀ GIẢI MÃ HIỂN THỊ MÃ PHÍM TRÊN 1 LED
7 ĐOẠN
ORG 0H MOV DPTR,#CODE7SEG
Trang 18MAIN1: CALL KEYPRESS16
MOV A,MP CJNE A,#0FFH,MAIN2 JMP MAIN1
MOVC A,@A+DPTR MOV P0,A
JMP MAIN1
CODE7SEG: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH
BÀI SỐ 6-3: CTR CON QUÉT PHÍM MA TRẬN 8×8
NẾU LÀ MA TRẬN 8×8 THÌ LƯU ĐỒ THAY ĐỔI CÁI GÌ?
S
KEYPAD
DEM:=8 MP:=0 C7÷C0 = 1111111 0
H7÷H0 = 11111111 Đ
MP:=MP+8 XOAY TRÁI C7÷C0 DEM:= DEM -1
Đ S
;CHUONG TRINH CON QUET MA TRAN PHIM 8×8
Trang 19DEM EQU 40H
MP EQU 41H C7C0 EQU 42H ;C7=>C0
KEYPRESS64: MOV MP,#00
MOV DEM,#8 MOV C7C0,# 11111110B ;C0=0
KEYP3: INC MP
KEYP1: RRC A
JC KEYP3 RET
$INCLUDE(TV_DELAY.ASM)
END
BÀI SỐ 6-4: CTR CON QUÉT PHÍM MA TRẬN 5×4
NẾU 20 PHÍM MA TRẬN 5×4 THÌ LƯU ĐỒ THAY ĐỔI CÁI GÌ? 5 HÀNG + 4 CỘT = 9 ĐƯỜNG TÍN HIỆU NÊN KHÔNG DÙNG ĐƯỢC 1 PORT MÀ PHẢI DÙNG 2 PORT
Trang 20KEYPAD
DEM:=4 (SỐ CỘT)
MP:=0 C3C2C1C0 = 111 0
H4-H0 = 11111 T
NO PRESS
PRESSED
MP:=MP+ 5(SỐ HÀNG) XOAY TRÁI C3C2C1C0 DEM:= DEM -1
T F
;CHUONG TRINH CON QUET MA TRAN PHIM 5×4
;HANG LA P3, COT LA P1 (5 HÀNG + 4 CỘT = 9)
DEM EQU 40H
MP EQU 41H C3C0 EQU 42H ;C3=>C0
KEYPRESS16: MOV MP,#00
MOV DEM,#4 MOV C3C0,# 1110B ;C0=0
KEYP2: MOV P1,C3C0 ;P1=xxxx C3C2C1C0
MOV A,P3 ;(A)= XXX H4 H3H2H1H0 ANL A,#00011111B ;XOA CAC BIT DU
CJNE A,#00011111B,KEYP1 ;NHAY NEU CO NHAN
RL A
Trang 21MOV C3C0,A MOV A,MP ADD A,#5 MOV MP,A DJNZ DEM,KEYP2 MOV MP,#0FFH ;THOAT KHONG NHAN PHIM
BÀI SỐ 6-5: CTR CON QUÉT PHÍM MA TRẬN 4×4 BỊ DỘI PHÍM
;CHUONG TRINH CON QUET MA TRAN PHIM 4×4 BỊ DỘI
; CHTR QUET PHIM HIEN THI TREN 8 LED DE THAY HIEN TUONG DOI PHIM
ORG 0H MOV DPTR,#CODE7SEG CALL XOAVNHTHI
MAIN1: CALL KEYPRESS16
MOV A,MP CJNE A,#0FFH,MAIN2 ;SS VOI FFH, KHAC FFH THI CO NP CALL HIENTHI ;NEU KNP THI HIEN THI
JMP MAIN1 ;QUAY LAI LAM TIEP
MAIN2: CALL DICHDATA
MOVC A,@A+DPTR MOV 37H,A ;(37H) SE LUU SO MOI NHAT JMP MAIN1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Trang 22;CT CON DICH CHUYEN VUNG NHO HIEN THI TU 37H DEN 30H SANG TRAI
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DICHDATA:
MOV 30H,31H MOV 31H,32H MOV 32H,33H MOV 33H,34H MOV 34H,35H MOV 35H,36H MOV 36H,37H RET
Trang 23CALL DELAY1MS MOV P2,#0FFH
MOV P0,35H MOV P2,#11111011B CALL DELAY1MS MOV P2,#0FFH
MOV P0,34H MOV P2,#11110111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,33H MOV P2,#11101111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,32H MOV P2,#11011111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,31H MOV P2,#10111111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,30H MOV P2,#01111111B CALL DELAY1MS MOV P2,#0FFH RET
$INCLUDE(TV_DELAY.ASM)
Trang 24$INCLUDE(TV_KEY16.ASM)
CODE7SEG: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH END
BÀI SỐ 6-6: CTR CON QUÉT PHÍM MA TRẬN 4×4 CHỐNG DỘI BẰNG DELAY
;CHUONG TRINH CON QUET MA TRAN PHIM 4×4 BỊ DỘI
; CHTR QUET PHIM HIEN THI TREN 8 LED DE THAY HIEN TUONG DOI PHIM
ORG 0H MOV DPTR,#CODE7SEG CALL XOAVNHTHI
MAIN1: CALL KEYPRESS16
MOV A,MP CJNE A,#0FFH,MAIN2 ;SS VOI FFH, KHAC FFH THI CO NP CALL HIENTHI ;NEU KNP THI HIEN THI
JMP MAIN1 ;QUAY LAI LAM TIEP
MAIN2: CALL DICHDATA
MOVC A,@A+DPTR MOV 37H,A ;(37H) SE LUU SO MOI NHAT CALL DELAY100MS ;LAM CHAM LAI
Trang 25MOV P0,36H MOV P2,#11111101B CALL DELAY1MS MOV P2,#0FFH
MOV P0,35H MOV P2,#11111011B CALL DELAY1MS MOV P2,#0FFH MOV P0,34H MOV P2,#11110111B
Trang 26CALL DELAY1MS MOV P2,#0FFH
MOV P0,33H MOV P2,#11101111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,32H MOV P2,#11011111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,31H MOV P2,#10111111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,30H MOV P2,#01111111B CALL DELAY1MS MOV P2,#0FFH RET
$INCLUDE(TV_DELAY.ASM)
$INCLUDE(TV_KEY16.ASM)
CODE7SEG: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH END
BÀI SỐ 6-7: CTR CON QUÉT PHÍM MA TRẬN 4×4 CHỐNG DỘI
;CHUONG TRINH CON QUET MA TRAN PHIM 4×4 CÓ CHỐNG DỘI
; CHTR QUET PHIM HIEN THI TREN 8 LED DE THAY HIEN TUONG DOI PHIM
ORG 0H MOV DPTR,#CODE7SEG CALL XOAVNHTHI
Trang 27MAIN1: CALL KEYPRESS
MOV A,MP CJNE A,#0FFH,MAIN2 ;SS VOI FFH, KHAC FFH THI CO NP CALL HIENTHI ;NEU KNP THI HIEN THI
JMP MAIN1 ;QUAY LAI LAM TIEP
MAIN2: CALL DICHDATA
MOVC A,@A+DPTR MOV 37H,A ;(37H) SE LUU SO MOI NHAT
Trang 28MOV 30H,#0FFH RET
MOV P0,36H MOV P2,#11111101B CALL DELAY1MS MOV P2,#0FFH
MOV P0,35H MOV P2,#11111011B CALL DELAY1MS MOV P2,#0FFH
MOV P0,34H MOV P2,#11110111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,33H MOV P2,#11101111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,32H MOV P2,#11011111B CALL DELAY1MS MOV P2,#0FFH
Trang 29MOV P0,31H MOV P2,#10111111B CALL DELAY1MS MOV P2,#0FFH
MOV P0,30H MOV P2,#01111111B CALL DELAY1MS MOV P2,#0FFH RET
CODE7SEG: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH
;CHUONG TRINH CON QUET MA TRAN PHIM 4×4
;PORT 3 NOI VOI MA TRAN 4X4
DEM EQU 40H
MP EQU 41H C3C0 EQU 42H ;C3C2C1C0 LAP EQU 43H
MP1 EQU 44H
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
KEYPRESS: MOV LAP,#10 ;nhap so dem 10 lan
KEYPRESS1 : CALL KEYPRESS16 ;Neu co phim an thi co c=1
JC KEYPRESS2 ;kiem tra tiep neu c = 1 RET ;Neu khong co phim nhan thi co c=0
KEYPRESS2: DJNZ LAP,KEYPRESS1 ;Quay ve lap lai chong nay
MOV MP1,MP ;Cat noi dung ma phim
KEYPRESS3: MOV LAP,#10 ;Nhap so dem 10 lan cho nha phim KEYPRESS4: CALL KEYPRESS16 ;Co phim nhan hay khong