الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى الpic 16f877a

بدأه mustafa gebril في 22 سبتمبر 2008 · 7 رد · 2,239 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كتبت البرنامج التالى لحساب سرعة موتور مروحة البروسيسور البورت سى يعمل جيدا المشكلة فى البورت دى المضاء بإستمرار  حيث يخرج وحايد على عكس البرنامج فمن المفترض أن يخرج أصفار

#INCLUDE"P16F877A.INC"

__CONFIG _XT_OSC & _WDT_OFF & _LVP_OFF

ORG .0

BSF STATUS,5

BCF STATUS,6

CLRF TRISD

CLRF TRISC

movlw B'00010000' ; This number is written to W register

movwf TRISA

bsf OPTION_REG,T0CS ; Pin RA4 is supplied with pulses

bsf OPTION_REG,PSA

BCF STATUS,5

CLRF TMR0

MOVLW 0X00

MOVWF PORTD

MOVWF PORTC

CLRF 0X20

BB

MOVF TMR0,0

MOVWF PORTC

BTFSC STATUS,0

INCF PORTD

GOTO BB

END

#2

كيف قمت بتوصيل المروحة على الميكرو

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#3

للمروحة ثلاث أطراف أحدهم الموجب و الأرضى و الأخير الأنكودر

وصلت طرف الإنكودر ب pin 6(tock1)

بواسطة pull up resistor

المشكلة فى INCF PORTD

تم تعديل هذه المشاركة بواسطة mustafa gebril في 23 سبتمبر 2008 في 21:56

#4
mustafa gebril كتب:

كتبت البرنامج التالى لحساب سرعة موتور مروحة البروسيسور البورت سى يعمل جيدا المشكلة فى البورت دى المضاء بإستمرار  حيث يخرج وحايد على عكس البرنامج فمن المفترض أن يخرج أصفار

#INCLUDE"P16F877A.INC"

__CONFIG _XT_OSC & _WDT_OFF & _LVP_OFF

ORG .0

BSF STATUS,5

BCF STATUS,6

CLRF TRISD

CLRF TRISC

movlw B'00010000' ; This number is written to W register

movwf TRISA

bsf OPTION_REG,T0CS ; Pin RA4 is supplied with pulses

bsf OPTION_REG,PSA

BCF STATUS,5

CLRF TMR0

MOVLW 0X00

MOVWF PORTD

MOVWF PORTC

CLRF 0X20

BB

MOVF TMR0,0

MOVWF PORTC

BTFSC STATUS,0

INCF PORTD

GOTO BB

END

هناك أمور لم أفهمها في كودك...

مثلا هذا السطر

MOVF TMR0,0

انا اعتقد انك كنت تقصد ان تكتبه هكذا

MOVF TMR0,W

-------------------------------

وهنا...

BTFSC STATUS,0

لماذا تقوم بفحص الـ carry flag ?

#5

أردت أن أكتب قيمة السرعة على أثنين port

لذا أقوم بفحص الcarry flag

عندما يمتلئ البورت الأول أضيف واحد للبورت الثانى

#6

السلام عليكم ورحمة الله و بركاته.

أخي العزيز , لكي يمكنك أن تستخدم ال port D في ال pic 16f877a كي يكون I/O port يجب أن تقوم ب

set control bit PSPMODE - TRISE bit 4

راجع ال data sheet صفحة 50

وفقك الله

#7

لقد عدلت الكود و إشتغل بنجاح بالصيغة التالية

#INCLUDE"P16F877A.INC"

__CONFIG _XT_OSC & _WDT_OFF & _LVP_OFF

ORG .0

BSF STATUS,5

BCF STATUS,6

CLRF TRISD

CLRF TRISC

movlw B'00010000' ; This number is written to W register

movwf TRISA

bsf OPTION_REG,T0CS ; Pin RA4 is supplied with pulses

bsf OPTION_REG,PSA

BCF STATUS,5

CLRF TMR0

MOVLW 0X00

MOVWF PORTD

MOVWF PORTC

BCF STATUS,0

CLRF 0X20

BB

MOVF TMR0,0

MOVWF PORTC

BTFSC INTCON,2

GOTO EE

GOTO BB

EE

INCF PORTD

BCF INTCON,2

GOTO BB

END

شكرا لكل الإخوة على المساعدة

#8
allko كتب:
هناك أمور لم أفهمها في كودك...

مثلا هذا السطر

MOVF TMR0,0

انا اعتقد انك كنت تقصد ان تكتبه هكذا

MOVF TMR0,W

آسف ، نسيت ان 0 تعني W ( و 1 تعني F )

MsaMeen99 كتب:
السلام عليكم ورحمة الله و بركاته.

أخي العزيز , لكي يمكنك أن تستخدم ال port D في ال pic 16f877a كي يكون I/O port يجب أن تقوم ب

set control bit PSPMODE - TRISE bit 4

راجع ال data sheet صفحة 50

وفقك الله

لا ليس شرطا...جرب بنفسك

الداتا شيت تقول ان هناك two modes اما pspMODE او general I/O mode

مواضيع مشابهة