$include(reg51.inc)
cseg
bodem equ r5 ; bodem=r5
contro equ r3 ; contro=r3
diachi equ 66h ; diachi=66h
;===============================
org 0000h
start: mov sp,#30h ;2us
mov bodem,#00h ;1us
mov contro,#00h ;1us
mov diachi,#0h ;2us st:
mov p0,#00h ;2us
mov p2,#00h ;2us
clr p1.0 ;1us thiet lap che do tac
clr p1.1
;1us dong suon duong
k1: mov r2,#30 ;1us so lan quet cho mot anh
k2: setb p1.1 ;1us , thiet lap bit dich
;===========================
lap: mov a,contro ;1us
add a,bodem ;1us
mov diachi,a ;1us , diachi = contro + bodem
mov tmod,#01h ;2us , thiet lap che do 1 cua timer 0
setb p1.0 ;1us , tich cuc cot 1
;-------- xuat du lieu-------
mov a,diachi ;1us
mov dptr,#mahang1 ;2us
movc a,@a+dptr ;2us
mov p0,a ;1us , xuat ma hang1
;------------dich ----------
mov tl0,#020h ;2us
mov th0,#0ffh ;2us
setb tr0 ;1us
w2: jnb tf0,w2 ;1us
clr p1.1 ;1us , xoa bit dich
clr tr0 ;1us
;------------------------
mov tl0,#020h ;2us
mov th0,#0ffh ;2us
setb tr0 ;1us
clr p1.0 ;1us
w4: jnb tf0,w4 ;10us
clr tf0 ;1us
clr tr0 ;1us
;--------------------------------
mov p0,#00h ;2us, chong bong ma
nop ;1us
nop ;1us
nop ;1us
nop ;1us
;-------------------------------
inc bodem
cjne r5,#8,lap ;2us
mov r5,#00h ;1us
djnz r2,k2 ;2us , lam lai 20 lan
inc contro ;1us , tang dia bat dau len 1
mov a,contro ;1us
cjne a,#16,k1 ; so sanh vi tri contro voi vi tri cuoi cung
jmp start ; tro ve lam lai tu dau
mahang1:
db 00h, 00h ,0e7h,0e7h,0e7h,0e7h,00h, 0ffh
db 01h, 0eeh, 0eeh,0eeh,0eeh,01h,0ffh,0ffh
các bác xem giúp em chương trình này với.
em ko biết sửa như thế nào cả.
nó chạy nhanh quá, ko nhìn thấy gì cả.
ah mà chỗ so sánh vị trị contro với vị trí cuối cùng thì tính như thế nào,phần này em chưa rõ
các canh có thể giải thích cho em 2 giá trị mà em đã bôi đen đc ko
và sử giúp em cái chương trinh này nhé
cseg
bodem equ r5 ; bodem=r5
contro equ r3 ; contro=r3
diachi equ 66h ; diachi=66h
;===============================
org 0000h
start: mov sp,#30h ;2us
mov bodem,#00h ;1us
mov contro,#00h ;1us
mov diachi,#0h ;2us st:
mov p0,#00h ;2us
mov p2,#00h ;2us
clr p1.0 ;1us thiet lap che do tac
clr p1.1
;1us dong suon duong
k1: mov r2,#30 ;1us so lan quet cho mot anh
k2: setb p1.1 ;1us , thiet lap bit dich
;===========================
lap: mov a,contro ;1us
add a,bodem ;1us
mov diachi,a ;1us , diachi = contro + bodem
mov tmod,#01h ;2us , thiet lap che do 1 cua timer 0
setb p1.0 ;1us , tich cuc cot 1
;-------- xuat du lieu-------
mov a,diachi ;1us
mov dptr,#mahang1 ;2us
movc a,@a+dptr ;2us
mov p0,a ;1us , xuat ma hang1
;------------dich ----------
mov tl0,#020h ;2us
mov th0,#0ffh ;2us
setb tr0 ;1us
w2: jnb tf0,w2 ;1us
clr p1.1 ;1us , xoa bit dich
clr tr0 ;1us
;------------------------
mov tl0,#020h ;2us
mov th0,#0ffh ;2us
setb tr0 ;1us
clr p1.0 ;1us
w4: jnb tf0,w4 ;10us
clr tf0 ;1us
clr tr0 ;1us
;--------------------------------
mov p0,#00h ;2us, chong bong ma
nop ;1us
nop ;1us
nop ;1us
nop ;1us
;-------------------------------
inc bodem
cjne r5,#8,lap ;2us
mov r5,#00h ;1us
djnz r2,k2 ;2us , lam lai 20 lan
inc contro ;1us , tang dia bat dau len 1
mov a,contro ;1us
cjne a,#16,k1 ; so sanh vi tri contro voi vi tri cuoi cung
jmp start ; tro ve lam lai tu dau
mahang1:
db 00h, 00h ,0e7h,0e7h,0e7h,0e7h,00h, 0ffh
db 01h, 0eeh, 0eeh,0eeh,0eeh,01h,0ffh,0ffh
các bác xem giúp em chương trình này với.
em ko biết sửa như thế nào cả.
nó chạy nhanh quá, ko nhìn thấy gì cả.
ah mà chỗ so sánh vị trị contro với vị trí cuối cùng thì tính như thế nào,phần này em chưa rõ
các canh có thể giải thích cho em 2 giá trị mà em đã bôi đen đc ko
và sử giúp em cái chương trinh này nhé
Comment