بورلاند دلفي 2.0/3.0 بوظائفه القوية وبرمجته المريحة والسريعة
ويحبه غالبية المبرمجين. ولكن عند استخدامه لكتابة برامج التحكم الصناعي، فإنك تحتاج إلى ذلك
يعمل الجهاز الخارجي المتصل بالكمبيوتر، أي أنه يقرأ عنوان الإدخال/الإخراج ويكتبه مباشرة.
في هذا الوقت، يبدو أن البرنامج لديه بعض العيوب.
ردا على هذه المشكلة، يستخدم المؤلف دلفي 2.0/3.0 للكتابة في شكل التجميع المضمن
تم تثبيت وحدة PORT95.PAS، والتي يمكنها بسهولة تحقيق عمليات القراءة والكتابة المباشرة على عناوين الإدخال/الإخراج.
الكود بسيط وسريع في التنفيذ.
عند استخدامه، ما عليك سوى إضافة PORT95.PAS إلى ملف المشروع وإضافة المنفذ إلى المستخدمين.
95، يمكنك تشغيل منفذ الإدخال/الإخراج مباشرة في التطبيق.
طريقة التنفيذ المحددة والكود المصدري لـ PORT95.PAS هي كما يلي:
وحدة Port95؛
واجهة
وظيفة PortReadByte(Addr:Word): بايت؛
وظيفة PortReadWord(Addr:Word): Word;
وظيفة PortReadWordLS(Addr:Word): Word;
PROcedure PortWriteByte(Addr:Word; Value:Byte);
الإجراء PortWriteWord(Addr:Word; Value:Word);
الإجراء PortWriteWordLS(Addr:Word; Value:Word);
تطبيق
{*
* منفذ قراءة وظيفة البايت
* المعلمة: عنوان المنفذ
*الإرجاع: قيمة البايت من المنفذ المحدد
*}
وظيفة PortReadByte(Addr:Word): المجمع؛
ستير.
asm
موفدكس، فأس
في آل، دي إكس
نهاية؛
{*
* منفذ عالي السرعة لقراءة وظيفة Word
* المعلمة: عنوان المنفذ
* العودة: قيمة الكلمة من منفذ معين
* تعليق: قد تكون هناك مشكلة مع بعض البطاقات وأجهزة الكمبيوتر
لا يمكن الوصول إلى الكلمة بأكملها، وعادة ما تعمل.
*}
وظيفة PortReadWord(Addr:Word): مجمع Word؛
ستير.
asm
موفدكس، فأس
في فأس، دي إكس
نهاية؛
{*
* منفذ منخفض السرعة وظيفة قراءة الكلمة
* المعلمة: عنوان المنفذ
*الإرجاع: قيمة الكلمة من منفذ معين
*تعليق: العمل في الحالات، فقط لضبط التأخير إذا لزم الأمر
*}
وظيفة PortReadWordLS(Addr:Word): مُجمّع Word؛
تسجيل;
ثابت
تأخير = 150؛
// حسب سرعة وحدة المعالجة المركزية وسرعة البطاقات
asm
موفدكس، فأس
في آل، دي إكس
// اقرأ منفذ LSB
موف إيكس، تأخير
@1:
حلقة @1 // تأخير بين قراءتين
إكستشج آه، آل
إنك دي إكس
//المنفذ+1
في AL، DX // قراءة منفذ MSB
XCHG AH,AL // استعادة ترتيب البايت
نهاية؛
{* وظيفة كتابة منفذ البايت *}
الإجراء PortWriteByte(Addr:Word; Value:Byte assemble);
ص ؛
asm
إكستشغاكس، دي إكس
خارج دي إكس، آل
نهاية؛
{*
* إجراء كتابة الكلمات بمنفذ عالي السرعة
* تعليق: قد تكون هناك مشكلة مع بعض البطاقات وأجهزة الكمبيوتر
لا يمكن الوصول إلى الكلمة بأكملها، وعادة ما تعمل.
*}
الإجراء PortWriteWord(Addr:word; Value:word assemble);
ص ؛
asm
إكستشغاكس، دي إكس
أوتدكس، فأس
نهاية؛
{*
* إجراء كتابة Word للمنفذ منخفض السرعة
*}
الإجراء PortWriteWordLS(Addr:word; Value:word assemb
سجل.
ثابت
تأخير = 150؛
// حسب سرعة وحدة المعالجة المركزية وسرعة البطاقات
asm
إكستشغاكس، دي إكس
خارج دي إكس، آل
موف إيكس، تأخير
@1:
حلقة @ 1
إكستشج آه، آل
إنك دي إكس
خارج دي إكس، آل
نهاية؛
end.//نهاية الوحدة
إن PORT95.PAS أعلاه مناسب لأنظمة التشغيل Delphi 2.0/3.0 وWindows 95
.