সুচিপত্র:
- ধাপ 1: একটি পরীক্ষা বোর্ড গঠন করুন
- ধাপ 2: অ্যাসেম্বলার এবং অ্যাভ্রুডুড ইনস্টল করুন
- ধাপ 3: হ্যালো ওয়ার্ল্ড
- ধাপ 4: Hello.asm লাইন-বাই-লাইন
- ধাপ 5: উপসংহার
ভিডিও: AVR Assembler টিউটোরিয়াল 1: 5 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
আমি Atmega328p এর জন্য অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রাম কিভাবে লিখব তা নিয়ে একটি ধারাবাহিক টিউটোরিয়াল লেখার সিদ্ধান্ত নিয়েছি যা আরডুইনোতে ব্যবহৃত মাইক্রোকন্ট্রোলার। যদি লোকেরা আগ্রহী থাকে তবে আমি অবসর সময় শেষ না হওয়া পর্যন্ত সপ্তাহে এক বা তারও বেশি সময় চালিয়ে যাব, না হলে লোকেরা তাদের পড়া বন্ধ করবে।
আমি আর্ক লিনাক্স চালাচ্ছি এবং আমি একটি ব্রেডবোর্ডে সেট করা একটি atmega328p-pu তে কাজ করছি। আপনি আমার মতো একইভাবে এটি করতে পারেন অথবা আপনি কেবল আপনার কম্পিউটারে একটি আরডুইনো প্লাগ করতে পারেন এবং সেইভাবে মাইক্রোকন্ট্রোলারে কাজ করতে পারেন।
আমরা 328p এর জন্য প্রোগ্রামগুলি লিখব যেমনটি বেশিরভাগ আর্ডুইনোতে রয়েছে কিন্তু আপনার মনে রাখা উচিত যে এই একই প্রোগ্রাম এবং কৌশলগুলি Atmel মাইক্রোকন্ট্রোলারগুলির জন্যও কাজ করবে এবং পরে (যদি আগ্রহ থাকে) আমরা কিছু কাজ করব অন্যান্যগুলিও। মাইক্রোকন্ট্রোলারের বিবরণ Atmel ডেটা শীট এবং নির্দেশ সেট ম্যানুয়াল পাওয়া যাবে। আমি তাদের এই নির্দেশের সাথে সংযুক্ত করছি।
আপনার যা লাগবে তা এখানে:
1. একটি রুটিবোর্ড
2. একটি Arduino, বা শুধু মাইক্রোকন্ট্রোলার
3. লিনাক্স চালানো একটি কম্পিউটার
4. git: git clone https://github.com/Ro5bert/avra.git ব্যবহার করে আভ্রা অ্যাসেম্বলার এবং avrdude। যাইহোক, যদি আপনি github ব্যবহার করে সর্বশেষ সংস্করণটি পান তবে আপনি সমস্ত প্রয়োজনীয় ফাইলগুলিও পাবেন, অন্য কথায় এটি ইতিমধ্যে m328Pdef.inc এবং tn85def.inc ফাইল রয়েছে।
5. avrdude
আমার AVR অ্যাসেম্বলার টিউটোরিয়ালের সম্পূর্ণ সেট এখানে পাওয়া যাবে:
ধাপ 1: একটি পরীক্ষা বোর্ড গঠন করুন
আপনি কেবল আপনার arduino ব্যবহার করতে পারেন এবং এই টিউটোরিয়ালগুলিতে সবকিছু করতে পারেন যদি আপনি চান। যাইহোক, যেহেতু আমরা অ্যাসেম্বলি ভাষায় কোডিং সম্পর্কে কথা বলছি, আমাদের দর্শনটি সহজাতভাবে সমস্ত পেরিফেরালকে সরিয়ে দেওয়া এবং মাইক্রোকন্ট্রোলারের সাথে সরাসরি যোগাযোগ করা। সুতরাং আপনি কি মনে করেন না যে এটি করা আরও মজাদার হবে?
আপনারা যারা একমত, আপনি মাইক্রোকন্ট্রোলারকে আপনার আরডুইনো থেকে বের করে আনতে পারেন এবং তারপরে এখানে নির্দেশাবলী অনুসরণ করে একটি "ব্রেডবোর্ড আরডুইনো" নির্মাণ শুরু করতে পারেন:
ছবিতে আমি আমার সেটআপটি দেখিয়েছি যা একটি বড় রুটিবোর্ডে দুটি স্বতন্ত্র Atmega328p এর সমন্বয়ে গঠিত (আমি পরের টিউটোরিয়ালটি ওয়্যার্ড রাখতে এবং পরবর্তী মাইক্রোকন্ট্রোলারে লোড করতে সক্ষম হতে চাই)। আমার কাছে পাওয়ার সাপ্লাই সেট আপ আছে যাতে খুব উপরের রেলটি 9V হয় এবং অন্যরা সবাই ভোল্টেজ রেগুলেটর থেকে 5V হয়। আমি চিপ প্রোগ্রাম করার জন্য একটি FT232R ব্রেকআউট বোর্ড ব্যবহার করি। আমি সেগুলো কিনেছিলাম এবং নিজে বুটলোডার লাগিয়েছিলাম, কিন্তু যদি আপনি শুধু একটি Arduino থেকে একটি বের করে তাহলে এটি ইতিমধ্যেই ঠিক আছে।
মনে রাখবেন যে আপনি যদি এটি ATTiny85 দিয়ে চেষ্টা করে থাকেন তবে আপনি এখানে স্পার্কফুন টিনি প্রোগ্রামার পেতে পারেন: https://www.sparkfun.com/products/11801# এবং তারপর কেবল এটি আপনার কম্পিউটারের USB পোর্টে প্লাগ করুন। আপনাকে প্রথমে Attiny85 এ বুটলোডার ইনস্টল করতে হবে এবং সবচেয়ে সহজ উপায় হল Arduino IDE ব্যবহার করা। যাইহোক, আপনাকে ফাইল, এবং পছন্দগুলিতে ক্লিক করতে হবে, এবং তারপর এই নতুন বোর্ডের URL যোগ করুন: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json যা হবে আপনাকে বুটলোডার ইনস্টল করতে সক্ষম করুন (যদি আপনার ATtiny85 ইতিমধ্যে একটির সাথে না আসে।)
ধাপ 2: অ্যাসেম্বলার এবং অ্যাভ্রুডুড ইনস্টল করুন
আপনি এখন এই টিউটোরিয়ালের প্রথম ধাপে প্রদত্ত লিঙ্কগুলি থেকে অ্যাসেম্বলার এবং এভারডুড ডাউনলোড এবং ইনস্টল করতে পারেন। সম্ভবত আপনি যদি ইতিমধ্যে Arduino এর সাথে কাজ করে থাকেন তবে আপনি ইতিমধ্যে avrdude ইনস্টল করেছেন।
আভ্রা ইনস্টল করার পরে আপনি লক্ষ্য করবেন যে একটি সাব -ডাইরেক্টরি রয়েছে যার সাথে এটি "সোর্স" নামে পরিচিত এবং সেই ডিরেক্টরিতে ফাইলগুলির একটি গুচ্ছ রয়েছে। এই সব মাইক্রোকন্ট্রোলার যা আপনি অভ্র দিয়ে প্রোগ্রাম করতে পারেন। আপনি এখনই লক্ষ্য করবেন যে 328p এর জন্য কোন ফাইল নেই যা আমরা এখানে ব্যবহার করছি। আমি একটি সংযুক্ত করেছি। ফাইলটি m328Pdef.inc বলা উচিত এবং আপনাকে অন্তর্ভুক্ত ডিরেক্টরি বা আপনার পছন্দের যে কোনও জায়গায় রাখা উচিত। আমরা আমাদের সমাবেশ ভাষা কর্মসূচিতে এটি অন্তর্ভুক্ত করব। এই সমস্ত কাজটি হল ডাটা শীট থেকে মাইক্রোকন্ট্রোলারের নামের প্রতিটি রেজিস্টার দেওয়া যাতে আমাদের তাদের হেক্সিডেসিমাল নাম ব্যবহার করতে না হয়। উপরে অন্তর্ভুক্ত ফাইলটিতে "প্রগমা নির্দেশনা" রয়েছে কারণ এটি সি এবং সি ++ প্রোগ্রামিংয়ের জন্য ডিজাইন করা হয়েছিল। আপনি যদি অ্যাসেম্বলারকে "প্রগমা নির্দেশনা উপেক্ষা করে" থুথু ফেলতে দেখে ক্লান্ত হয়ে যান তবে অভিযোগগুলি কেবল ফাইলে যান এবং #pragma থেকে শুরু হওয়া সমস্ত লাইন মুছে ফেলুন বা মন্তব্য করুন
ঠিক আছে, এখন আপনার মাইক্রোকন্ট্রোলার প্রস্তুত, আপনার অ্যাসেম্বলার প্রস্তুত এবং আপনার প্রোগ্রামার প্রস্তুত, আমরা আমাদের প্রথম প্রোগ্রাম লিখতে পারি।
দ্রষ্টব্য: যদি আপনি ATmega328P এর পরিবর্তে ATtiny85 ব্যবহার করেন তাহলে আপনার tn85def.inc নামে একটি ভিন্ন অন্তর্ভুক্ত ফাইল প্রয়োজন। আমি এটি সংযুক্ত করব তাই আমি এটি পেতে এবং এটি নিজে সংকলন করার সুপারিশ করছি: git clone
ধাপ 3: হ্যালো ওয়ার্ল্ড
এই প্রথম টিউটোরিয়ালের লক্ষ্য হল যে কোন নতুন ভাষা শেখার সময় বা যে কোন নতুন ইলেকট্রনিক্স প্ল্যাটফর্ম অন্বেষণ করার সময় লিখিত স্ট্যান্ডার্ড প্রথম প্রোগ্রাম তৈরি করা। "ওহে বিশ্ব!." আমাদের ক্ষেত্রে আমরা কেবল একটি অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রাম লিখতে চাই, এটি একত্রিত করতে এবং আমাদের মাইক্রোকন্ট্রোলারে আপলোড করতে চাই। প্রোগ্রামটি একটি LED চালু করবে। এলইডি কে "ব্লিংক" করার মতো করে যেমন তারা স্বাভাবিক আরডুইনো হ্যালো ওয়ার্ল্ড প্রোগ্রামের জন্য করে থাকে আসলে সমাবেশের ভাষায় এটি অনেক বেশি জটিল একটি প্রোগ্রাম এবং তাই আমরা এখনও তা করব না। আমরা ন্যূনতম অপ্রয়োজনীয় ফ্লাফ সহ সহজ "বেয়ার হাড়" কোড লিখতে যাচ্ছি।
প্রথমে PB5 থেকে একটি LED সংযোগ করুন (পিনআউট ডায়াগ্রাম দেখুন) যাকে একটি আর্ডুইনোতে ডিজিটাল আউট 13 বলা হয়, একটি 220 ওহম প্রতিরোধক, তারপর GND- এ। I.e.
PB5 - LED - R (220 ohm) - GND
এখন প্রোগ্রাম লিখতে। আপনার প্রিয় পাঠ্য সম্পাদক খুলুন এবং "hello.asm" নামে একটি ফাইল তৈরি করুন
; hello.asm
; একটি LED চালু করে যা PB5 (ডিজিটাল আউট 13) -এ সংযুক্ত থাকে।
উপরের কোডটি। আমরা এক মিনিটের মধ্যে লাইন-বাই-লাইনের মধ্য দিয়ে যাব, কিন্তু প্রথমে নিশ্চিত হয়ে নিন যে আমরা এটি আপনার ডিভাইসে কাজ করতে পারি।
আপনি ফাইলটি তৈরি করার পরে, তারপর একটি টার্মিনালে আপনি এটিকে নিম্নরূপ একত্রিত করুন:
অভ্র হ্যালো.এসএম
এটি আপনার কোড একত্রিত করবে এবং hello.hex নামে একটি ফাইল তৈরি করবে যা আমরা নিম্নরূপ আপলোড করতে পারি:
avrdude -p m328p -c stk500v1 -b 57600 -P /dev /ttyUSB0 -U ফ্ল্যাশ: w: hello.hex
আপনি যদি ব্রেডবোর্ড আরডুইনো ব্যবহার করেন তবে উপরের কমান্ডটি চালানোর আগে আপনাকে রুটিবোর্ড আরডুইনোতে রিসেট বোতামটি চাপতে হবে। মনে রাখবেন যে আপনাকে সামনে একটি সুডো যুক্ত করতে হবে বা এটি রুট হিসাবে চালাতে হবে। এছাড়াও লক্ষ্য করুন যে কিছু arduino এর (যেমন Arduino UNO) আপনাকে সম্ভবত বিটরেট -b 115200 এবং পোর্ট -P /dev /ttyACM0 (যদি আপনি একটি অবৈধ ডিভাইস স্বাক্ষর সম্পর্কে avrdude থেকে একটি ত্রুটি পান তবে কেবল একটি যোগ করুন - কমান্ড এফ)
যদি সবকিছু ঠিক মত কাজ করে তাহলে এখন আপনার একটি LED জ্বলবে….. "হ্যালো ওয়ার্ল্ড!"
আপনি যদি ATtiny85 ব্যবহার করেন তাহলে avrdude কমান্ড হবে:
avrdude -p attiny85 -c usbtiny -U flash: w: hello.hex
ধাপ 4: Hello.asm লাইন-বাই-লাইন
এই প্রারম্ভিক টিউটোরিয়ালটি শেষ করার জন্য আমরা hello.asm প্রোগ্রামের লাইন-বাই-লাইন দিয়ে দেখব কিভাবে এটি কাজ করে।
; hello.asm
; একটি LED চালু করে যা PB5 এর সাথে সংযুক্ত (13 ডিজিটাল)
সেমিকোলনের পরের সবকিছুই অ্যাসেম্বলার দ্বারা উপেক্ষা করা হয় এবং তাই এই প্রথম দুটি লাইন কেবল "মন্তব্য" ব্যাখ্যা করে যে প্রোগ্রামটি কী করে।
। অন্তর্ভুক্ত "./m328Pdef.inc"
এই লাইনটি অ্যাসেম্বলারকে আপনার ডাউনলোড করা m328Pdef.inc ফাইলটি অন্তর্ভুক্ত করতে বলে। আপনি এটিকে অনুরূপ ফাইলগুলির একটি ডিরেক্টরিতে রাখতে চান এবং তারপরে সেখানে নির্দেশ করতে উপরের লাইনটি পরিবর্তন করতে পারেন।
ldi r16, 0b00100000
ldi মানে "অবিলম্বে লোড" এবং একত্রিতকারীকে এই ক্ষেত্রে একটি কার্যকরী রেজিস্টার, r16 নিতে এবং এটিতে একটি বাইনারি সংখ্যা লোড করতে বলা হয়, এই ক্ষেত্রে 0b00100000। সামনে 0b বলে যে আমাদের সংখ্যাটি বাইনারি। আমরা চাইলে আমরা আরেকটি বেস বেছে নিতে পারতাম, যেমন হেক্সাইডসিমাল। সেক্ষেত্রে আমাদের সংখ্যা হবে 0x20 যা 0b00100000 এর জন্য হেক্সাইডসিমাল। অথবা আমরা 32 ব্যবহার করতে পারতাম যা একই সংখ্যার জন্য 10 দশমিক বেস।
অনুশীলন 1: উপরের লাইনে সংখ্যাটি হেক্সিডেসিমেল এবং তারপরে আপনার কোডের দশমিক করার চেষ্টা করুন এবং যাচাই করুন যে এটি এখনও প্রতিটি ক্ষেত্রে কাজ করে।
বাইনারি ব্যবহার করা সহজ যদিও পোর্ট এবং রেজিস্টারগুলি কাজ করে। আমরা ভবিষ্যতে টিউটোরিয়ালগুলিতে atmega328p এর পোর্ট এবং রেজিস্টার নিয়ে আরও বিস্তারিত আলোচনা করব কিন্তু আপাতত আমি শুধু বলব যে আমরা r16 কে আমাদের "ওয়ার্কিং রেজিস্টার" হিসাবে ব্যবহার করছি যার অর্থ আমরা এটিকে একটি ভেরিয়েবল হিসাবে ব্যবহার করতে যাচ্ছি যা আমরা সঞ্চয় করি সংখ্যা। একটি "নিবন্ধন" 8 বিট একটি সেট। অর্থ 8 টি দাগ যা 0 বা 1 হতে পারে ('বন্ধ' বা 'চালু')। যখন আমরা উপরের লাইন ব্যবহার করে রেজিস্টারে 0b00100000 বাইনারি নম্বরটি লোড করি তখন আমরা কেবল সেই সংখ্যাটি রেজিস্টার r16 এ সংরক্ষণ করেছি।
DDRB, r16 আউট
এই লাইনটি কম্পাইলারকে R16 রেজিস্টারের বিষয়বস্তু DDRB রেজিস্টারে কপি করতে বলে। ডিডিআরবি মানে "ডেটা ডাইরেকশন রেজিস্টার বি" এবং এটি পোর্টবিতে "পিন" সেট করে। 328p এর পিনআউট মানচিত্রে আপনি দেখতে পাচ্ছেন যে PB0, PB1,…, PB7 লেবেলযুক্ত 8 টি পিন রয়েছে। এই পিনগুলি "পোর্টবি" এর "বিট" প্রতিনিধিত্ব করে এবং যখন আমরা DDRB রেজিস্টারে 00100000 বাইনারি সংখ্যা লোড করি তখন আমরা বলছি যে আমরা PB0, PB1, PB2, PB3, PB4, PB6, এবং PB7 সেট করতে চাই যেহেতু INPUT পিন আছে তাদের মধ্যে 0 গুলি, এবং PB5 একটি আউটপুট পিন হিসাবে সেট করা হয়েছে যেহেতু আমরা সেই স্থানে 1 রেখেছি।
পোর্টবি আউট, r16
এখন যেহেতু আমরা পিনের দিকনির্দেশ ঠিক করেছি আমরা এখন তাদের উপর ভোল্টেজ সেট করতে পারি। উপরের লাইনটি আমাদের স্টোরেজ রেজিস্টার r16 থেকে পোর্টবিতে একই বাইনারি নম্বর কপি করে। এটি পিন PB5 থেকে উচ্চ যা 5 ভোল্ট ব্যতীত সমস্ত পিন 0 ভোল্টে সেট করে।
ব্যায়াম 2: একটি ডিজিটাল মাল্টিমিটার নিন, কালো সীসাটি গ্রাউন্ডে (GND) লাগান এবং তারপরে প্রতিটি পিন PB0 দিয়ে PB7 দিয়ে লাল সীসা দিয়ে পরীক্ষা করুন। প্রতিটি পিনের ভোল্টেজগুলি কি ঠিক পোর্টবিতে 0b00100000 লাগানোর সাথে সম্পর্কিত? যদি এমন কিছু থাকে যা না হয়, তাহলে আপনি কেন তা মনে করেন? (পিন ম্যাপ দেখুন)
শুরু:
rjmp স্টার্ট
অবশেষে, উপরের প্রথম লাইনটি একটি "লেবেল" যা কোডে একটি স্পট লেবেল করে। এই ক্ষেত্রে সেই স্থানটিকে "স্টার্ট" হিসাবে লেবেল করা। দ্বিতীয় লাইনটি বলে "স্টার্ট লেবেলে আপেক্ষিক লাফ।" নেট ফলাফল হল যে কম্পিউটারটি একটি অসীম লুপে স্থাপন করা হয়েছে যা কেবল সাইকেল চালাতে শুরু করে। আমাদের এটি দরকার কারণ আমরা প্রোগ্রামটি কেবল শেষ করতে পারি না, বা একটি চূড়া থেকে পড়ে যেতে পারি না, প্রোগ্রামটি কেবল আলো জ্বালানোর জন্য চলতে থাকে।
অনুশীলন 3: আপনার কোড থেকে উপরের দুটি লাইন সরান যাতে প্রোগ্রামটি একটি খাড়া থেকে পড়ে যায়। কি ঘটেছে? আপনার এমন কিছু দেখা উচিত যা duতিহ্যবাহী "পলক" প্রোগ্রামের মতো দেখায় যা Arduino তাদের "হ্যালো ওয়ার্ল্ড!" হিসাবে ব্যবহার করে। কেন আপনি মনে করেন এটি এভাবে কাজ করে? (প্রোগ্রামটি যখন একটি চূড়া থেকে পড়ে তখন কী ঘটবে তা নিয়ে চিন্তা করুন …)
ধাপ 5: উপসংহার
আপনি যদি এতদূর পেয়ে থাকেন তবে অভিনন্দন! আপনি এখন সমাবেশ কোড লিখতে, এটি একত্রিত করতে এবং এটি আপনার মাইক্রোকন্ট্রোলারে লোড করতে সক্ষম।
এই টিউটোরিয়ালে আপনি নিম্নলিখিত কমান্ডগুলি কীভাবে ব্যবহার করবেন তা শিখেছেন:
ldi hregister, সংখ্যাটি একটি সংখ্যা (0-255) একটি উচ্চ অর্ধেক রেজিস্টারে লোড করে (16-31)
ioregister এর বাইরে, একটি রেজিস্টার থেকে একটি I/O রেজিস্টারে একটি নম্বর কপি রেজিস্টার করুন
rjmp লেবেল "লেবেল" দ্বারা লেবেল করা প্রোগ্রামের লাইনে ঝাঁপিয়ে পড়ে (যা 204 টি নির্দেশের বেশি হতে পারে না - যেমন আপেক্ষিক লাফ)
এখন যেহেতু এই বুনিয়াদি পথের বাইরে, আমরা কম্পাইল এবং আপলোড করার মেকানিক্স নিয়ে আলোচনা না করেই আরো আকর্ষণীয় কোড এবং আরো আকর্ষণীয় সার্কিট এবং ডিভাইস লিখতে পারি।
আমি আশা করি আপনি এই সূচনা টিউটোরিয়ালটি উপভোগ করেছেন। পরবর্তী টিউটোরিয়ালে আমরা আরেকটি সার্কিট কম্পোনেন্ট (একটি বোতাম) যোগ করব এবং ইনপুট পোর্ট এবং সিদ্ধান্তগুলি অন্তর্ভুক্ত করার জন্য আমাদের কোড প্রসারিত করব।
প্রস্তাবিত:
AVR Assembler টিউটোরিয়াল 2: 4 ধাপ
AVR Assembler Tutorial 2: এই টিউটোরিয়ালটি " AVR Assembler Tutorial 1 " এর ধারাবাহিকতা আপনি যদি টিউটোরিয়াল 1 এর মধ্য দিয়ে না যান তবে আপনার এখনই থামতে হবে এবং প্রথমে এটি করা উচিত।
AVR Assembler টিউটোরিয়াল 6: 3 ধাপ
AVR Assembler Tutorial 6: টিউটোরিয়াল 6 এ স্বাগতম! আজকের টিউটোরিয়ালটি সংক্ষিপ্ত হবে যেখানে আমরা একটি atmega328p এবং অন্য দুটি পোর্ট ব্যবহার করে তাদের মধ্যে তথ্য আদান -প্রদানের সহজ পদ্ধতি তৈরি করব। আমরা তারপর টিউটোরিয়াল 4 এবং রেজিস্টার থেকে পাশা রোলার নেব
AVR Assembler টিউটোরিয়াল 8: 4 ধাপ
AVR Assembler Tutorial 8: Tutorial 8 এ স্বাগতম! এই ছোট টিউটোরিয়ালে আমরা আমাদের প্রোটোটাইপিং উপাদানগুলিকে আলাদা " মুদ্রিত " সার্কিট বোর্ড. দ্য
AVR Assembler টিউটোরিয়াল 7:12 ধাপ
AVR Assembler টিউটোরিয়াল 7: টিউটোরিয়াল 7 এ স্বাগতম! আজ আমরা প্রথমে দেখাবো কিভাবে একটি কীপ্যাড স্ক্যাঞ্জ করা যায়, এবং তারপর দেখাবো কিভাবে কীপ্যাডের সাথে যোগাযোগের জন্য এনালগ ইনপুট পোর্টগুলি ব্যবহার করতে হয়। ইনপুট. আমরা কীপ্যাডটি তারে লাগাবো তাই
AVR Assembler টিউটোরিয়াল 9: 7 ধাপ
AVR অ্যাসেম্বলার টিউটোরিয়াল 9: টিউটোরিয়াল 9 এ স্বাগতম।আজ আমরা দেখাব কিভাবে আমাদের ATmega328P এবং AVR অ্যাসেম্বলি ল্যাঙ্গুয়েজ কোড ব্যবহার করে 7-সেগমেন্ট ডিসপ্লে এবং 4-ডিজিটের ডিসপ্লে উভয়ই নিয়ন্ত্রণ করতে হয়। এটি করার সময় আমাদের স্ট্যাকটি কীভাবে ব্যবহার করতে হবে সে সম্পর্কে আমাদের ডাইভারশন নিতে হবে