সবাইকে আমার পক্ষ থেকে আবার স্বাগতম, আশা করি সবাই ভালই আছেন। আমি অন্তর আহমেদ। আজ আমি আপনাদের মাইক্রোকন্ট্রোলার bit, Register এবং নাম্বার সিস্টেম সম্পর্কে কিছু বলবো। আমি ২য় পর্বে বলেছিলাম বিট রেজিস্টারের কথা যা আমাদের প্রোগ্রামিং এর প্রতিটা পদে পদে প্রয়োজন। এটি মূলত কোন পর্ব না। ২য় পর্বের একটি এক্সট্রা অংশ বিশেষ।
পরিচ্ছেদসমূহ
Register:
-> PIC এর অনেক register থাকে। যেমন, Timer, ADC, PORT, TRIS ইত্যাদি ইত্যাদি। সাধারণত রেজিস্টার 8 bit,10 bit, 16 bit এর হয়ে থাকে। একটি PIC এর ভেতরে প্রায় অনেক গুলো রেজিস্টার আছে এবং এই রেজিস্টার গুলো কত বিটের তা আমরা সেই PIC এর datasheet দেখে জানতে পারব।
নিচের ছবিটি দেখুন। এইটা 16f72 মডেলের একটি মাইক্রোকন্ট্রোলারের datasheet এর অংশ। এখান থেকে আমরা জানতে পারছি- এই PIC এ তিনটা টাইমার আছে যা যথাক্রমে Timer0 = 8 bit, Timer1 = 16 bit, Timer2 = 8 bit। ইত্যাদি আরও অনেক কিছু আমরা datasheet থেকেই জানতে পারি। (PIC এর Timer নিয়ে আমি পরবর্তীতে একটি পর্ব লিখব)
Bit:
-> উপরে আমরা দেখলাম রেজিস্টার 8 bit, 16 bit বা তার বেশিও হয়ে থাকে। রেজিস্টারের প্রতিটি বিটকেই মূলত বিট বলে। যেমন, PORTB register এর PORTB.0, PORTB.1, PORTB.2…. ইত্যাদি হল বিট। তাহলে আমরা বলতেই পারি বিট হল রেজিস্টারের একক।
এখন আমরা উপরের ছবি দেখে বুঝতেই পারছি, PORTA, PORTB, PORTC হল PORT Register এবং RC0 বা PORTC.0, RC1 বা PORTC.1 ইত্যাদি হল উক্ত রেজিস্টারের এর বিট।
মাইক্রোকন্ট্রোলার নিয়ে কাজ করতে হলে আমাদের অবশ্যই Register, Bit সম্পর্কে ভালো ধারনা থাকতে হবে।
Binary কোড কি?
-> 0 এবং 1 ই binary number. মাত্র ২টা অংক। অর্থাৎ যে নাম্বার পদ্ধতিতে শুধুমাত্র 0 এবং 1 দিয়ে সব কিছু করা হয় তাকেই বাইনারি কোড বা নাম্বার পদ্ধতি বলে।
Decimal কোড কি?
-> 0 থেকে ৯ পর্যন্ত decimal number। মোট ১০টা অংক। আমরা সাধারণত যে নাম্বার ব্যবহার করি সেটাই decimal number.
Hexadecimal কোড কি?
-> 0 থেকে ৯ এবং A, B, C, D, E, F. মোট ১৬টা অংক।
নাম্বার রূপান্তকরন প্রক্রিয়াঃ
আমি আপনাদের সুত্র দিয়ে সময় নষ্ট করে রূপান্তর করা শিখাতে চাই না। windows এর সাথে দেয়া সাধারণ calculator দিয়েই আমরা রূপান্তর করা শিখব। নিচে প্রক্রিয়া দেখানো হলঃ
১। প্রথমে windows এর calculator প্যানেল ওপেন করুন। নিচের মত একটি window আসবেঃ
২। View> Programmer অথবা কীবোর্ড থেকে alt+3 চাপুন।
৩। নিচের মত window আসবে। তারপর নিচের ছবির মত setting করে নিনঃ
৪। এখন decimal কোড সিলেক্ট করা আছে। উদাহরণস্বরূপ আমি ২৫৫ লিখেছি। ছবিতে দেখুন আমরা সাথে সাথে বাইনারি কোড পেয়ে যাচ্ছি। এখন আপনি dec এর জায়গায় অন্য কোনটা সিলেক্ট করেই রূপান্তর করতে পাবেন। যেমন, এখন যদি আমরা Hex সিলেক্ট করি তাহলে দেখতে পারব “FF” দেখাচ্ছে। তারমানে ২৫৫ এর Hex code হল “FF”.
Hex = hexadecimal, Dec = decimal, Oct = Octal, Bin = Binary.
Register, bit এবং নাম্বারিং সিস্টেম এর একটি উদাহরনঃ
ধরি, আমরা কোন একটি মাইক্রোকন্ট্রোলারের PORTB রেজিস্টার এর RB.0, RB.2, RB.5, RB.7 বিট গুলো আউটপুট করব এবং বাকি বিট গুলো ইনপুট করব। আমি আগের পর্বে বলেছিলাম PORT আউটপুট/ইনপুট নির্ধারণের রেজিস্টার হল TRIS Register. তাহলে দেখে নেই কিভাবে আমরা উক্ত বিট/পিন গুলো আউটপুট/ইনপুট হিসেবে নির্ধারণ করবঃ
আমরা জানি, ইনপুট = ১, আউটপুট = ০; তাহলে,
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0 1 0 1 1 0 1 0
[ক্রম অবশ্যই বাম দিকে সর্বোচ্চ থেকে দান দিকে সর্বনিম্ন হবে।]
আমরা বাইনারিতে পেয়ে গেলাম, TRISB = 0b01011010;
// এখানে “0b” হল MikroC compiler এর বাইনারি নির্দেশক। এটা লিখলে compiler বুঝলে পারে আপনি বাইনারি কোড ইনপুট করেছেন। এবং TRIS এর সাথে “B” হওয়ার কারণ আমরা PORTB নিয়ে কাজ করতেছি।
নাম্বার রূপান্তর করেঃ
TRISB = 0x5A;
// এখানে “0x” হল MikroC compiler এর Hex কোড নির্দেশক। এটা লিখলে compiler বুঝলে পারে আপনি Hex কোড ইনপুট করেছেন।
TRISB = 90;
//এখানে “৯০” হল Decimal কোড। decimal কোড নির্দেশ করতে কোন compiler এই কোন নির্দেশক লাগে না।
আশা করি সবাই বুঝতে পেরেছেন। তাও যদি কেও কোন কিছু না বুঝে থাকেন তাহলে কমেন্ট করতে পারেন।
আল্লাহ হাফেয।