gmsg
16-04-2013, 10:25 AM
Lập trình cho 16 đơn sáng
Sau đây là mô phỏng và chương trình chạy của 16 led đơn,sử dụng 2 port của 89c51, các bạn có thể làm với 8,16,32 led đơn tuỳ vào lập trình cho 4 port của vi xử lý.
http://i1082.photobucket.com/albums/j361/diendandien/attachment-3.jpg
Chương trình và mô phỏng:
;=======BAI TONG HOP 16 LED DON -LEVUONGDT==================
$MOD51
ORG 00H
MAIN:
LCALL CHOPTAT
LCALL SANGDAN
LCALL SANGDUOI
LCALL SANGDON
SJMP MAIN
;*******************
CHOPTAT:
MOV R7,#5
LOOP1:
MOV P0,#00H
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
MOV P1,#00H
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
MOV P0,#00H
mov P1,#00H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
LCALL DELAY
DJNZ R7,LOOP1
RET
;*****************
SANGDAN:
MOV R7,#2
SOLAN1:
MOV A,#00H
MOV P1,#00H
LOOP2:
SETB C
MOV P0,A
ACALL DELAY
RLC A
JNC LOOP2
MOV A,#00H
LOOP3:
SETB C
MOV P1,A
ACALL DELAY
RRC A
JNC LOOP3
DJNZ R7,SOLAN1
MOV R7,#2
SOLAN1A:
MOV A,#00H
MOV P1,#00H
LOOP2A:
SETB C
MOV P0,A
ACALL DELAY
RRC A
JNC LOOP2A
MOV A,#00H
LOOP3A:
SETB C
MOV P1,A
ACALL DELAY
RLC A
JNC LOOP3A
DJNZ R7,SOLAN1A
RET
;******************
SANGDUOI:
MOV R7,#3
SOLAN2:
MOV A,#00H
SETB C
MOV P1,#00H
LOOP4:
MOV P0,A
ACALL DELAY
RLC A
JNC LOOP4
MOV A,#00H
SETB C
MOV P0,#00H
LOOP5:
MOV P1,A
ACALL DELAY
RRC A
JNC LOOP5
DJNZ R7,SOLAN2
RET
;*******************
SANGDON:
MOV R7,#3
SOLAN3:
MOV R1,#00H
MOV DPTR,#DATADISP
MOV P1,#00H
LOOP6:
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
INC R1
CJNE R1,#36,LOOP6
MOV R1,#00H
MOV DPTR,#DATADISP
MOV R1,#00H
MOV DPTR,#DATADISP
LOOP7:
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R1
CJNE R1,#36,LOOP7
MOV R1,#00H
MOV DPTR,#DATADISP
MOV R1,#00H
MOV DPTR,#DATADISP
LOOP8:
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
MOV P1,A
ACALL DELAY
INC R1
CJNE R1,#36,LOOP8
MOV R1,#00H
DJNZ R7,SOLAN3
RET
;*****************
DELAY:
MOV R0,#10
MOV TMOD,#01H
LOOP:
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP
RET
DATADISP:
db 01h,02h,04h,08h,10h,20h,40h,80h
db 81h,82h,84h,88h,90h,0a0h,0c0h
db 0c1h,0c2h,0c4h,0c8h,0d0h,0e0h
db 0e1h,0e2h,0e4h,0e8h,0f0h
db 0f1h,0f2h,0f4h,0f8h
db 0f9h,0fah,0fch,
db 0fdh,0feh,
db 0ffh
END
Sau đây là mô phỏng và chương trình chạy của 16 led đơn,sử dụng 2 port của 89c51, các bạn có thể làm với 8,16,32 led đơn tuỳ vào lập trình cho 4 port của vi xử lý.
http://i1082.photobucket.com/albums/j361/diendandien/attachment-3.jpg
Chương trình và mô phỏng:
;=======BAI TONG HOP 16 LED DON -LEVUONGDT==================
$MOD51
ORG 00H
MAIN:
LCALL CHOPTAT
LCALL SANGDAN
LCALL SANGDUOI
LCALL SANGDON
SJMP MAIN
;*******************
CHOPTAT:
MOV R7,#5
LOOP1:
MOV P0,#00H
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
MOV P1,#00H
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
MOV P0,#00H
mov P1,#00H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
LCALL DELAY
DJNZ R7,LOOP1
RET
;*****************
SANGDAN:
MOV R7,#2
SOLAN1:
MOV A,#00H
MOV P1,#00H
LOOP2:
SETB C
MOV P0,A
ACALL DELAY
RLC A
JNC LOOP2
MOV A,#00H
LOOP3:
SETB C
MOV P1,A
ACALL DELAY
RRC A
JNC LOOP3
DJNZ R7,SOLAN1
MOV R7,#2
SOLAN1A:
MOV A,#00H
MOV P1,#00H
LOOP2A:
SETB C
MOV P0,A
ACALL DELAY
RRC A
JNC LOOP2A
MOV A,#00H
LOOP3A:
SETB C
MOV P1,A
ACALL DELAY
RLC A
JNC LOOP3A
DJNZ R7,SOLAN1A
RET
;******************
SANGDUOI:
MOV R7,#3
SOLAN2:
MOV A,#00H
SETB C
MOV P1,#00H
LOOP4:
MOV P0,A
ACALL DELAY
RLC A
JNC LOOP4
MOV A,#00H
SETB C
MOV P0,#00H
LOOP5:
MOV P1,A
ACALL DELAY
RRC A
JNC LOOP5
DJNZ R7,SOLAN2
RET
;*******************
SANGDON:
MOV R7,#3
SOLAN3:
MOV R1,#00H
MOV DPTR,#DATADISP
MOV P1,#00H
LOOP6:
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
INC R1
CJNE R1,#36,LOOP6
MOV R1,#00H
MOV DPTR,#DATADISP
MOV R1,#00H
MOV DPTR,#DATADISP
LOOP7:
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R1
CJNE R1,#36,LOOP7
MOV R1,#00H
MOV DPTR,#DATADISP
MOV R1,#00H
MOV DPTR,#DATADISP
LOOP8:
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
MOV P1,A
ACALL DELAY
INC R1
CJNE R1,#36,LOOP8
MOV R1,#00H
DJNZ R7,SOLAN3
RET
;*****************
DELAY:
MOV R0,#10
MOV TMOD,#01H
LOOP:
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP
RET
DATADISP:
db 01h,02h,04h,08h,10h,20h,40h,80h
db 81h,82h,84h,88h,90h,0a0h,0c0h
db 0c1h,0c2h,0c4h,0c8h,0d0h,0e0h
db 0e1h,0e2h,0e4h,0e8h,0f0h
db 0f1h,0f2h,0f4h,0f8h
db 0f9h,0fah,0fch,
db 0fdh,0feh,
db 0ffh
END