ولكن أين الصعوبة هنا
لقد ولد لك البرنامج دالة وسماها
sounddata1
ويكفي أن تضيف الدالة الى البرنامج فقط ثم تكتب اسم الدالة فقط حين تريد توليد
الصوت
اذا لم تفهم ذلك خذ البرنامج الذي كنت تريد تفسيره الذي يحتوي على tone
ثم تكتب الدالة
void sound_data1() org (1 * 256)
{
asm retlw 0xAA ; -------0
asm retlw 0xAA ; -------0
asm retlw 0xAA ; -------0
asm retlw 0xAA ; -------0
asm retlw 0xAA ; -------0
asm retlw 0xAA;---------0
..................................
الى اخر الدالة
وضعها مكان دالة tone أي tone من الثلاثة وأنزع الباقي
ثم بعد ذلك أكتب اسم الدالة والذي هو sound_data1 مكان melody
الموجود في دالة main
اذا كان الصوت طويل وقام البرنامج بتوليد عدة دوال مثلا :
sound_data1 و sound_data2 و .........
هنا نكتب دالة نسميها melody مثلا وبدل أن نذكر بداخلها tone1 و tone2 ....
نذكر sound_data1 و soun_data2 و ........
أي هكذا
void melody () {sound_data1();sound_data2();sound_data3();....}-----0
بنفس الترتيب الذي ولده البرنامج
ثم تكتب في الدالة main الدالة الجديدة melody();----0
(كما يمكنك أن تستدعي الدوال soud_data بنفس الترتيب الذي ولده البرنامج
دون أن تستعمل دالة جديدة مثل melody داخل دالة main)
توضيح :
ان كلمة org هي تعليمة نحدد بها المكان الذي نضع فيه البرنامج داخل ال pic
أي نقول لل pic ضع التعليمات التالية بداية من العنوان التالي مثلا هنا من العنوان 1*256 أي السطر 257 على اعتبار أننا نبدأ من السطر 00
أعتقد أنه شيء بسيط أليس كذالك
الصعوبة تكمن في انشاء الدالة وقد قام البرنامج بذلك فلم يبقي الا كتابتها كما كتبها البرنامج في بداية برنامجنا ثم نقوم باستدعائها داخل دالة main