با سلام.من برنامه ای نوشته ام تا اعداد را از 9 تا 0 روی 7-seg نمایش دهد فقط مشکل اینجاست که باید بین نمایش اعداد یک زمانی به اندهزه 1 ثانیه بگذرد تا وقتی از 9 تا 0 را می شمارد دیده شود.در واقع می خواهم بین نمایش اعداد به اندازه 1 ثانیه میکرو کاری انجام نده.این کارو بدون استفاده از تایمر می خواهم انجام بدمو یک تابع dellay نوشتم ببینید عیبش کجاست و لطفا راهنمایی کنید (با فشردن دکمه در پورت 2.7 )
#include <sfr51.inc>
org 56h
mov 30h,#0c0h
mov 31h,#0f9h
mov 32h,#0a4h
mov 33h,#0b0h
mov 34h,#99h
mov 35h,#92h
mov 36h,#82h
mov 37h,#0d8h
mov 38h,#80h
mov 39h,#98h
start: mov r0,#30h
mov r2,#02h
mov a,#0ah
lable: jb p2.7,lable
lable2:
acall dellay1
mov b,a
add a,r0
mov r0,a
mov a,@r0
mov p3,a
mov a,b
dec a
cjne a,#00h,lable2
sjmp start
dellay1:
lable1: mov Dptr,#0000h
clr c
lable4:inc Dptr
jnc lable4
djnz r2,lable1
ret
end
#include <sfr51.inc>
org 56h
mov 30h,#0c0h
mov 31h,#0f9h
mov 32h,#0a4h
mov 33h,#0b0h
mov 34h,#99h
mov 35h,#92h
mov 36h,#82h
mov 37h,#0d8h
mov 38h,#80h
mov 39h,#98h
start: mov r0,#30h
mov r2,#02h
mov a,#0ah
lable: jb p2.7,lable
lable2:
acall dellay1
mov b,a
add a,r0
mov r0,a
mov a,@r0
mov p3,a
mov a,b
dec a
cjne a,#00h,lable2
sjmp start
dellay1:
lable1: mov Dptr,#0000h
clr c
lable4:inc Dptr
jnc lable4
djnz r2,lable1
ret
end
دیدگاه