code điều khiển Led 7 thanh
Code:
; a,b,c,d,e,f,g -> Port 2
; P3.0 -> LED1
; P3.1 -> LED2
; P3.2 -> LED3
; P3.3 -> LED4
ORG 0H ;bắt đầu từ địa chỉ 00h
MOV P3,#00H ;đưa cả port p3 về mức 0
MOV DPTR,#LED7SEG ;ghi LED7SEG vào DPTR
BEGIN:
MOV A,#1 ;gán 1 vào A
MOVC A,@A+DPTR ;đọc tại vị trí thứ 1 của DPTR lưu vào A
MOV 40H,A ;gán A vào ngăn nhớ 40H
MOV A,#2 ;tương tự như thế
MOVC A,@A+DPTR
MOV 41H,A
MOV A,#3
MOVC A,@A+DPTR
MOV 42H,A
MOV A,#4
MOVC A,@A+DPTR
MOV 43H,A
MOV A,#5
MOVC A,@A+DPTR
MOV 44H,A
LCALL DISPLAY ; gọi chương trình con hiển thị
SJMP BEGIN ;lặp lại BEGIN
DISPLAY: ; chương trình con hiển thị
; LED1
MOV P2,40H ; đọc ngăn nhớ 40H xuất ra portp2
SETB P3.0 ;setb p3.0 lên 1 để tích cực led 1 sáng
ACALL DELAY_25 ; gọi chương trình con delay để lưu sáng
CLR P3.0 ; clr p3.0 về 0 để chông hiện tượng bóng ma
; LED2 ; led 2 ->5 làm tương tự
MOV P2,41H
SETB P3.1
ACALL DELAY_25
CLR P3.1
; LED 3
MOV P2,42H
SETB P3.2
ACALL DELAY_25
CLR P3.2
; LED 4
MOV P2,43H
SETB P3.3
ACALL DELAY_25
CLR P3.3
; LED 5
MOV P2,44H
SETB P3.4
ACALL DELAY_25
CLR P3.4
RET
DELAY_25: PUSH 1 ; chương trình con tạo trễ
PUSH 0 ; cất dữ liệu vào ngăn xếp
MOV R1,#10 ;gán r1=10
LOOP1
MOV R0,#10 ;gán r0=10
LOOP: DJNZ R0,LOOP ;lăp 10 lần =2*10=20us
DJNZ R1,LOOP1 ;lặp 10 lần nữa = 2*20=400us
POP 0 ;lấy dữ liệu ra khỏi ngăn xếp
POP 1
RET
LED7SEG:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
DB 88H,0C6H,86H,8EH,82H,89H
END
Bạn đang đọc truyện trên: AzTruyen.Top