م برنامج مساعدة

G

GrandAlf

Guest
لدي القليل من مشكلة ، والتوليف التالي يعمل غرامة ، ولكن عندما أحاول أن وظيفة من وظائف محتويات كتلة ، تجمع ، ولكن لن يتم تشغيل.

قدم ملف دعا CancelCall.C
واضاف محتويات الكتلة تتميز بوظائف
وشملت At898252 ، والتأخير ورؤوس lcd

قدم ملف CancelCall.H
واضاف
خارجي CancelCall باطلة (باطل) ؛

وأضاف CancelCall.h إلى الملف الرئيسي.

تجمع موافق ، ولكن لن يتم تشغيل.لا يزال التعليم جيم ، وربما فعلت شيئا غبيا.أي مساعدة في تقدير كبير.

آسف عن تناول الكثير من عرض النطاق الترددي.

=============================================

# تشمل <AT898252.h>
# تشمل <rtx51tny.h>
# تشمل "lcd.h"
# تشمل <stdio.h>
# تشمل "delay.h"

/ / بت المخرجات
sbit بقيادة P1 = ^ 7 ؛
sbit C1 = P2 ^ 6 ؛
sbit C2 = P2 ^ 5 ؛
sbit C3 = P2 ^ 4 ؛
sbit أسلم ^ 2 = P3 ؛
sbit BusyOp ^ 3 = P3 ؛
sbit نغمات P3 ^ = 4 ؛
sbit الإصدار P3 ^ = 5 ؛
sbit AudVid = P3 ^ 6 ؛
الستروب الوماض sbit = P3 ^ 7 ؛

/ / بت إسهامات نشطة منخفض
sbit PTE = P2 ^ 7 ؛
sbit TradeClock ^ P1 = 6 ؛
sbit الخصوصية P1 = ^ 7 ؛
sbit OpenDoor = P3 ^ 0 ؛
sbit BusyIp = P3 ^ 1 ؛

/ / المتغيرات
غير موقعة DialNumber تشار ، KeyRead ؛
int ActualNumber غير موقعة ؛
غير موقعة تشار العنوان ؛
غير موقعة تشار الحلقة ؛
تشار buf [8] ؛

/ / وظائف
////////////////////////////////////////////////// //////////////////////////////
الفراغ CancelCall (الفراغ) / / يعيد جميع صناديق تقاطع
(
غير موقعة تشار العنوان ؛
القوية = 1 ؛
معالجة = 0 ؛
نغمة = 0 ؛
lcd_goto (0) ؛
lcd_puts ( "نهاية الرجاء الإنتظار") ؛
AudVid = 0 ؛ BusyOp = 1 ؛
DelayMs (200) ؛
القوية = 0 ؛ DelayUs (50)
؛ الستروب الوماض = 1 ؛
DelayMs (50) ؛
في حين أن (العنوان <255) (
p0 = العنوان ؛
القوية = 0 ؛ DelayUs (50)
؛ الستروب الوماض = 1 ؛
DelayMs (20) ؛
معالجة ؛)
lcd_goto (0) ؛
lcd_puts ( "اطلب رقم") ؛
)
////////////////////////////////////////////////// ////////////////////////////job0 () _task_ 0 (/ / بدء العمل الرئيسية
os_create_task (1)
و / / رويترز يبدأ الروتينية ار

lcd_init () ؛
DialNumber = 0 ؛
KeyRead = 0 ؛
ActualNumber = 0 ؛
أسلم = 0 ؛
CancelCall () ؛

في حين أن (1) (
قاد = 0 ؛
DelayMs (200) ؛
قاد = 1 ؛
DelayMs (200) ؛
C1 = 0 ؛ C2 = 0 ؛ C3 = 0 ؛
في حين أن ((P2 & 0x0F) == 0x0F) () / / في انتظار الرئيسية الصحافة
C1 = 0 ؛ C2 = 1 ؛ C3 = 1 ؛
KeyRead = (P2 & 0x0F) ؛
إذا كان (KeyRead == 14) DialNumber
= 1 ؛
إذا كان (KeyRead == 13) DialNumber
= 4 ؛
إذا كان (KeyRead == 11) DialNumber
= 7 ؛
إذا كان (KeyRead == 7) / / اعادة
(
DialNumber = 0 ؛
KeyRead = 0 ؛
ActualNumber = 0 ؛
C1 = 1 ؛ C2 = 1 ؛ C3 = 1 ؛
lcd_goto (0) ؛
lcd_puts ( "اطلب رقم") ؛
)

C1 = 1 ؛ C2 = 0 ؛ C3 = 1 ؛
KeyRead = (P2 & 0x0F) ؛
إذا كان (KeyRead == 14) DialNumber
= 2 ؛
إذا كان (KeyRead == 13) DialNumber
= 5 ؛
إذا كان (KeyRead == 11) DialNumber
= 8 ؛
إذا كان (KeyRead == 7) DialNumber
= 0 ؛

C1 = 1 ؛ C2 = 1 ؛ C3 = 0 ؛
KeyRead = (P2 & 0x0F) ؛
إذا كان (KeyRead == 14) DialNumber
= 3 ؛
إذا كان (KeyRead == 13) DialNumber
= 6 ؛
إذا كان (KeyRead == 11) DialNumber
= 9 ؛
إذا كان (KeyRead == 7) (/ / نداء الرئيسية بت هذا الخطأ ، وينبغي ألا تلغي الكلمة
ActualNumber = 0 ؛
DialNumber = 0 ؛
KeyRead = 0 ؛
CancelCall () ؛)

ActualNumber = (ActualNumber * 10) DialNumber ؛
إذا كان (ActualNumber> 0) (
lcd_clear () ؛
lcd_puts ( "الرقم") ؛
lcd_goto (0x09) ؛
sprintf (buf ، "٪ د" ، ActualNumber) ؛
lcd_puts (buf) ؛)

C1 = 0 ؛ C2 = 0 ؛ C3 = 0 ؛
في حين أن ((P2 & 0x0F)! = 0x0F) () / / في انتظار الإصدار الرئيسية
os_wait (K_TMO ، 5،0) ؛))

