شمارنده 3رقمي به زبان اسمبلي COUNTER

تاس الكترونيكي به زبان C (برنامه نویسی به زبان سی)
21 بهمن, 1388
ريز پردازنده 8088-8086
21 بهمن, 1388
تاس الكترونيكي به زبان C (برنامه نویسی به زبان سی)
21 بهمن, 1388
ريز پردازنده 8088-8086
21 بهمن, 1388

بازدیدها: 0

اين شمارنده به زبان اسمبلي نوشته شده و از 000 تا 999 را مي شمارد و با رسيدن به عدد 999 تمام ثبات ها و حافظه هاي مورد استفاده شده را ريست مي كند و از نو شروع به شمارش مي كند اين روند همين طور ادامه دارد. همانطور كه ميدانيد به علت بالا بودن سرعت ميكروكنترلر (اگر از كريستال 11.0592 مگاهرتزي استفاده شود سرعت اجراي هر دستور توسط ميكر حدود 1.085 ميكرو ثانيه مي شود) اگر بخواهيم از يك پورت ميكرو اطلاعاتي بخوانيم (بستگي به شرايط برنامه دارد) بايد از يك تاخير استفاده كنيم. مثلا من در اين شمارنده از يك كليد براي شمارش استفاده كرده ام (با هر بار فشار داده يك عدد به عدد قبلي اضافه مي كند) كه اگر از برنامه تاخيري استفاده نكنم با هر بار فشار دادن كليد به علت بالا بودن سرعت ميكرو اين كليد را بيش از هزار بار از زير دست من مي خواند و مي بينيم كه يك دفعه شمارنده يك عدد بسيار بزرگي را به ما نشان مي دهد. MGH
در ضمن اگر بخواهيم به جاي كليد استفاده شده در مدار از يك مولد پالس يا گيرنده مادون قرمز و يا هر سنسور ديگر كه بخواهيم سرعت عمل بشتري داشته باشيم مي توان مدت زمان تاخير را كم كرد تا به سرعت دلخواه رسيد.

براي كم كردن بايد ثبات هاي R3,R4,R5 را كه من در برنامه استفاده كرده ام را بسته به سرعت مقدار هگز آن را كم كرد. در زير برنامه و سخت افزار مدار آمده است اميد وارم كه اين توضيحات براي شما كارآمد باشد. MGH
در ضمن اگر كسي برنامه اي خاص يا توضيحاتي در مورد اين زبان بخواهد مي تواند از طريق پست الكترونيكي من يا با نظر دادن (موضوع برنامه مورد نظر خو را بنويسيد) به من اطلاع دهيد. متشكرم MGH
برنامه:

            ORG   30H
            MOV   A,#0FFH
            MOV   P0,A
            MOV   A,#01H
            MOV   60H,A
            MOV   61H,A
            MOV   62H,A
            MOV   A,#00H
            MOV   P2,A
            MOV   P3,A
            MOV   P1,A
; MGHMGH MGH MGH MGH MGH MGH ;
            MOV   R0,#60H
START:      JB    P0.0,START          
COUNTERMGH: MOV   A,60H
            CJNE A,#0AH,MGHSEG1
            MOV   A,#00H
            MOV   P2,A
            MOV   60H,A
            SJMP MGHSEG2
MGHSEG1:    MOV   A,60H
            MOV   P2,A
            INC   60H
            CALL  DELAY 
            SJMP START
; MGHMGH MGH MGH MGH MGH MGH ;
MGHSEG2:    MOV   A,61H
            CJNE A,#0AH,MGHSEG3
            MOV   A,#00H
            MOV   P3,A
            MOV   61H,A
            SJMP MGHSEG4
MGHSEG3:    MOV   A,61H
            MOV   P3,A
            INC   61H
            SJMP START
; MGHMGH MGH MGH MGH MGH MGH ;
MGHSEG4:   MOV    A,62H
           CJNE   A,#0AH,RESET
           MOV    A,#00H
           MOV    P1,A
           MOV    P2,A
           MOV    P3,A
           MOV    60H,A
           MOV    61H,A
           MOV    62H,A
RESET:     MOV    A,62H
           MOV    P1,A
           INC    62H
           SJMP   START         
; MGHMGH MGH MGH MGH MGH MGH ;
DELAY:    MOV   R3,#14H
MGH1:     MOV   R4,#0FFH
MGH2:     MOV   R5,#00F4H
MGH3:     DJNZ R5,MGH3
          DJNZ R4,MGH2
          DJNZ R3,MGH1
          RET      
END