code điều khiển Led 7 thanh

Màu nền
Font chữ
Font size
Chiều cao dòng

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: Truyen2U.Pro