اطلاعیه

Collapse
No announcement yet.

شمارش اعداد در seven-segment از 9 تا 0

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    شمارش اعداد در seven-segment از 9 تا 0

    با سلام.من برنامه ای نوشته ام تا اعداد را از 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

    #2
    پاسخ : شمارش اعداد در seven-segment از 9 تا 0

    سلام:
    من asm وارد نیستم ولی شما تایمر رو بارگزاری کردین :question:

    دیدگاه


      #3
      پاسخ : شمارش اعداد در seven-segment از 9 تا 0

      من نمی خواهم از تایمر استفاده کنم.فقط به من بگید این dellay ی که نوشتم کجاش مشکل داره . این 1 dellay باید تقریبا به اندازه یک ثانیه وقت را تلف کند

      دیدگاه


        #4
        پاسخ : شمارش اعداد در seven-segment از 9 تا 0

        سلام
        چند تا اشکال تو برنامتون هست:
        1. مقدار R2 در اولین باری که تاخیر فراخوانی میشه صفر میشه و از اون به بعد صفر میمونه. شما باید در آخرین خط تاخیر (قبل از RET) دوباره اون رو مقدار دهی کنید.
        2. اینطور که من میبینم شما تو اول برنامه عدد 2 رو در R2 ریختید. فکر کنم برای یک ثانیه کم باشه.

        اگر اینها را اعمال کنید و بقیه برنامه هم مشکل نداشته باشه فکر کنم درست کار کنه.

        دو تا چیزدیگه هم بدونید بد نیست. اول اینکه برای ذخیره کردن الگوی اعداد به جای ریختن اونها توی RAM میتونید اونها رو با دستور DB تعریف کنید و بعد استفاده کنید.(اینجوری خیلی راحت تره)
        دوم اینکه با یه کد خیلی ساده تر میتونستید شمارش به سمت پایین رو انجام بدید. کد زیر رو نگاه کنید :

        MOV R0,#39H
        .
        .
        .
        LABEL2:
        CALL DELAY1
        MOV A,@R0
        MOV P3,A
        DEC R0
        CJNE R0,#2FH,LABEL2
        SJMP START

        دیدگاه


          #5
          پاسخ : شمارش اعداد در seven-segment از 9 تا 0

          با سلام به شما دوست عزیز
          من برنامه کامل را برایتان گذاشتم این برنامه تست شده است
          mov dptr,#table
          aval1:
          mov r0,#00h
          aval:
          mov a,r0
          movc a,@a+dptr
          mov p1,a
          call delay
          inc r0
          cjne r0,#10,aval
          jmp aval1
          delay:
          mov tmod,#00000001b
          mov r1,#20
          aval2:
          mov th0,#3ch
          mov tl0,#0afh
          setb tr0
          jnb tf0,$
          clr tf0
          djnz r1,aval2
          ret
          table:
          db 40H
          db 0FCH
          db 92H
          DB 98H
          DB 0ACH
          DB 89H
          DB 81H
          DB 0DCH
          DB 0H
          DB 88H
          end
          تموم مردم عالم میگن که ما دیونم
          آره ما دیونه هستیم،بی خیال این زمونه

          دیدگاه


            #6
            پاسخ : شمارش اعداد در seven-segment از 9 تا 0

            نوشته اصلی توسط jyjy
            با سلام به شما دوست عزیز
            من برنامه کامل را برایتان گذاشتم این برنامه تست شده است
            (+)

            موفق باشید :smile:
            [left][move][b][color=green][size=11pt]ما می توانیم .
            ، همین ... *. * * *. * * * [color=re

            دیدگاه


              #7
              پاسخ : شمارش اعداد در seven-segment از 9 تا 0

              سلام. آقا به شدت کمک. من هرکار میکنم 7سگمنتم درست کار نمیده. همش خوبه قشنگ کار میکنه اما به عدد 6 و 9 که میرسه بالای عدد 6 و پایین عدد 9 حذف میکنه. میگن بخاطر ای سی 7448 هست. میخوام بدونم میشه کاریش کرد؟ خیلی بهش نیاز دارم خواهش میکنم کسی تونست کاریش کنه با ایمیل به من خبر بده SMSPANEL.IRAN@GMAIL.COM
              دانلود پرتوس و برنامه نویسیش:
              http://www.uplooder.net/cgi-bin/dl.cgi?k...e1951bfbe3

              دیدگاه

              لطفا صبر کنید...
              X