//================================================ =====
/ / الشيكات PTE وتفتح الباب أيضا البقول تحويلة الرقابة
job1 () (_task_ 1
حلقة = 0 ؛ الإصدار = 0 ؛

في حين أن (1) (

في حين أن (PTE == 1) (
أسلم = 0 ؛ DelayMs (50) ؛ أسلم = 1 ؛ DelayMs (50) ؛ أسلم = 0 ؛ / / لتغيير ةديسلا 1
os_wait (K_TMO ، 30،0) ؛)

/ / بيان احتياجات الصوت هنا ، عندما مكتوب
في حين أن (الحلقة <20) (
الإفراج = 1 ؛
أسلم = 0 ؛ DelayMs (50) ؛ أسلم = 1 ؛ DelayMs (50) ؛ أسلم = 0 ؛ / / لتغيير ةديسلا 1
DelayMs (255) ؛
حلقة ؛)
حلقة = 0 ؛ الإصدار = 0 ؛))
//================================================ =====

 
إذا ش ليس لدي لمدت لكم نظام التصحيح
استخدام واحدة من بوصفها التصحيح بقيادة المفتش العام inducator

وأدى وضع وخارجها.

عندما تدخل في تحديد وظيفة وعندما أدى
ش العيش مهمة تفجير القنبلة

هذا whay يو يمكن معرفة ما إذا قمتم به وظيفة جيدة أو يعيشون على خطأ

إذا كان لديك LCD يمكنك استخدامها على نحو أفضل من خلال ارسال الملاحظة الى LCD

جانبيبوبى

 
بفضل بوبى

Lcd لها ، لكنها لا تفعل شيئا.الروتينية تعمل طيب لو الرئيسي في البرنامج ، ولكن ليس بوصفها وظيفة.وأعتقد أنني لا نفهم تماما كيفية جعل رأس الملفات؟.

مايك

 
مرحبا ، GrandElf

إذا كنت lerning جيم تجنب حين تستطيع أي نظام التشغيل المتعددة.انها شيء كبير اخر على التعلم.

لم أكن undestand ما يحاولون القيام به.هل تحركت CancelCall ()
آخر *. ج وحدة؟إذا كانت الإجابة بنعم تعلن CancelCall () هل في وحدة رئيسية.

CancelCall باطلة (باطل) ؛ / / تعلن عن وظيفة ، وأنه نموذج لهذه الوظيفة
/ / هذا الخط يمكن نقلها إلى ملف
int externintvar الخارجي ؛ / / تعلن الخارجي المتغير int

يمكنك الحصول على مشاكل كبيرة إذا كنت تجنب الإعلان الخارجية
وظائف.

وثمة خطر آخر يمكن أن تأتي من حقيقة أن عددا من هذه المهمة 'sيضاعف
كومة.إذا كانت واحدة مهمة البرنامج يحتاج الى كومة من forexample60 بايت -- (البرنامج 5tasks يمكن أن تحتاج إلى 300 بايت.وقد يكفي رام الصغيرة
عقد هذا؟

حظ سعيد

 
بفضل الكاف

كل ما كان يحاول القيام به هو جعل CancelCall دالة.في الحقيقة مجرد ينظم الرئيسية.لا تعمل جيدا عندما يكون مع ذلك.

أنا لم لم يعلن تحويلة متغيرا في رأس ، وربما هذه هي المشكلة؟.سأحاول.

لم يتم العثور على دليل مرض جيم أن يفسر كيفية وظائف proerly / رأس العمل.ولست متأكدا إذا كنت حقا ينبغي أن تدرج داخل رأس المهام التي يستخدمونها ، أو للخروج من مجمع سيستخدم في هذه الهيئة الرئيسية للبرنامج.

في الكثير من طرق التجميع أسهل ، من أن لديك وفهم ما تقوم به (على أمل).

Thx ثانية مشورتكم ، وسأبقي عليها.

مايك

 
وأعتقد أنني قد تسببت في ارتباك قليلا هنا.وأنا بالطبع محاولة جعل مكتبة الملفات.الضحك بصوت مرتفع

dont تماما فهم العلاقة بين

. ح و ج

هل هي الحاجة إلى تقاسم نفس اسم الملف؟.

 
GrandAlf كتب :

وأعتقد أنني قد تسببت في ارتباك قليلا هنا.
وأنا بالطبع محاولة جعل مكتبة الملفات.
الضحك بصوت مرتفعdont تماما فهم العلاقة بين. ح و جهل هي الحاجة إلى تقاسم نفس اسم الملف؟.
 
مرة أخرى بفضل الكاف

أصبح واضحا للجميع الآن.

 

Welcome to EDABoard.com

Sponsor

Back
Top