পিআইসি মেমরি মানচিত্র বুঝতে কিছু সহায়তা দরকার


9

কিছু পটভূমি। আমি বিভিন্ন ধরণের ছবি তোলার জন্য পিককিট 2 সহ এমপিএলএক্স ব্যবহার করি। এই মুহুর্তে এটি 16F887। আমি হাই-টেক পিআইসিসি লাইট সরঞ্জাম চেইনে লেগে থাকার চেষ্টা করি তবে কিছু জিনিস কীভাবে একত্রিত হয় তা নিয়ে আমি ক্রমশ অসন্তুষ্ট হয়ে উঠছি। অপারেশনগুলি যা আপেক্ষিকভাবে দ্রুত হওয়া উচিত (8 মেগাহার্টজে 500ns নির্দেশ চক্র বিবেচনা করে) সম্পূর্ণ হতে 20us অবধি নেওয়া হচ্ছে। সুতরাং আমি এটি মোকাবেলায় আমার নিজের এএসএম কোড সন্নিবেশ করা শুরু করেছি।

তবে 20 পৃষ্ঠায় ডেটাশিটে প্রদত্ত মেমরি মানচিত্রটি বুঝতে আমার অসুবিধা হচ্ছে ।

প্রোগ্রামের মেমরিটি 0005 ঘন্টা শুরু হয়। তবে পৃষ্ঠা 23 উদাহরণস্বরূপ পোর্ট এ-এর মতো বিশেষ উদ্দেশ্যে রেজিস্টারগুলির ফাইল ঠিকানাগুলি দেখায়। পোর্ট এ এর ​​ঠিকানা "05h" হিসাবে দেখানো হয়েছে।

আমি কীভাবে একটি মেমরির অবস্থান 0005h, এবং 05h এ অবস্থিত বিশেষ উদ্দেশ্যে রেজিস্ট্রারের মধ্যে পার্থক্য করতে পারি তা নিয়ে আমি বিভ্রান্ত। আমি কীভাবে বিশেষ উদ্দেশ্যে নিবন্ধগুলি রেফারেন্স করব?

আমি পুরানো এইচসি 11 চিপগুলির জন্য বেশ বিস্তৃত একত্রিতকারী প্রোগ্রামিং করেছি, তবে এটি পিক এসএম কোডিংয়ের মধ্যে আমার প্রথম উদ্যোগ। এখানে যে কোনও সহায়তা প্রশংসিত হবে।

উত্তর:


8

পিআইসি "হার্ভার্ড আর্কিটেকচার" নামে পরিচিত যা ব্যবহার করে যার অর্থ এটি নির্দেশ এবং ডেটার জন্য পৃথক ঠিকানার স্থান রয়েছে has

কোনও ঠিকানা কোনও নিবন্ধককে নির্দেশিত করে কিনা বা কোনও নির্দেশনা এটি ব্যবহৃত হয় সেই প্রসঙ্গে নির্ভর করে।

২.১ বিভাগে "প্রোগ্রাম মেমোরি অর্গানাইজেশন" এর চিত্রগুলি প্রোগ্রাম মেমরি, বা নির্দেশের ঠিকানা স্পেস সম্পর্কে। বিভাগ ২.২ "ডেটা মেমোরি অর্গানাইজেশন" এর চিত্রগুলি রেজিস্টার এবং বিশেষ ফাংশন রেজিস্টার, বা ডেটা মেমরি ঠিকানার স্থান সম্পর্কিত about


সুতরাং আমি যদি "MOVWF 0x0005" বলেছিলাম, পিআইসি জানতে পারে যে আমি ডাটা মেমরিতে 0x0005 ঠিকানা উল্লেখ করছি, এবং প্রোগ্রামের স্থানটি নয়?
মাইকেল

@ মিশেল: হ্যাঁ কোনও নির্দেশিকায় ঠিকানা প্রোগ্রাম বা ডেটা মেমরিকে নির্দেশ করে কিনা তা নির্দেশের উপর নির্ভর করে। এটি প্রতিটি অপকোডের জন্য বর্ণনা করা হয়েছে। মূলত, যদি এটি MOVWF এর মতো ডেটা নিয়ে কাজ করে তবে তা ডেটা মেমরির অ্যাক্সেস করবে। যদি এটি GOTO এর মতো প্রোগ্রামের ঠিকানাগুলির সাথে সম্পর্কিত হয়, তবে এটি প্রোগ্রামের মেমোরিতে অ্যাক্সেস করবে।
অলিন Lathrop

ধন্যবাদ. আমি অনুমান করি যে এইচসি 11 আমি অ্যাসেমব্লার করতাম ভন নিউম্যান আর্চ। যখন আমি কেবল শিখছিলাম তখন প্রায়শই আমার নির্দেশ কোডটি লেখার সমস্যা হয়। আবার আপনাকে ধন্যবাদ.
মাইকেল

3

ডেভ কী বলেছিল, তবে আমি এটিও উল্লেখ করতে চাই যে প্রোগ্রাম মেমোরিটি 0 থেকে শুরু হয়, 5 নয় a রিসেটে, প্রসেসরটি পিসিকে 0 তে সেট করে এবং চলমান শুরু করে। একটি বিঘ্নের মধ্যে, প্রসেসর কার্যকরভাবে অবস্থান 4 এ কল দেয় এবং গ্লোবাল ইন্টারপেন সক্ষম বিটটি বন্ধ করে দেয়। প্রোগ্রাম মেমরি অবস্থান 5 বিশেষ নয়, এটি ব্যতীত আপনার যদি একটি বাধা রুটিন থাকে তবে এটি বিঘ্নিত রুটিনের দ্বিতীয় নির্দেশ হবে।


হ্যাঁ তা বোঝা গেল। আমার অর্থ 5 প্রথম জেনেরিক নির্দেশিকার ঠিকানা।
মাইকেল

@ মিশেল: না, তাও হয় না। যেমনটি আমি বলেছি, প্রোগ্রামের মেমরির অবস্থানের বিষয়ে সত্যিকারের বিশেষ কিছু নেই 5. লেবেলটির প্রথম জেনেরিক নির্দেশিকার ঠিকানাটি এর জন্য কোনও অর্থ দেয় না। প্রথম নির্দেশের ঠিকানাটি 0 হয় এবং 4 টি বাধার কারণে খুব সামান্য বিশেষ। বাকীগুলি আসলেই বিশেষ নয় এবং "জেনেরিক" এই প্রসঙ্গে কোনও অর্থ দেয় না।
অলিন ল্যাথ্রপ

ঠিক আছে, এটির প্রথম পুনঃস্থাপন, অ-বিঘ্নিত ভেক্টর ঠিকানা সম্পর্কে কীভাবে? আমি যা বলছি তা হ'ল আমি যা বোঝার চেষ্টা করছি তা বুঝতে পারছি।
মাইকেল 22
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.