<style>
body {
font-family: "Vazirmatn", sans-serif;
direction: rtl;
text-align: right;
line-height: 1.8;
}
ul, ol {
direction: rtl;
text-align: right;
list-style-position: inside;
padding-right: 1.5em;
}
li {
margin-bottom: 0.5em;
}
code {
background-color: #f5f5f5;
color: #c7254e;
font-family: "Courier New", monospace;
font-size: 90%;
padding: 0.2em 0.4em;
border-radius: 4px;
direction: ltr;
unicode-bidi: embed;
}
pre {
background-color: #2d2d2d;
color: #f8f8f2;
font-family: "Courier New", monospace;
font-size: 14px;
padding: 1em;
border-radius: 8px;
overflow-x: auto;
direction: ltr;
text-align: left;
line-height: 1.6;
}
pre code {
background: none;
color: inherit;
font-size: inherit;
padding: 0;
}
p, h1, h2, h3, h4, h5, h6, li {
direction: rtl;
unicode-bidi: embed;
}
</style>
بر اساس منابع ارائه شده، خلاصهای از هر آیسی، پینهای اختصاصی و حالتهای عملیاتی آنها به شرح زیر است:
8085A/8085A-2 (Microprocessor)
* خلاصه: بر اساس منابع، 8085 آخرین ریزپردازنده ۸ بیتی توسعه یافته توسط اینتل در سال ۱۹۷۶ است که در سیستمهای توکار و کاربردهای کنترلی مانند کنترلرهای چراغ راهنمایی یا ماشین لباسشویی استفاده میشود. این آیسی با استفاده از تکنولوژی NMOS ساخته شده و حدود ۶۵۰۰ ترانزیستور دارد. با ولتاژ تغذیه ۵+ ولت کار میکند و در فرکانسهای کاری ۳، ۵ یا ۶ مگاهرتز موجود است. دارای گذرگاه داده ۸ بیتی و گذرگاه آدرس ۱۶ بیتی است که امکان دسترسی به ۶۴ کیلوبایت حافظه را فراهم میکند. گذرگاه آدرس/داده آن (AD0-AD7) مالتیپلکس شده است.
* پینهای اختصاصی:
* X1, X2: ورودی نوسانساز کریستالی.
* CLK OUT: خروجی کلاک سیستم.
* TRAP: وقفه غیرقابل پوشش (بالاترین اولویت).
* RST 7.5, RST 6.5, RST 5.5: وقفههای ماسکپذیر سختافزاری.
* INTR: ورودی درخواست وقفه عمومی.
* INTA: خروجی سیگنال تایید وقفه.
* SID: ورودی داده سریال.
* SOD: خروجی داده سریال.
* RD: سیگنال کنترل خواندن (فعال پایین).
* WR: سیگنال کنترل نوشتن (فعال پایین).
* IO/M̅: سیگنال انتخاب عملیات ورودی/خروجی یا حافظه.
* READY: ورودی کنترل وضعیت انتظار.
* ALE: خروجی فعالساز لچ آدرس (برای جداسازی آدرس از داده).
* HOLD: ورودی درخواست نگهداشتن برای دسترسی DMA.
* HLDA: خروجی تایید نگهداشتن برای DMA.
* RESET IN: ورودی فعال پایین برای بازنشانی پردازنده.
* RESET OUT: خروجی نشاندهنده در حال بازنشانی بودن پردازنده.
* S0, S1: سیگنالهای وضعیت برای نشان دادن وضعیت پردازنده (واکشی، خواندن/نوشتن حافظه، خواندن/نوشتن I/O).
* حالتهای عملیاتی: منابع به طور صریح حالتهای عملیاتی مجزایی را نام نمیبرند، اما قابلیتهای عملیاتی آن شامل پردازش دستورالعملهای مختلف (حساب، منطق، انشعاب، پشته و کنترل ماشین)-، مدیریت وقفههای سختافزاری، ارتباط سریال از طریق SID/SOD، و عملیات گذرگاه برای خواندن/نوشتن حافظه و I/O میباشد که توسط سیگنالهای کنترلی و وضعیت مدیریت میشوند. همچنین از وضعیت انتظار (Wait state) با استفاده از پین READY و دسترسی به حافظه از طریق DMA با استفاده از پینهای HOLD/HLDA پشتیبانی میکند.
---
8755A (PROM/I/O)
* خلاصه: بر اساس منابع، 8755 یک آیسی PROM/I/O است که میتواند در سیستمهای مبتنی بر 8085 استفاده شود. این آیسی در کاربردهایی با I/O استاندارد یا حافظه نقشآفرینی شده (Memory Mapped I/O) با ریزپردازنده ارتباط برقرار میکند. قابلیت پاک شدن توسط نور فرابنفش و برنامهریزی مجدد را دارد.
* پینهای اختصاصی: پینهایی برای عملیات برنامهریزی موازی دارد که شامل XA1, XA0, PAGEL, WR, OE, RDY/BSY, BS1, BS2 میشوند. پین DATA (PB7-0) برای گذرگاه داده در حالت برنامهریزی موازی استفاده میشود.
* حالتهای عملیاتی: حالتهای عملیاتی شامل رابط کاربری با 8085 (Standard I/O یا Memory Mapped I/O) و حالت برنامهریزی (شامل چرخه برنامهریزی و چرخه تایید) هستند که در حالت برنامهریزی، عملیات بارگذاری آدرس، بارگذاری داده و بارگذاری فرمان از طریق پینهای اختصاصی مدیریت میشود.
---
8237 (DMA Controller)
خلاصه:
تراشه 8237 یک کنترلر DMA (دسترسی مستقیم به حافظه) با عملکرد بالا است. وظیفه اصلی آن انتقال مستقیم داده بین دستگاههای جانبی و حافظه سیستم بدون نیاز به دخالت CPU است. این تراشه دارای چهار کانال مستقل DMA است که هر کانال قابلیت آدرسدهی 64 کیلوبایت و شمارش کلمه را دارد. همچنین از انتقال حافظه به حافظه و اولیه سازی خودکار نیز پشتیبانی میکند.
پینهای اختصاصی:
پینهای اصلی و اختصاصی برای عملکرد DMA در 8237 شامل DREQ0 تا DREQ3 برای درخواستهای DMA از دستگاههای جانبی و DACK0 تا DACK3 برای تاییدیه DMA به دستگاهها هستند. این پینها کنترل قطبیت مستقل دارند که انعطافپذیری ارتباط را افزایش میدهد.
حالتهای عملیاتی:
8237 از چهار نوع سرویس DMA اصلی پشتیبانی میکند. این حالتها شامل انتقال تک بایتی (Single Byte Transfer Mode)، انتقال بلوک (Block Transfer Mode) تا رسیدن به شمارش پایانی (TC) یا سیگنال EOP، و انتقال درخواستی (Demand Transfer Mode) که تا فعال بودن DREQ یا رسیدن به TC/EOP دادهها را منتقل میکند هستند. همچنین، حالت آبشاری (Cascade Mode) امکان گسترش کانالهای DMA را با اتصال 8237های بیشتر فراهم میکند. انتقال حافظه به حافظه (Memory-to-Memory Transfers) نیز یکی از قابلیتهای آن است.
---
8255A (Programmable Peripheral Interface)
خلاصه:
تراشه 8255A یک رابط جانبی قابل برنامهریزی (PPI) چندمنظوره برای ارتباطات ورودی/خروجی (I/O) در سیستمهای میکروکامپیوتر است. این تراشه دارای 24 پین I/O قابل برنامهریزی است که در قالب سه پورت 8 بیتی (Port A, Port B, Port C) سازماندهی شدهاند. پینهای I/O را میتوان به صورت ورودی یا خروجی و در گروههای مجزا (Group A و Group B) برنامهریزی کرد.
پینهای اختصاصی:
پینهای اختصاصی برای عملیات ورودی/خروجی در 8255A، پینهای PA0-PA7، PB0-PB7 و PC0-PC7 هستند. این پینها به ترتیب مربوط به پورتهای A، B و C میباشند و رابط مستقیم با دستگاههای جانبی را فراهم میکنند. عملکرد آنها (ورودی/خروجی) بسته به حالت برنامهریزی شده تغییر میکند.
حالتهای عملیاتی:
8255A از سه حالت عملیاتی اصلی پشتیبانی میکند که توسط نرمافزار قابل انتخاب هستند. حالت 0 (Mode 0) یا ورودی/خروجی پایه (Basic Input/Output)، سادهترین حالت است که در آن پورتها به عنوان پورتهای ورودی یا خروجی 8 بیتی عمل میکنند. حالت 1 (Mode 1) یا ورودی/خروجی همراه با دستدهی (Strobed Input/Output) برای عملیات I/O که نیاز به سیگنالهای دستدهی دارند استفاده میشود، و پورت C برای سیگنالهای کنترلی استفاده میشود. حالت 2 (Mode 2) یا ورودی/خروجی گذرگاه دوطرفه (Bidirectional Bus I/O) فقط برای پورت A در دسترس است و یک گذرگاه دوطرفه 8 بیتی را فراهم میکند، در حالی که پورت C سیگنالهای دستدهی را ارائه میدهد و پورت B میتواند در حالت 0 یا 1 عمل کند.
---
8259A (Programmable Interrupt Controller)
* خلاصه: بر اساس منابع، 8259A یک کنترلکننده وقفه قابل برنامهریزی است که برای مدیریت تا هشت سطح درخواست وقفه طراحی شده. با اتصال چند آیسی (تا ۸ عدد) میتوان تعداد سطوح وقفه را تا ۶۴ سطح افزایش داد. این آیسی بلادرنگ و وقفه محور بوده و از طریق نرمافزار سیستم به عنوان یک دستگاه I/O برنامهریزی میشود. نیازی به ورودی کلاک ندارد.
* پینهای اختصاصی:
* IR0 تا IR7: ورودیهای درخواست وقفه.
* INT: خروجی سیگنال وقفه به CPU.
* INTA: ورودی سیگنال تایید وقفه از CPU.
* A0: خط آدرس برای انتخاب کلمات دستور یا خواندن وضعیت.
* CAS0 تا CAS2: خطوط آبشاری برای ساختار چند 8259A (استاد/برده).
* SP/EN: پین دو منظوره برای تعیین حالت استاد/برده یا کنترل بافر در حالت بافر شده.
* حالتهای عملیاتی: حالتهای مختلفی قابل برنامهریزی هستند: حالت تودرتوی کامل (Fully nested mode)، حالت اولویت چرخشی (Rotating priority mode)، حالت ماسک ویژه (Special mask mode)، حالت نظرسنجی (Polled mode). همچنین میتوان آن را در حالت وقفه لبهای (Edge Triggered) یا سطحای (Level Triggered) پیکربندی کرد. دارای حالت پایان وقفه خودکار (Automatic End of Interrupt - AEOI) نیز میباشد.
---
8279 (Keyboard/Display Controller)
* خلاصه: بر اساس منابع، 8279 یک کنترلکننده صفحهکلید و نمایشگر است که وظیفه مدیریت ورودی از صفحهکلید یا ماتریس حسگر و کنترل نمایشگرها را بر عهده دارد. دارای بافرهای حذف نویز برای ورودیهای صفحهکلید، حافظه FIFO برای ورودیهای حسگر و حافظه RAM برای نمایشگر است. عملکرد آن از طریق کلمات دستور نرمافزاری قابل تنظیم است.
* پینهای اختصاصی: بر اساس دیاگرام بلوکی، پینهای اختصاصی شامل: خطوط برگشتی (Return Lines - 8 عدد) و خطوط اسکن (Scan Lines - 8 عدد) برای رابط صفحهکلید/حسگر، خطوط داده نمایشگر (Display Data - 8 عدد) و پین BD (Blank Display) برای رابط نمایشگر، و پین INT (Interrupt) برای درخواست وقفه میباشند.
* حالتهای عملیاتی: از طریق کلمات دستور نرمافزاری حالتهای مختلفی قابل برنامهریزی است: حالتهای صفحهکلید/نمایشگر (مانند ۸ یا ۱۶ کاراکتر، ورود از چپ یا راست)، حالتهای اسکن صفحهکلید (رمزگذاری شده، رمزگشایی شده، محدودیت ۲ کلید، N کلید، ماتریس حسگر)، حالت ورودی حسگر (Strobed input) و حالت اسکن نمایشگر حسگر (Strobed display scan).
---
8251 (USART)
خلاصه:
تراشه Intel 8251A یک رابط ارتباطی جهانی همزمان/غیرهمزمان (USART) و استاندارد صنعتی است که به عنوان یک دستگاه جانبی برای خانوادههای مختلف ریزپردازندههای اینتل طراحی شده است. وظیفه اصلی آن تبدیل دادههای موازی دریافت شده از پردازنده مرکزی (CPU) به یک جریان داده سریال برای ارسال و همچنین تبدیل دادههای سریال دریافتی به فرمت موازی برای CPU است. این تراشه توسط CPU برنامهریزی میشود تا تقریباً با هر تکنیک انتقال داده سریالی کار کند و میتواند به پردازنده سیگنال دهد که چه زمانی برای ارسال، کاراکتر جدیدی را میپذیرد یا چه زمانی کاراکتری را برای CPU دریافت کرده است.
پینهای اختصاصی:
این تراشه دارای مجموعهای از پینهای کنترل مودم است که برای سادهسازی ارتباط با مودمها به کار میروند. این پینها شامل `DSR` (آماده بودن مجموعه دادهها)، `DTR` (آماده بودن پایانه داده)، `RTS` (درخواست برای ارسال) و `CTS` (آماده برای ارسال) میباشند. علاوه بر این، پینهای ساعت فرستنده (`TxC`) و گیرنده (`RxC`) برای کنترل نرخ انتقال داده (Baud Rate) در هر دو حالت ضروری هستند. پین `SYNDET/BRKDET` نیز یک پین دو منظوره است که در حالت همزمان برای تشخیص کاراکتر همگامسازی (SYNC) و در حالت غیرهمزمان برای تشخیص وضعیت "Break" (دریافت یک خط غیرفعال طولانی) استفاده میشود.
حالتهای عملیاتی:
8251A در دو حالت اصلی قابل برنامهریزی است: غیرهمزمان (Asynchronous) و همزمان (Synchronous). در حالت غیرهمزمان، هر کاراکتر داده با یک بیت شروع (Start Bit) و یک یا چند بیت توقف (Stop Bits) قاببندی میشود تا گیرنده بتواند ابتدای هر کاراکتر را تشخیص دهد. در این حالت، نرخ کلاک میتواند ۱، ۱۶ یا ۶۴ برابر نرخ باود (Baud Rate) باشد. در مقابل، در حالت همزمان، دادهها به صورت یک بلوک پیوسته و بدون بیتهای شروع/توقف ارسال میشوند. در این حالت، همگامسازی از طریق یک یا دو کاراکتر خاص به نام "SYNC" انجام میشود که دستگاه در حالت "Hunt" (جستجو) به دنبال آنها میگردد تا مرز کاراکترها را پیدا کند و همگامسازی را حفظ نماید.
---
8253 (Programmable Interval Timer)
* خلاصه: بر اساس منابع، 8253 یک زمانسنج/شمارنده قابل برنامهریزی است که توسط 8254 جایگزین شده است. این آیسی دارای سه شمارنده مستقل ۱۶ بیتی است که برای انجام کارهای زمانبندی و شمارش مختلف استفاده میشود. میتواند در حالتهای مختلفی کار کند و در برنامهنویسی به عنوان آرایهای از پورتهای I/O دیده میشود.
* پینهای اختصاصی: بر اساس اطلاعات 8254 (که superset این آیسی است) و ساختار کلی تایمرها، پینهای اختصاصی شامل: A1, A0 (برای انتخاب شمارنده یا کلمه کنترل) و برای هر یک از سه شمارنده: CLKx (ورودی کلاک شمارنده x)، GATEx (ورودی گیت شمارنده x) و OUTx (خروجی شمارنده x).
* حالتهای عملیاتی: دارای شش حالت عملیاتی قابل برنامهریزی است: حالت ۰ (وقفه بر اساس شمارش نهایی)، حالت ۱ (تک پالس با راهاندازی مجدد سختافزاری)، حالت ۲ (تولیدکننده نرخ)، حالت ۳ (تولیدکننده موج مربعی)، حالت ۴ (پالس نرمافزاری قابل راهاندازی) و حالت ۵ (پالس سختافزاری با راهاندازی مجدد).
---
8254 (Programmable Interval Timer)
* خلاصه: بر اساس منابع، 8254 یک زمانسنج/شمارنده قابل برنامهریزی با سه شمارنده مستقل ۱۶ بیتی است. این آیسی superset آیسی 8253 بوده و قابلیتهای بیشتری مانند خواندن وضعیت (Status Read-Back) دارد. برای حل مشکلات زمانبندی در سیستمهای میکروکامپیوتری طراحی شده و میتواند عملکردهای مختلفی مانند ساعت زمان واقعی، شمارنده رویداد، تولیدکننده نرخ و موج مربعی را پیادهسازی کند.
* پینهای اختصاصی:
* A1, A0: ورودیهای آدرس برای انتخاب یکی از سه شمارنده یا رجیستر کلمه کنترل.
* CLK0, GATE0, OUT0: کلاک، گیت و خروجی شمارنده ۰.
* CLK1, GATE1, OUT1: کلاک، گیت و خروجی شمارنده ۱.
* CLK2, GATE2, OUT2: کلاک، گیت و خروجی شمارنده ۲.
* حالتهای عملیاتی: دارای شش حالت عملیاتی قابل برنامهریزی است: حالت ۰ (Interrupt on Terminal Count)، حالت ۱ (Hardware Retriggerable One-Shot)، حالت ۲ (Rate Generator)، حالت ۳ (Square Wave Generator)، حالت ۴ (Software Triggered Strobe)، حالت ۵ (Hardware Triggered Strobe - Retriggerable).
---
ATmega32A (Microcontroller)
* خلاصه: بر اساس منابع، ATmega32A یک میکروکنترلر ۸ بیتی CMOS با کارایی بالا و توان پایین از خانواده AVR با معماری RISC پیشرفته است. دارای ۳۲ کیلوبایت حافظه فلش قابل برنامهریزی، ۱۰۲۴ بایت EEPROM و ۲ کیلوبایت SRAM داخلی است. این آیسی شامل ۳۲ خط I/O عمومی، سه زمانسنج/شمارنده، رابط JTAG، USART، TWI، SPI، مبدل آنالوگ به دیجیتال (ADC) ۸ کاناله ۱۰ بیتی، مقایسهکننده آنالوگ و تایمر Watchdog میباشد.
* پینهای اختصاصی: این میکروکنترلر دارای پینهای چندمنظوره است که علاوه بر I/O عمومی (پورتهای A, B, C, D) برای عملکردهای اختصاصی peripherals نیز استفاده میشوند. پینهای اختصاصی شامل:
* XTAL1, XTAL2: ورودی/خروجی نوسانساز اصلی.
* RESET: ورودی بازنشانی.
* AVCC: تغذیه پورت A و ADC.
* AREF: پین مرجع ولتاژ برای ADC.
* PA0-PA7: ورودیهای آنالوگ ADC (روی پورت A).
* PB0 (T0/XCK), PB1 (T1), PB2 (INT2/AIN0), PB3 (OC0/AIN1): پینهای تایمر/شمارنده، وقفه خارجی و مقایسهکننده آنالوگ (روی پورت B).
* PB4 (SS), PB5 (MOSI), PB6 (MISO), PB7 (SCK): پینهای رابط SPI (روی پورت B).
* PC0 (SCL), PC1 (SDA): پینهای رابط TWI (روی پورت C).
* PC2 (TCK), PC3 (TMS), PC4 (TDO), PC5 (TDI): پینهای رابط JTAG (روی پورت C).
* PC6 (TOSC1), PC7 (TOSC2): پینهای نوسانساز تایمر (برای تایمر ۲ نامتقارن) (روی پورت C).
* PD0 (RXD), PD1 (TXD): پینهای رابط USART (روی پورت D).
* PD2 (INT0), PD3 (INT1): پینهای وقفه خارجی (روی پورت D).
* PD4 (OC1B), PD5 (OC1A), PD6 (ICP1), PD7 (OC2): پینهای تایمر/شمارندهها (روی پورت D).
* حالتهای عملیاتی: دارای حالتهای عملیاتی متنوعی برای صرفهجویی در مصرف انرژی است: Idle, ADC Noise Reduction, Power-down, Power-save, Standby و Extended Standby. تایمر/شمارندهها دارای حالتهای Normal, CTC (Clear Timer on Compare Match), Fast PWM, Phase Correct PWM, Phase and Frequency Correct PWM هستند. USART دارای حالتهای آسنکرون (سرعت معمولی و دو برابر) و سنکرون (استاد/برده) است. TWI در حالتهای استاد ارسالکننده/دریافتکننده و برده ارسالکننده/دریافتکننده عمل میکند. ADC میتواند در حالتهای Single Conversion, Free Running و Auto Triggering (بر اساس رویدادهای مختلف) کار کند. SPI میتواند در حالت استاد یا برده پیکربندی شود. JTAG برای Boundary-scan**، **برنامهریزی و اشکالزدایی داخلی (On-chip Debug) استفاده میشود.
---
---
---
بسیار خوب. بر اساس اطلاعات موجود در منابع ارائه شده، در اینجا تعاریف جامع پینهای مشترک و رجیسترهای مهم مشترک در میکروپروسسور 8085 و تراشههای جانبی 8254، 8259A، 8279 و همچنین میکروکنترلر ATmega32A آورده شده است:
پینهای مشترک
* گذرگاه داده (Data Bus): این یک گذرگاه دوطرفه 8 بیتی است که برای انتقال داده بین CPU و حافظه یا دستگاههای ورودی/خروجی (I/O) استفاده میشود.
* در 8085، این گذرگاه 8 بیت داده را حمل میکند (D0–D7). 8085 از یک گذرگاه آدرس/داده مالتیپلکس برای بهینهسازی تعداد پینها استفاده میکند.
* در 8254، گذرگاه داده یک بافر 8 بیتی سهحالته و دوطرفه است که برای واسط بین 8254 و گذرگاه سیستم استفاده میشود.
* در 8259A، گذرگاه داده (D7–D0) یک گذرگاه دوطرفه 8 بیتی است که اطلاعات کنترل، وضعیت و وکتور وقفه از طریق آن منتقل میشود. یک بافر گذرگاه داده سهحالته و دوطرفه برای واسط 8259A به گذرگاه داده سیستم استفاده میشود.
* در 8279، گذرگاه داده (DB0-7) یک واسط 8 بیتی به سیستم پردازنده است.
* در ATmega32A، پینهای پورتها (مثلاً Port A (PA7:PA0) تا Port D (PD7:PD0)) به عنوان خطوط ورودی/خروجی دوطرفه عمل میکنند و به گذرگاه داده داخلی متصل هستند،،،.
* خطوط آدرس (Address Lines): این خطوط برای آدرسدهی حافظه و دستگاههای ورودی/خروجی استفاده میشوند.
* 8085 دارای یک گذرگاه آدرس 16 بیتی (A0–A15) برای آدرسدهی حافظه و I/O است.
* در 8254، پینهای A1 و A0 یکی از سه شمارنده یا رجیستر کلمه کنترل را برای خواندن/نوشتن انتخاب میکنند،.
* در 8259A، پین A0 در ترکیب با CS، WR و RD برای شناسایی کلمات فرمان مختلفی که CPU مینویسد و وضعیتی که CPU میخواهد بخواند، استفاده میشود. این پین معمولاً به خط آدرس A0 CPU متصل میشود.
* در 8279، خطوط آدرس (A0) بخشی از واسط با سیستم پردازنده است.
* در ATmega32A، رجیسترهای ورودی/خروجی (I/O Registers) در فضای I/O با آدرسهایی قرار دارند که توسط دستورالعملهای IN و OUT قابل دسترسی هستند.
* انتخاب تراشه (CS - Chip Select): این پین معمولاً یک ورودی است که برای انتخاب یک تراشه جانبی خاص توسط CPU استفاده میشود. وقتی این پین فعال (معمولاً در سطح پایین) باشد، تراشه به دستورالعملهای CPU روی گذرگاه پاسخ میدهد.
* در 8254، سطح پایین روی پین CS، RD و WR را فعال میکند؛ RD و WR نادیده گرفته میشوند مگر اینکه 8254 با پایین نگه داشتن CS انتخاب شده باشد.
* در 8259A، سطح پایین روی پین CS، ارتباط RD و WR بین CPU و 8259A را فعال میکند. عملکردهای INTA مستقل از CS هستند.
* در 8279، پین CS بخشی از واسط کنترل با سیستم پردازنده است.
* خواندن (RD - Read): این پین یک ورودی کنترلی است که توسط CPU برای نشان دادن عملیات خواندن از یک دستگاه جانبی استفاده میشود.
* در 8254، سطح پایین روی ورودی RD به 8254 میگوید که CPU در حال خواندن یکی از شمارندهها است. RD توسط CS واجد شرایط میشود.
* در 8259A، سطح پایین روی پین RD زمانی که CS پایین است، 8259A را قادر میسازد وضعیت را روی گذرگاه داده برای CPU منتشر کند.
* در 8279، پین RD بخشی از واسط کنترل با سیستم پردازنده است.
* نوشتن (WR - Write): این پین یک ورودی کنترلی است که توسط CPU برای نشان دادن عملیات نوشتن در یک دستگاه جانبی استفاده میشود.
* در 8254، سطح پایین روی ورودی WR به 8254 میگوید که CPU در حال نوشتن یک کلمه کنترل یا یک مقدار اولیه شمارش است. WR توسط CS واجد شرایط میشود.
* در 8259A، سطح پایین روی پین WR زمانی که CS پایین است، 8259A را قادر میسازد کلمات فرمان را از CPU بپذیرد.
* در 8279، پین WR بخشی از واسط کنترل با سیستم پردازنده است.
* وقفه (INT - Interrupt): این پین معمولاً یک سیگنال خروجی از دستگاه جانبی یا ورودی به CPU است که نشاندهنده نیاز به توجه فوری است.
* در 8085، رسیدگی به وقفه توسط سیگنال Interrupt Acknowledge (INTA̅) تأیید میشود.
* در 8259A، پین INT یک خروجی است که هرگاه یک درخواست وقفه معتبر تأیید شود، بالا میرود. این پین برای ایجاد وقفه در CPU استفاده میشود، بنابراین به پین وقفه CPU متصل میشود. در حالت Poll Mode، خروجی INT همانطور که معمولاً عمل میکند.
* در 8279، پین INT به سیستم پردازنده 8 بیتی متصل است.
* ATmega32A دارای منابع وقفه داخلی و خارجی است و پینهای خاصی مانند PD2 (INT0) و PD3 (INT1) برای وقفههای خارجی استفاده میشوند،،،.
* تأیید وقفه (INTA - Interrupt Acknowledge): این پین یک سیگنال کنترلی است که توسط CPU برای تأیید دریافت یک درخواست وقفه و اغلب برای دریافت اطلاعات وکتور وقفه از دستگاه جانبی استفاده میشود.
* سیگنال Interrupt Acknowledge (INTA̅) در 8085 رسیدگی به وقفه را تأیید میکند.
* در 8259A، پین INTA برای فعال کردن انتشار اطلاعات وکتور وقفه 8259A بر روی گذرگاه داده توسط دنبالهای از پالسهای تأیید وقفه صادر شده توسط CPU استفاده میشود،. دنباله وقفه 8259A توسط سه پالس INTA زمانبندی میشود.
---
---
---
**انواع رجیسترها در آیسیهای مختلف:**
1. **Intel 8253 (Programmable Interval Timer):**
* **رجیستر کلمه کنترل (Control Word Register):** این رجیستر برای برنامهریزی حالتهای عملکردی (modes) آیسی 8253، انتخاب شمارنده مورد نظر (Counter #0, #1, #2) و تعریف عملیات خواندن/نوشتن استفاده میشود. این رجیستر فقط قابل نوشتن است.
* **شمارندهها (Counters):** آیسی 8253 دارای سه شمارنده مستقل 16-بیتی (Counter #0, #1, #2) است. هر شمارنده شامل یک شمارنده نزولی 16-بیتی داخلی (Counting Element - CE) و دو لچ 8-بیتی برای خروجی (Output Latch - OL) و دو رجیستر شمارش (Count Register - CR) است. محتوای CE مستقیماً قابل خواندن یا نوشتن نیست؛ عملیات خواندن از OL و نوشتن در CR انجام میشود.
* **بافر گذرگاه داده (Data Bus Buffer):** یک بافر سهحالته و دوطرفه 8-بیتی که واسط بین 8253 و گذرگاه داده سیستم (CPU) است. وظایف اصلی آن شامل برنامهریزی حالتها، بارگذاری مقادیر شمارش و خواندن مقادیر شمارش است.
* **منطق خواندن/نوشتن (Read/Write Logic):** مسئول دریافت ورودیها از گذرگاه سیستم و تولید سیگنالهای کنترل برای سایر بلوکهای عملکردی 8253 است.
2. **Intel 8254 (Programmable Interval Timer):**
* آیسی 8254 یک سوپرسِت از 8253 است و بسیاری از ویژگیهای آن را بهبود میبخشد.
* **رجیستر کلمه کنترل (Control Word Register):** همانند 8253، برای برنامهریزی عملیات شمارندهها استفاده میشود و فقط قابل نوشتن است.
* **شمارندهها (Counters):** دارای سه شمارنده مستقل 16-بیتی (Counter 0, 1, 2) هستند. هر شمارنده شامل یک شمارنده نزولی (CE)، لچهای خروجی (OL) و رجیسترهای شمارش (CR) مشابه 8253 است. خواندن از OL و نوشتن به CR صورت میگیرد.
* **رجیستر وضعیت (Status Register):** با استفاده از دستور Read-Back Command، میتوان وضعیت جاری شمارنده، از جمله محتوای رجیستر کلمه کنترل برنامهریزی شده، وضعیت پین خروجی (OUT) و پرچم Null Count را خواند. این یک قابلیت اضافی نسبت به 8253 است.
* **بافر گذرگاه داده (Data Bus Buffer) و منطق خواندن/نوشتن (Read/Write Logic):** وظایف و ساختار مشابهی با 8253 دارند.
3. **Atmel ATmega32A (Microcontroller):**
* این یک میکروکنترلر کامل است و ساختار رجیستری پیچیدهتری دارد.
* **32 رجیستر کاری عمومی 8-بیتی (General Purpose Working Registers):** مستقیماً به واحد منطق-حساب (ALU) متصل هستند و امکان اجرای دستورات در یک سیکل ساعت را میدهند.
* **شمارنده برنامه (Program Counter):** نشانگر آدرس دستورالعمل بعدی برای اجرا.
* **رجیستر دستورالعمل (Instruction Register):** نگهداری دستورالعمل در حال اجرا.
* **رجیستر وضعیت (Status Register):** شامل پرچمهای وضعیت CPU و نتایج عملیاتهای منطق-حساب.
* **اشارهگر پشته (Stack Pointer):** برای مدیریت پشته.
* **حافظه فلش (Flash Program Memory):** 32 کیلوبایت حافظه برنامهریزیپذیر داخلی سیستم (ISP) با قابلیت Read-While-Write.
* **EEPROM:** 1024 بایت حافظه غیرفرار.
* **SRAM داخلی (Internal SRAM):** 2 کیلوبایت حافظه دسترسی تصادفی استاتیک.
* **تایمر/شمارندهها (Timer/Counters):** دو تایمر/شمارنده 8-بیتی و یک تایمر/شمارنده 16-بیتی، و یک Real Time Counter که هر کدام دارای رجیسترهای داخلی برای پیکربندی (مانند prescalers، compare modes، capture mode) هستند.
* **رجیسترهای پورت ورودی/خروجی (I/O Port Registers):** پورتهای A, B, C, D که به عنوان خطوط I/O دوطرفه عمل میکنند و دارای رجیسترهای مربوط به خود برای تنظیم pull-up resistors و عملکردهای خاص هستند.
* **Fuses و Lock Bits:** برای تنظیمات پیکربندی دائمی و امنیت نرمافزار.
4. **Intel 8237/8237-2 (High Performance Programmable DMA Controller):**
* **رجیسترهای آدرس جاری (Current Address Registers):** چهار رجیستر 16-بیتی که آدرس حافظه برای انتقال DMA را نگه میدارند و به صورت خودکار در طول انتقال افزایش یا کاهش مییابند.
* **رجیسترهای آدرس پایه (Base Address Registers):** چهار رجیستر 16-بیتی که آدرس اصلی اولیه را ذخیره میکنند و پس از یک عملیات پایان انتقال (EOP) دوباره مقداردهی اولیه میشوند.
* **رجیسترهای شمارش کلمه جاری (Current Word Count Registers):** چهار رجیستر 16-بیتی که تعداد بایتهای باقیمانده برای انتقال را ذخیره میکنند و در طول انتقال کاهش مییابند.
* **رجیسترهای شمارش کلمه پایه (Base Word Count Registers):** چهار رجیستر 16-بیتی که تعداد بایتهای اصلی را ذخیره میکنند و پس از EOP دوباره مقداردهی اولیه میشوند.
* **رجیستر فرمان (Command Register):** یک رجیستر 8-بیتی برای برنامهریزی عملکرد 8237، فعال/غیرفعال کردن کانالها و تنظیم حالتها.
* **رجیستر حالت (Mode Register):** یک رجیستر 6-بیتی برای برنامهریزی حالت عملکردی هر کانال.
* **رجیستر درخواست (Request Register):** یک رجیستر 4-بیتی برای ایجاد درخواستهای DMA توسط نرمافزار.
* **رجیستر ماسک (Mask Register):** یک رجیستر 4-بیتی برای فعال/غیرفعال کردن درخواستهای DMA کانالهای جداگانه.
* **رجیستر موقت (Temporary Register):** یک رجیستر 8-بیتی که در طول انتقالهای حافظه به حافظه، دادهها را به طور موقت ذخیره میکند.
* **رجیستر وضعیت (Status Register):** یک رجیستر 8-بیتی که وضعیت 8237 را منعکس میکند، از جمله پایان شمارش و وضعیت درخواست DMA.
5. **Intel 8255A/8255A-5 (Programmable Peripheral Interface - PPI):**
* **رجیستر کلمه کنترل (Control Word Register):** برای برنامهریزی حالتهای عملکردی (Mode 0, 1, 2) و پیکربندی ورودی/خروجی (input/output) پورتهای A, B, C استفاده میشود. این رجیستر فقط قابل نوشتن است.
* **پورتها (Ports A, B, C):** اینها بافرهای/لچهای ورودی/خروجی 8-بیتی هستند. پورت C میتواند به دو پورت 4-بیتی (بالا و پایین) تقسیم شود و برای سیگنالهای کنترل استفاده گردد.
* **گروه A و گروه B کنترلها (Group A and Group B Controls):** مسئول دریافت "کلمات کنترل" از گذرگاه داده داخلی و صدور دستورات مربوطه به پورتهای مرتبط خود هستند.
* **بافر گذرگاه داده (Data Bus Buffer) و منطق خواندن/نوشتن (Read/Write Logic):** وظایف مشابهی با سایر آیسیهای جانبی دارند.
6. **Intel 8251A (Programmable Communication Interface - USART):**
* **رجیستر کنترل/حالت (Control/Mode Register):** برای برنامهریزی حالتهای عملیاتی 8251A استفاده میشود.
* **رجیستر فرمان (Command Register):** برای صدور دستورات به 8251A استفاده میشود.
* **رجیستر وضعیت (Status Register):** برای خواندن وضعیت 8251A استفاده میشود، از جمله وضعیت ارسال/دریافت، خطاها و غیره.
* **بافرهای داده (Transmit Buffer, Receive Buffer):** بافرهایی برای نگهداری دادههای ارسالی و دریافتی.
---
**رجیسترهای مشترک بین این آیسیها:**
با بررسی منابع، میتوان به موارد مشترک زیر اشاره کرد:
* **رجیستر/کلمه کنترل (Control Register/Word):**
* این یک مفهوم کلیدی و مشترک در 8253، 8254 و 8255A است. این رجیسترها به CPU اجازه میدهند تا حالتهای عملکردی و پیکربندی داخلی این آیسیهای جانبی را برنامهریزی کنند. حتی در 8251A نیز رجیسترهای "کنترل/حالت" و "فرمان" وجود دارند که همین وظیفه را بر عهده دارند.
* اگرچه ATmega32A یک میکروکنترلر است و نه یک آیسی جانبی به مفهوم سنتی، اما شامل رجیسترهای پیکربندی و کنترل متعددی برای تنظیم عملکردهای واحدهای جانبی خود (مانند تایمرها، USART، SPI) است که هدف مشابهی را دنبال میکنند.
* **بافر گذرگاه داده (Data Bus Buffer):**
* این جزء **مشترک و ضروری** در تمام آیسیهای جانبی (8253, 8254, 8237, 8255A, 8251A) است. وظیفه اصلی آن فراهم آوردن یک رابط دوطرفه 8-بیتی برای تبادل داده بین آیسی و گذرگاه داده سیستم (CPU) است.
* **منطق خواندن/نوشتن (Read/Write Logic):**
* این بلوک منطقی نیز در تمامی آیسیهای جانبی (8253, 8254, 8237, 8255A, 8251A) برای مدیریت جریان داده و سیگنالهای کنترل (مانند RD و WR) در طول عملیات خواندن و نوشتن از رجیسترهای داخلی آیسی وجود دارد.
* **رجیسترهای شمارنده (Counter Registers):**
* رجیسترهای شمارنده به صورت ذاتی در آیسیهای تایمر/شمارنده اختصاصی مانند 8253 و 8254 وجود دارند.
* ATmega32A نیز به عنوان یک میکروکنترلر، دارای چندین واحد تایمر/شمارنده داخلی است که خود شامل رجیسترهای شمارنده برای انجام عملیات شمارش و تولید پالس هستند.
* **رجیسترهای وضعیت (Status Registers):**
* این رجیسترها در 8254، 8237 و 8251A یافت میشوند. آنها اطلاعاتی در مورد وضعیت جاری عملکرد آیسی، مانند اتمام عملیات، پرچمهای خطا، یا وضعیت پینهای خروجی را ارائه میدهند.
* ATmega32A نیز یک رجیستر وضعیت کلی (Status Register) برای CPU خود و رجیسترهای وضعیت برای برخی از واحدهای جانبی دارد.
به طور خلاصه، در حالی که هر آیسی عملکرد تخصصی خود را دارد و شامل رجیسترهای خاص خود میشود، مفاهیم **کنترل، بافر داده، منطق خواندن/نوشتن و وضعیت** از طریق رجیسترهای متناظر در اکثر این آیسیهای جانبی اینتل مشترک هستند و این امر تعامل و برنامهریزی آنها توسط CPU را تسهیل میکند.