بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله تعالى و بركاته
اولا اريد ان اقول اني جديد في برمجة ال ميكروكنترولر ، وكل ما يتعلق بالميدي، بالاضافة اني طالب اجنبي ،و الاستاد المسؤول عن المشروع لا يابه الى ما افعله بتاتاً.
في مشروع لي في الجامعة , اريد ان اوصل مدخل MIDI ب PIC16F887 ، وذلك لارسال معلومات MIDI من الكمبيوتر الى الميكروكنترولر ،مع العلم اني ساستعمل مخرج MIDI وحيد من الكمبيوتر متصل بعدت مداخل MIDI كل مدخل سيعمل مع ميكروكنترول مخصص لتنفيد مهمة اذا وصلته المعلومة الخاصة به. في الاول ، ساقوم بارسال معلومة الMIDI المكونة من 3 Octets ،من الحاسب الى ميكروكنترول عبر ال MIDI ,هذه المعلومة ستصل الى مجموع الميكروكنترولات التي استعملها ، ولاكن واحد فيها فقط سيقومة بتنفيد الامر، لانها مخصصة له. كمثال ، اريد ارسال النوته LA3 بسرعة معينة ، المعلومة midi ستكون من الشكل [10010000] [01000101] [01100100] ب 3 اوكته، هذه المعلومة سيتم استقبالها من جميع ال الميكروكنترولات، ولكن ، واحد فيهم فقط سينفد امر معين ( اشعال مصباح كمثال) بعد قراءة هذه المعلومة، لانها المعلومة الخاصة به.
بدات بكتابة البرنامج و لاكني حائر في كيفية كتابة الشرط الواجب تحقيقه ،ليقوم الميكرو كنترولر بالفعل.
هذا هو شكل البرنامج الذي كتبته
void main(void)
{
//reception, transmition MIDI
//initialisation
PORTA=0;
PORTC=0x80;
TRISC=0x80; //port C en sorti sauf C7 en RX/le TX en sorti
TRISA=0b00000000; //port a en sortie
//Config
SPBRG=1; //pour BRG en 8-bits (31250 bauds) (par défaut)
TXSTA=0b00001000; // TXSTA en mode synchrone
RCSTA=0b00001001; // RCSTA,SPEN,CREEN (activation du port serie , synchrone)
//while (//condition par exemple pour le choix du pic est verifiée//)
//généré une PWM
PR2=100; // définit la période du signal PWM , pour 609.2Hz on a T=1/f=0.0016414sec
CCP1CON=0x0C; // CCP1CON.5:4 = bits de poids fort du cycle = 0 , mode PWM
CCPR1L=50; // le rapport cyclique
T2CON=0x04; // prescaler et postscaler =1 , timer 2 on
//oû alumé la led !
}
مع العلم اني استعمل برنامج MPLAB مزود ب CC5Xللعمل في بيئة ال C.
لا اعلم ان كان اصلا ما كتبته صحيح ، كما قلت من قبل ، انا مبتدا في كل هذا ، و الاستاذ لا يصحح شئ.
اي مساعد ستكونة مفيد.
شكراً.