CÁC CHƯƠNG TRÌNH SỬ DỤNG NGẮT
Nút nhấn p3.2
Bài 1: LED ĐƠN
Nhấn lần 1 sáng dồn p1, nhấn lần 2 chớp tắt p1, nhấn lần 3 dừng
Tg EQU 20h
kq EQU 21h
ckdl EQU 22h
sldl EQU 23h
ORG 0000h
LJMP main
org 0003h ; VETOR NGẮT NGOÀI 0
LJMP ngatngoai0
org 0030h ;NGOÀI TẤT CẢ CÁC NGẮT
main: MOV p1,#0
MOV ie,#81h ; CHO PHÉP NGẮT NGOAI 0
SETB it0 ; KÍCH MỨC THẤP
MOV R0,#00H
SJMP $ ; KHÔNG LÀM GÌ
ngatngoai0: INC R0
CJNE R0,#1,kt0
LCALL sangdon
kt0: CJNE R0,#2,kt1
LCALL choptat
kt1: CJNE R0,#3,thoat
LCALL dung
thoat: RETI
dung: MOV R0,#00h
MOV p1,#00h
CALL delay
LJMP main
sangdon: MOV p1,#00h
LCALL delay
MOV ckdl,#8
MOV kq,#00h
x11: MOV sldl,ckdl
MOV tg,#00h
SETB c
x12: MOV A,tg
RLC A
MOV tg,A
ORL A,kq
MOV p1,A
LCALL delay
DJNZ sldl,x12
MOV kq,p1
DJNZ ckdl,x11
SJMP sangdon
RETI
choptat: MOV p1,#00h
CALL delay
MOV p1,#0ffh
CALL delay
JMP choptat
RETI
delay: MOV R7,#3
del: MOV R6,#0ffh
del1: MOV R5,#0ffh
DJNZ R5,$
DJNZ R6,del1
DJNZ R7,del
RETI
End
BÀI 2: ĐỘNG CƠ BƯỚC
Nhấn lần 1 quay thuận, nhấn lần 2 quay nghịch, nhấn lần 3 dừng
ORG 0000h
LJMP main
org 0003h
LJMP ngatngoai0
org 0030h
main: MOV ie,#81h
SETB it0
MOV R0,#00h
SJMP $
ngatngoai0: INC R0
CJNE R0,#1,kt0
LCALL thuan
kt0: CJNE R0,#2,kt1
LCALL ngich
kt1: CJNE R0,#3,thoat
LCALL dung
thoat: RETI
thuan: MOV P2,#00H
LCALL delay
SETB c
MOV A,#00h
x11: RLC A
MOV p2,A
LCALL delay
JNB P2.3,x11
SJMP thuan
RET
ngich: MOV P2,#00H
LCALL delay
SETB c
MOV A,#00h
x12: RRC A
SWAP A
MOV p2,A
SWAP A
LCALL delay
JNB P2.0,x12
SJMP ngich
RETI
dung: MOV p2,#00h
MOV R0,#00h
LCALL delay
LJMP main
delay: MOV R7,#3
del: MOV R6,#0ffh
del1: MOV R5,#0ffh
DJNZ R5,$
DJNZ R6,del1
DJNZ R7,del
RETI
End
BÀI 3: LED 7 ĐOẠN
Nhấn lần 1 đếm100 , nhấn lần 2 đếm10, nhấn lần 3 dừng
ORG 0000h
LJMP main
org 0003h
LJMP ngatngoai0
org 0030h
main: MOV ie,#81h
SETB it0
MOV R0,#00h
SJMP $
ngatngoai0: INC R0
CJNE R0,#1,kt0
MOV 70H,#101
LCALL td0
kt0: CJNE R0,#2,kt1
MOV 70H,#11
LCALL td0
kt1: CJNE R0,#3,THOAT
LCALL dung
td0: MOV R1,#00H
x11: LCALL hex_bcd
LCALL bcd_7doan
LCALL delay_hienthi
INC R1
MOV A,R1
CJNE A,70H,x11
SJMP td0
RETI
hex_bcd: MOV A,R1
MOV B,#10
DIV AB
MOV 20h,B
MOV B,#10
DIV AB
MOV 21H,B
MOV B,#10
DIV AB
MOV 22H,B
RETI
bcd_7doan: MOV DPTR,#bang
MOV A,20h
MOVC A,@A+DPTR
MOV 25h,A
MOV A,21H
MOVC A,@A+DPTR
MOV 26H,A
MOV A,22H
MOVC A,@A+DPTR
MOV 27H,A
RETI
delay_hienthi: MOV R7,#2
del1: MOV R6,#010h
del: LCALL hienthi
DJNZ R6,del
DJNZ R7,del1
RETI
hienthi: MOV p1,25h
MOV p2,#01h
LCALL delay
MOV p2,#00h
MOV P1,26H
MOV P2,#02H
LCALL delay
MOV p2,#00h
MOV P1,27H
MOV P2,#04H
LCALL delay
MOV p2,#00h
RETI
DUNG: MOV R0,#00H
MOV P2,#00H
LCALL DELAY
LJMP MAIN
THOAT: RETI
delay: MOV R4,#0ffh
DJNZ R4,$
RETI
bang: db
0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h,080h,090h
End