em moi vừa tập tành lập trình 8051 mong được các anh giúp đỡ. cụ thể là em có đoạn code điều khiển led đơn mở rộng bằng ic dịch 74hc595 em muốn xuất dữ liệu ra 595 với delay trên 2 byte khác nhau. byte thứ nhất chạy nhanh hơn byte thu 2 cụ thề la thời gian trên u1 và u2 (74hc595) chạy khác nhau . em mới tìm hiểu 8051 kiến thức còn hạn chế nen không giải thích được cụ thể lắm mời các anh xem code và mo phỏng
sh bit p2.0
st bit p2.2
da_ta bit p2.1
org 0000h
ljmp main
org 30H
main:
clr sh
clr st
MOV R1,0 ; ma khoi dau
MOV R2,#12 ; so bang ma
MOV R3,#2 ; xuat 4 byte ra 4 con 595
mov dptr,#mydata
LOOP1: mov r4,#8 ; xuat 8 bit ra 595
mov a,R1
movc a,@a+dptr
loop2:
clr c
rlc a
mov da_ta,c
setb sh
clr sh
djnz r4,loop2 ;dich 8 bit
inc R1
djnz r3,LOOP1 ;dich 4 byte
setb st
clr st
lcall delay
INC DPTR
INC DPTR
;INC DPTR
;INC DPTR ;tang bang ma 4 lan
djnz r2,LOOP1
ljmp main
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
delay:
mov r7,#200
d0: mov r6,#200
here: NOP
nop
djnz r6,here
djnz r7,d0
ret
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
org 300h
mydata:
db 00000000b,00000000b
db 10000000b,01010101b
db 11000000b,10101010b
db 11100000b,01010101b
db 11110000b,10101010b
db 11111000b,00000000b
db 11111100b,11111111b
db 11111110b,00000000b
db 11111111b,11111111b
db 11111111b,00000000b
db 11111111b,11111111b
db 00000000b,00000000b
end
sh bit p2.0
st bit p2.2
da_ta bit p2.1
org 0000h
ljmp main
org 30H
main:
clr sh
clr st
MOV R1,0 ; ma khoi dau
MOV R2,#12 ; so bang ma
MOV R3,#2 ; xuat 4 byte ra 4 con 595
mov dptr,#mydata
LOOP1: mov r4,#8 ; xuat 8 bit ra 595
mov a,R1
movc a,@a+dptr
loop2:
clr c
rlc a
mov da_ta,c
setb sh
clr sh
djnz r4,loop2 ;dich 8 bit
inc R1
djnz r3,LOOP1 ;dich 4 byte
setb st
clr st
lcall delay
INC DPTR
INC DPTR
;INC DPTR
;INC DPTR ;tang bang ma 4 lan
djnz r2,LOOP1
ljmp main
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
delay:
mov r7,#200
d0: mov r6,#200
here: NOP
nop
djnz r6,here
djnz r7,d0
ret
;=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
org 300h
mydata:
db 00000000b,00000000b
db 10000000b,01010101b
db 11000000b,10101010b
db 11100000b,01010101b
db 11110000b,10101010b
db 11111000b,00000000b
db 11111100b,11111111b
db 11111110b,00000000b
db 11111111b,11111111b
db 11111111b,00000000b
db 11111111b,11111111b
db 00000000b,00000000b
end
Comment