تاس الكترونيكي به زبان C (برنامه نویسی به زبان سی)
21 بهمن, 1388ريز پردازنده 8088-8086
21 بهمن, 1388بازدیدها: 0
اين شمارنده به زبان اسمبلي نوشته شده و از 000 تا 999 را مي شمارد و با رسيدن به عدد 999 تمام ثبات ها و حافظه هاي مورد استفاده شده را ريست مي كند و از نو شروع به شمارش مي كند اين روند همين طور ادامه دارد. همانطور كه ميدانيد به علت بالا بودن سرعت ميكروكنترلر (اگر از كريستال 11.0592 مگاهرتزي استفاده شود سرعت اجراي هر دستور توسط ميكر حدود 1.085 ميكرو ثانيه مي شود) اگر بخواهيم از يك پورت ميكرو اطلاعاتي بخوانيم (بستگي به شرايط برنامه دارد) بايد از يك تاخير استفاده كنيم. مثلا من در اين شمارنده از يك كليد براي شمارش استفاده كرده ام (با هر بار فشار داده يك عدد به عدد قبلي اضافه مي كند) كه اگر از برنامه تاخيري استفاده نكنم با هر بار فشار دادن كليد به علت بالا بودن سرعت ميكرو اين كليد را بيش از هزار بار از زير دست من مي خواند و مي بينيم كه يك دفعه شمارنده يك عدد بسيار بزرگي را به ما نشان مي دهد. MGH
در ضمن اگر بخواهيم به جاي كليد استفاده شده در مدار از يك مولد پالس يا گيرنده مادون قرمز و يا هر سنسور ديگر كه بخواهيم سرعت عمل بشتري داشته باشيم مي توان مدت زمان تاخير را كم كرد تا به سرعت دلخواه رسيد.
براي كم كردن بايد ثبات هاي R3,R4,R5 را كه من در برنامه استفاده كرده ام را بسته به سرعت مقدار هگز آن را كم كرد. در زير برنامه و سخت افزار مدار آمده است اميد وارم كه اين توضيحات براي شما كارآمد باشد. MGH
در ضمن اگر كسي برنامه اي خاص يا توضيحاتي در مورد اين زبان بخواهد مي تواند از طريق پست الكترونيكي من يا با نظر دادن (موضوع برنامه مورد نظر خو را بنويسيد) به من اطلاع دهيد. متشكرم MGH
برنامه:
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
